graphviz 2999.12.0.4 → 2999.13.0.0
raw patch · 52 files changed
+6625/−5227 lines, 52 filesdep +criteriondep +deepseqdep +graphvizdep −extensible-exceptionsdep ~basedep ~bytestringdep ~colourPVP ok
version bump matches the API change (PVP)
Dependencies added: criterion, deepseq, graphviz
Dependencies removed: extensible-exceptions
Dependency ranges changed: base, bytestring, colour, dlist, fgl, polyparse, transformers
API changes (from Hackage documentation)
- Data.GraphViz.Attributes: instance Labellable HtmlLabel
- Data.GraphViz.Attributes: instance Labellable HtmlTable
- Data.GraphViz.Attributes: instance Labellable HtmlText
- Data.GraphViz.Attributes.Colors: Accent :: BrewerName
- Data.GraphViz.Attributes.Colors: AliceBlue :: X11Color
- Data.GraphViz.Attributes.Colors: AntiqueWhite :: X11Color
- Data.GraphViz.Attributes.Colors: AntiqueWhite1 :: X11Color
- Data.GraphViz.Attributes.Colors: AntiqueWhite2 :: X11Color
- Data.GraphViz.Attributes.Colors: AntiqueWhite3 :: X11Color
- Data.GraphViz.Attributes.Colors: AntiqueWhite4 :: X11Color
- Data.GraphViz.Attributes.Colors: Aquamarine :: X11Color
- Data.GraphViz.Attributes.Colors: Aquamarine1 :: X11Color
- Data.GraphViz.Attributes.Colors: Aquamarine2 :: X11Color
- Data.GraphViz.Attributes.Colors: Aquamarine3 :: X11Color
- Data.GraphViz.Attributes.Colors: Aquamarine4 :: X11Color
- Data.GraphViz.Attributes.Colors: Azure :: X11Color
- Data.GraphViz.Attributes.Colors: Azure1 :: X11Color
- Data.GraphViz.Attributes.Colors: Azure2 :: X11Color
- Data.GraphViz.Attributes.Colors: Azure3 :: X11Color
- Data.GraphViz.Attributes.Colors: Azure4 :: X11Color
- Data.GraphViz.Attributes.Colors: BScheme :: BrewerName -> Word8 -> BrewerScheme
- Data.GraphViz.Attributes.Colors: Beige :: X11Color
- Data.GraphViz.Attributes.Colors: Bisque :: X11Color
- Data.GraphViz.Attributes.Colors: Bisque1 :: X11Color
- Data.GraphViz.Attributes.Colors: Bisque2 :: X11Color
- Data.GraphViz.Attributes.Colors: Bisque3 :: X11Color
- Data.GraphViz.Attributes.Colors: Bisque4 :: X11Color
- Data.GraphViz.Attributes.Colors: Black :: X11Color
- Data.GraphViz.Attributes.Colors: BlanchedAlmond :: X11Color
- Data.GraphViz.Attributes.Colors: Blue :: X11Color
- Data.GraphViz.Attributes.Colors: Blue1 :: X11Color
- Data.GraphViz.Attributes.Colors: Blue2 :: X11Color
- Data.GraphViz.Attributes.Colors: Blue3 :: X11Color
- Data.GraphViz.Attributes.Colors: Blue4 :: X11Color
- Data.GraphViz.Attributes.Colors: BlueViolet :: X11Color
- Data.GraphViz.Attributes.Colors: Blues :: BrewerName
- Data.GraphViz.Attributes.Colors: Brbg :: BrewerName
- Data.GraphViz.Attributes.Colors: Brown :: X11Color
- Data.GraphViz.Attributes.Colors: Brown1 :: X11Color
- Data.GraphViz.Attributes.Colors: Brown2 :: X11Color
- Data.GraphViz.Attributes.Colors: Brown3 :: X11Color
- Data.GraphViz.Attributes.Colors: Brown4 :: X11Color
- Data.GraphViz.Attributes.Colors: Bugn :: BrewerName
- Data.GraphViz.Attributes.Colors: Bupu :: BrewerName
- Data.GraphViz.Attributes.Colors: Burlywood :: X11Color
- Data.GraphViz.Attributes.Colors: Burlywood1 :: X11Color
- Data.GraphViz.Attributes.Colors: Burlywood2 :: X11Color
- Data.GraphViz.Attributes.Colors: Burlywood3 :: X11Color
- Data.GraphViz.Attributes.Colors: Burlywood4 :: X11Color
- Data.GraphViz.Attributes.Colors: CadetBlue :: X11Color
- Data.GraphViz.Attributes.Colors: CadetBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: CadetBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: CadetBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: CadetBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: Chartreuse :: X11Color
- Data.GraphViz.Attributes.Colors: Chartreuse1 :: X11Color
- Data.GraphViz.Attributes.Colors: Chartreuse2 :: X11Color
- Data.GraphViz.Attributes.Colors: Chartreuse3 :: X11Color
- Data.GraphViz.Attributes.Colors: Chartreuse4 :: X11Color
- Data.GraphViz.Attributes.Colors: Chocolate :: X11Color
- Data.GraphViz.Attributes.Colors: Chocolate1 :: X11Color
- Data.GraphViz.Attributes.Colors: Chocolate2 :: X11Color
- Data.GraphViz.Attributes.Colors: Chocolate3 :: X11Color
- Data.GraphViz.Attributes.Colors: Chocolate4 :: X11Color
- Data.GraphViz.Attributes.Colors: Coral :: X11Color
- Data.GraphViz.Attributes.Colors: Coral1 :: X11Color
- Data.GraphViz.Attributes.Colors: Coral2 :: X11Color
- Data.GraphViz.Attributes.Colors: Coral3 :: X11Color
- Data.GraphViz.Attributes.Colors: Coral4 :: X11Color
- Data.GraphViz.Attributes.Colors: CornFlowerBlue :: X11Color
- Data.GraphViz.Attributes.Colors: CornSilk :: X11Color
- Data.GraphViz.Attributes.Colors: CornSilk1 :: X11Color
- Data.GraphViz.Attributes.Colors: CornSilk2 :: X11Color
- Data.GraphViz.Attributes.Colors: CornSilk3 :: X11Color
- Data.GraphViz.Attributes.Colors: CornSilk4 :: X11Color
- Data.GraphViz.Attributes.Colors: Crimson :: X11Color
- Data.GraphViz.Attributes.Colors: Cyan :: X11Color
- Data.GraphViz.Attributes.Colors: Cyan1 :: X11Color
- Data.GraphViz.Attributes.Colors: Cyan2 :: X11Color
- Data.GraphViz.Attributes.Colors: Cyan3 :: X11Color
- Data.GraphViz.Attributes.Colors: Cyan4 :: X11Color
- Data.GraphViz.Attributes.Colors: Dark2 :: BrewerName
- Data.GraphViz.Attributes.Colors: DarkGoldenrod :: X11Color
- Data.GraphViz.Attributes.Colors: DarkGoldenrod1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkGoldenrod2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkGoldenrod3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkGoldenrod4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkGreen :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOliveGreen :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOliveGreen1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOliveGreen2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOliveGreen3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOliveGreen4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrange :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrange1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrange2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrange3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrange4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrchid :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrchid1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrchid2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrchid3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkOrchid4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSalmon :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSeaGreen :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSeaGreen1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSeaGreen2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSeaGreen3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSeaGreen4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateBlue :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateGray :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateGray1 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateGray2 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateGray3 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkSlateGray4 :: X11Color
- Data.GraphViz.Attributes.Colors: DarkTurquoise :: X11Color
- Data.GraphViz.Attributes.Colors: DarkViolet :: X11Color
- Data.GraphViz.Attributes.Colors: Darkkhaki :: X11Color
- Data.GraphViz.Attributes.Colors: DeepPink :: X11Color
- Data.GraphViz.Attributes.Colors: DeepPink1 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepPink2 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepPink3 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepPink4 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepSkyBlue :: X11Color
- Data.GraphViz.Attributes.Colors: DeepSkyBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepSkyBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepSkyBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: DeepSkyBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: DimGray :: X11Color
- Data.GraphViz.Attributes.Colors: DodgerBlue :: X11Color
- Data.GraphViz.Attributes.Colors: DodgerBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: DodgerBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: DodgerBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: DodgerBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: Firebrick :: X11Color
- Data.GraphViz.Attributes.Colors: Firebrick1 :: X11Color
- Data.GraphViz.Attributes.Colors: Firebrick2 :: X11Color
- Data.GraphViz.Attributes.Colors: Firebrick3 :: X11Color
- Data.GraphViz.Attributes.Colors: Firebrick4 :: X11Color
- Data.GraphViz.Attributes.Colors: FloralWhite :: X11Color
- Data.GraphViz.Attributes.Colors: ForestGreen :: X11Color
- Data.GraphViz.Attributes.Colors: Gainsboro :: X11Color
- Data.GraphViz.Attributes.Colors: GhostWhite :: X11Color
- Data.GraphViz.Attributes.Colors: Gnbu :: BrewerName
- Data.GraphViz.Attributes.Colors: Gold :: X11Color
- Data.GraphViz.Attributes.Colors: Gold1 :: X11Color
- Data.GraphViz.Attributes.Colors: Gold2 :: X11Color
- Data.GraphViz.Attributes.Colors: Gold3 :: X11Color
- Data.GraphViz.Attributes.Colors: Gold4 :: X11Color
- Data.GraphViz.Attributes.Colors: Goldenrod :: X11Color
- Data.GraphViz.Attributes.Colors: Goldenrod1 :: X11Color
- Data.GraphViz.Attributes.Colors: Goldenrod2 :: X11Color
- Data.GraphViz.Attributes.Colors: Goldenrod3 :: X11Color
- Data.GraphViz.Attributes.Colors: Goldenrod4 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray :: X11Color
- Data.GraphViz.Attributes.Colors: Gray0 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray1 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray10 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray100 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray11 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray12 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray13 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray14 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray15 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray16 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray17 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray18 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray19 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray2 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray20 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray21 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray22 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray23 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray24 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray25 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray26 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray27 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray28 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray29 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray3 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray30 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray31 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray32 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray33 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray34 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray35 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray36 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray37 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray38 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray39 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray4 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray40 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray41 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray42 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray43 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray44 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray45 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray46 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray47 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray48 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray49 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray5 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray50 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray51 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray52 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray53 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray54 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray55 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray56 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray57 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray58 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray59 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray6 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray60 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray61 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray62 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray63 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray64 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray65 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray66 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray67 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray68 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray69 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray7 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray70 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray71 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray72 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray73 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray74 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray75 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray76 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray77 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray78 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray79 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray8 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray80 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray81 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray82 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray83 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray84 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray85 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray86 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray87 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray88 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray89 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray9 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray90 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray91 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray92 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray93 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray94 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray95 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray96 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray97 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray98 :: X11Color
- Data.GraphViz.Attributes.Colors: Gray99 :: X11Color
- Data.GraphViz.Attributes.Colors: Green :: X11Color
- Data.GraphViz.Attributes.Colors: Green1 :: X11Color
- Data.GraphViz.Attributes.Colors: Green2 :: X11Color
- Data.GraphViz.Attributes.Colors: Green3 :: X11Color
- Data.GraphViz.Attributes.Colors: Green4 :: X11Color
- Data.GraphViz.Attributes.Colors: GreenYellow :: X11Color
- Data.GraphViz.Attributes.Colors: Greens :: BrewerName
- Data.GraphViz.Attributes.Colors: Greys :: BrewerName
- Data.GraphViz.Attributes.Colors: HoneyDew :: X11Color
- Data.GraphViz.Attributes.Colors: HoneyDew1 :: X11Color
- Data.GraphViz.Attributes.Colors: HoneyDew2 :: X11Color
- Data.GraphViz.Attributes.Colors: HoneyDew3 :: X11Color
- Data.GraphViz.Attributes.Colors: HoneyDew4 :: X11Color
- Data.GraphViz.Attributes.Colors: HotPink :: X11Color
- Data.GraphViz.Attributes.Colors: HotPink1 :: X11Color
- Data.GraphViz.Attributes.Colors: HotPink2 :: X11Color
- Data.GraphViz.Attributes.Colors: HotPink3 :: X11Color
- Data.GraphViz.Attributes.Colors: HotPink4 :: X11Color
- Data.GraphViz.Attributes.Colors: IndianRed :: X11Color
- Data.GraphViz.Attributes.Colors: IndianRed1 :: X11Color
- Data.GraphViz.Attributes.Colors: IndianRed2 :: X11Color
- Data.GraphViz.Attributes.Colors: IndianRed3 :: X11Color
- Data.GraphViz.Attributes.Colors: IndianRed4 :: X11Color
- Data.GraphViz.Attributes.Colors: Indigo :: X11Color
- Data.GraphViz.Attributes.Colors: Ivory :: X11Color
- Data.GraphViz.Attributes.Colors: Ivory1 :: X11Color
- Data.GraphViz.Attributes.Colors: Ivory2 :: X11Color
- Data.GraphViz.Attributes.Colors: Ivory3 :: X11Color
- Data.GraphViz.Attributes.Colors: Ivory4 :: X11Color
- Data.GraphViz.Attributes.Colors: Khaki :: X11Color
- Data.GraphViz.Attributes.Colors: Khaki1 :: X11Color
- Data.GraphViz.Attributes.Colors: Khaki2 :: X11Color
- Data.GraphViz.Attributes.Colors: Khaki3 :: X11Color
- Data.GraphViz.Attributes.Colors: Khaki4 :: X11Color
- Data.GraphViz.Attributes.Colors: Lavender :: X11Color
- Data.GraphViz.Attributes.Colors: LavenderBlush :: X11Color
- Data.GraphViz.Attributes.Colors: LavenderBlush1 :: X11Color
- Data.GraphViz.Attributes.Colors: LavenderBlush2 :: X11Color
- Data.GraphViz.Attributes.Colors: LavenderBlush3 :: X11Color
- Data.GraphViz.Attributes.Colors: LavenderBlush4 :: X11Color
- Data.GraphViz.Attributes.Colors: LawnGreen :: X11Color
- Data.GraphViz.Attributes.Colors: LemonChiffon :: X11Color
- Data.GraphViz.Attributes.Colors: LemonChiffon1 :: X11Color
- Data.GraphViz.Attributes.Colors: LemonChiffon2 :: X11Color
- Data.GraphViz.Attributes.Colors: LemonChiffon3 :: X11Color
- Data.GraphViz.Attributes.Colors: LemonChiffon4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightBlue :: X11Color
- Data.GraphViz.Attributes.Colors: LightBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightCoral :: X11Color
- Data.GraphViz.Attributes.Colors: LightCyan :: X11Color
- Data.GraphViz.Attributes.Colors: LightCyan1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightCyan2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightCyan3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightCyan4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrod :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrod1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrod2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrod3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrod4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightGoldenrodYellow :: X11Color
- Data.GraphViz.Attributes.Colors: LightGray :: X11Color
- Data.GraphViz.Attributes.Colors: LightPink :: X11Color
- Data.GraphViz.Attributes.Colors: LightPink1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightPink2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightPink3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightPink4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSalmon :: X11Color
- Data.GraphViz.Attributes.Colors: LightSalmon1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSalmon2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSalmon3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSalmon4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSeaGreen :: X11Color
- Data.GraphViz.Attributes.Colors: LightSkyBlue :: X11Color
- Data.GraphViz.Attributes.Colors: LightSkyBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSkyBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSkyBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSkyBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSlateBlue :: X11Color
- Data.GraphViz.Attributes.Colors: LightSlateGray :: X11Color
- Data.GraphViz.Attributes.Colors: LightSteelBlue :: X11Color
- Data.GraphViz.Attributes.Colors: LightSteelBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSteelBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSteelBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightSteelBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: LightYellow :: X11Color
- Data.GraphViz.Attributes.Colors: LightYellow1 :: X11Color
- Data.GraphViz.Attributes.Colors: LightYellow2 :: X11Color
- Data.GraphViz.Attributes.Colors: LightYellow3 :: X11Color
- Data.GraphViz.Attributes.Colors: LightYellow4 :: X11Color
- Data.GraphViz.Attributes.Colors: LimeGreen :: X11Color
- Data.GraphViz.Attributes.Colors: Linen :: X11Color
- Data.GraphViz.Attributes.Colors: Magenta :: X11Color
- Data.GraphViz.Attributes.Colors: Magenta1 :: X11Color
- Data.GraphViz.Attributes.Colors: Magenta2 :: X11Color
- Data.GraphViz.Attributes.Colors: Magenta3 :: X11Color
- Data.GraphViz.Attributes.Colors: Magenta4 :: X11Color
- Data.GraphViz.Attributes.Colors: Maroon :: X11Color
- Data.GraphViz.Attributes.Colors: Maroon1 :: X11Color
- Data.GraphViz.Attributes.Colors: Maroon2 :: X11Color
- Data.GraphViz.Attributes.Colors: Maroon3 :: X11Color
- Data.GraphViz.Attributes.Colors: Maroon4 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumAquamarine :: X11Color
- Data.GraphViz.Attributes.Colors: MediumBlue :: X11Color
- Data.GraphViz.Attributes.Colors: MediumOrchid :: X11Color
- Data.GraphViz.Attributes.Colors: MediumOrchid1 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumOrchid2 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumOrchid3 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumOrchid4 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumPurple :: X11Color
- Data.GraphViz.Attributes.Colors: MediumPurple1 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumPurple2 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumPurple3 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumPurple4 :: X11Color
- Data.GraphViz.Attributes.Colors: MediumSeaGreen :: X11Color
- Data.GraphViz.Attributes.Colors: MediumSlateBlue :: X11Color
- Data.GraphViz.Attributes.Colors: MediumSpringGreen :: X11Color
- Data.GraphViz.Attributes.Colors: MediumTurquoise :: X11Color
- Data.GraphViz.Attributes.Colors: MediumVioletRed :: X11Color
- Data.GraphViz.Attributes.Colors: MidnightBlue :: X11Color
- Data.GraphViz.Attributes.Colors: MintCream :: X11Color
- Data.GraphViz.Attributes.Colors: MistyRose :: X11Color
- Data.GraphViz.Attributes.Colors: MistyRose1 :: X11Color
- Data.GraphViz.Attributes.Colors: MistyRose2 :: X11Color
- Data.GraphViz.Attributes.Colors: MistyRose3 :: X11Color
- Data.GraphViz.Attributes.Colors: MistyRose4 :: X11Color
- Data.GraphViz.Attributes.Colors: Moccasin :: X11Color
- Data.GraphViz.Attributes.Colors: NavajoWhite :: X11Color
- Data.GraphViz.Attributes.Colors: NavajoWhite1 :: X11Color
- Data.GraphViz.Attributes.Colors: NavajoWhite2 :: X11Color
- Data.GraphViz.Attributes.Colors: NavajoWhite3 :: X11Color
- Data.GraphViz.Attributes.Colors: NavajoWhite4 :: X11Color
- Data.GraphViz.Attributes.Colors: Navy :: X11Color
- Data.GraphViz.Attributes.Colors: NavyBlue :: X11Color
- Data.GraphViz.Attributes.Colors: OldLace :: X11Color
- Data.GraphViz.Attributes.Colors: OliveDrab :: X11Color
- Data.GraphViz.Attributes.Colors: OliveDrab1 :: X11Color
- Data.GraphViz.Attributes.Colors: OliveDrab2 :: X11Color
- Data.GraphViz.Attributes.Colors: OliveDrab3 :: X11Color
- Data.GraphViz.Attributes.Colors: OliveDrab4 :: X11Color
- Data.GraphViz.Attributes.Colors: Orange :: X11Color
- Data.GraphViz.Attributes.Colors: Orange1 :: X11Color
- Data.GraphViz.Attributes.Colors: Orange2 :: X11Color
- Data.GraphViz.Attributes.Colors: Orange3 :: X11Color
- Data.GraphViz.Attributes.Colors: Orange4 :: X11Color
- Data.GraphViz.Attributes.Colors: OrangeRed :: X11Color
- Data.GraphViz.Attributes.Colors: OrangeRed1 :: X11Color
- Data.GraphViz.Attributes.Colors: OrangeRed2 :: X11Color
- Data.GraphViz.Attributes.Colors: OrangeRed3 :: X11Color
- Data.GraphViz.Attributes.Colors: OrangeRed4 :: X11Color
- Data.GraphViz.Attributes.Colors: Oranges :: BrewerName
- Data.GraphViz.Attributes.Colors: Orchid :: X11Color
- Data.GraphViz.Attributes.Colors: Orchid1 :: X11Color
- Data.GraphViz.Attributes.Colors: Orchid2 :: X11Color
- Data.GraphViz.Attributes.Colors: Orchid3 :: X11Color
- Data.GraphViz.Attributes.Colors: Orchid4 :: X11Color
- Data.GraphViz.Attributes.Colors: Orrd :: BrewerName
- Data.GraphViz.Attributes.Colors: Paired :: BrewerName
- Data.GraphViz.Attributes.Colors: PaleGoldenrod :: X11Color
- Data.GraphViz.Attributes.Colors: PaleGreen :: X11Color
- Data.GraphViz.Attributes.Colors: PaleGreen1 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleGreen2 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleGreen3 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleGreen4 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleTurquoise :: X11Color
- Data.GraphViz.Attributes.Colors: PaleTurquoise1 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleTurquoise2 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleTurquoise3 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleTurquoise4 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleVioletRed :: X11Color
- Data.GraphViz.Attributes.Colors: PaleVioletRed1 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleVioletRed2 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleVioletRed3 :: X11Color
- Data.GraphViz.Attributes.Colors: PaleVioletRed4 :: X11Color
- Data.GraphViz.Attributes.Colors: PapayaWhip :: X11Color
- Data.GraphViz.Attributes.Colors: Pastel1 :: BrewerName
- Data.GraphViz.Attributes.Colors: Pastel2 :: BrewerName
- Data.GraphViz.Attributes.Colors: PeachPuff :: X11Color
- Data.GraphViz.Attributes.Colors: PeachPuff1 :: X11Color
- Data.GraphViz.Attributes.Colors: PeachPuff2 :: X11Color
- Data.GraphViz.Attributes.Colors: PeachPuff3 :: X11Color
- Data.GraphViz.Attributes.Colors: PeachPuff4 :: X11Color
- Data.GraphViz.Attributes.Colors: Peru :: X11Color
- Data.GraphViz.Attributes.Colors: Pink :: X11Color
- Data.GraphViz.Attributes.Colors: Pink1 :: X11Color
- Data.GraphViz.Attributes.Colors: Pink2 :: X11Color
- Data.GraphViz.Attributes.Colors: Pink3 :: X11Color
- Data.GraphViz.Attributes.Colors: Pink4 :: X11Color
- Data.GraphViz.Attributes.Colors: Piyg :: BrewerName
- Data.GraphViz.Attributes.Colors: Plum :: X11Color
- Data.GraphViz.Attributes.Colors: Plum1 :: X11Color
- Data.GraphViz.Attributes.Colors: Plum2 :: X11Color
- Data.GraphViz.Attributes.Colors: Plum3 :: X11Color
- Data.GraphViz.Attributes.Colors: Plum4 :: X11Color
- Data.GraphViz.Attributes.Colors: PowderBlue :: X11Color
- Data.GraphViz.Attributes.Colors: Prgn :: BrewerName
- Data.GraphViz.Attributes.Colors: Pubu :: BrewerName
- Data.GraphViz.Attributes.Colors: Pubugn :: BrewerName
- Data.GraphViz.Attributes.Colors: Puor :: BrewerName
- Data.GraphViz.Attributes.Colors: Purd :: BrewerName
- Data.GraphViz.Attributes.Colors: Purple :: X11Color
- Data.GraphViz.Attributes.Colors: Purple1 :: X11Color
- Data.GraphViz.Attributes.Colors: Purple2 :: X11Color
- Data.GraphViz.Attributes.Colors: Purple3 :: X11Color
- Data.GraphViz.Attributes.Colors: Purple4 :: X11Color
- Data.GraphViz.Attributes.Colors: Purples :: BrewerName
- Data.GraphViz.Attributes.Colors: Rdbu :: BrewerName
- Data.GraphViz.Attributes.Colors: Rdgy :: BrewerName
- Data.GraphViz.Attributes.Colors: Rdpu :: BrewerName
- Data.GraphViz.Attributes.Colors: Rdylbu :: BrewerName
- Data.GraphViz.Attributes.Colors: Rdylgn :: BrewerName
- Data.GraphViz.Attributes.Colors: Red :: X11Color
- Data.GraphViz.Attributes.Colors: Red1 :: X11Color
- Data.GraphViz.Attributes.Colors: Red2 :: X11Color
- Data.GraphViz.Attributes.Colors: Red3 :: X11Color
- Data.GraphViz.Attributes.Colors: Red4 :: X11Color
- Data.GraphViz.Attributes.Colors: Reds :: BrewerName
- Data.GraphViz.Attributes.Colors: RosyBrown :: X11Color
- Data.GraphViz.Attributes.Colors: RosyBrown1 :: X11Color
- Data.GraphViz.Attributes.Colors: RosyBrown2 :: X11Color
- Data.GraphViz.Attributes.Colors: RosyBrown3 :: X11Color
- Data.GraphViz.Attributes.Colors: RosyBrown4 :: X11Color
- Data.GraphViz.Attributes.Colors: RoyalBlue :: X11Color
- Data.GraphViz.Attributes.Colors: RoyalBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: RoyalBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: RoyalBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: RoyalBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: SaddleBrown :: X11Color
- Data.GraphViz.Attributes.Colors: Salmon :: X11Color
- Data.GraphViz.Attributes.Colors: Salmon1 :: X11Color
- Data.GraphViz.Attributes.Colors: Salmon2 :: X11Color
- Data.GraphViz.Attributes.Colors: Salmon3 :: X11Color
- Data.GraphViz.Attributes.Colors: Salmon4 :: X11Color
- Data.GraphViz.Attributes.Colors: SandyBrown :: X11Color
- Data.GraphViz.Attributes.Colors: SeaGreen :: X11Color
- Data.GraphViz.Attributes.Colors: SeaGreen1 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaGreen2 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaGreen3 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaGreen4 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaShell :: X11Color
- Data.GraphViz.Attributes.Colors: SeaShell1 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaShell2 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaShell3 :: X11Color
- Data.GraphViz.Attributes.Colors: SeaShell4 :: X11Color
- Data.GraphViz.Attributes.Colors: Set1 :: BrewerName
- Data.GraphViz.Attributes.Colors: Set2 :: BrewerName
- Data.GraphViz.Attributes.Colors: Set3 :: BrewerName
- Data.GraphViz.Attributes.Colors: Sienna :: X11Color
- Data.GraphViz.Attributes.Colors: Sienna1 :: X11Color
- Data.GraphViz.Attributes.Colors: Sienna2 :: X11Color
- Data.GraphViz.Attributes.Colors: Sienna3 :: X11Color
- Data.GraphViz.Attributes.Colors: Sienna4 :: X11Color
- Data.GraphViz.Attributes.Colors: SkyBlue :: X11Color
- Data.GraphViz.Attributes.Colors: SkyBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: SkyBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: SkyBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: SkyBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateBlue :: X11Color
- Data.GraphViz.Attributes.Colors: SlateBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateGray :: X11Color
- Data.GraphViz.Attributes.Colors: SlateGray1 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateGray2 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateGray3 :: X11Color
- Data.GraphViz.Attributes.Colors: SlateGray4 :: X11Color
- Data.GraphViz.Attributes.Colors: Snow :: X11Color
- Data.GraphViz.Attributes.Colors: Snow1 :: X11Color
- Data.GraphViz.Attributes.Colors: Snow2 :: X11Color
- Data.GraphViz.Attributes.Colors: Snow3 :: X11Color
- Data.GraphViz.Attributes.Colors: Snow4 :: X11Color
- Data.GraphViz.Attributes.Colors: Spectral :: BrewerName
- Data.GraphViz.Attributes.Colors: SpringGreen :: X11Color
- Data.GraphViz.Attributes.Colors: SpringGreen1 :: X11Color
- Data.GraphViz.Attributes.Colors: SpringGreen2 :: X11Color
- Data.GraphViz.Attributes.Colors: SpringGreen3 :: X11Color
- Data.GraphViz.Attributes.Colors: SpringGreen4 :: X11Color
- Data.GraphViz.Attributes.Colors: SteelBlue :: X11Color
- Data.GraphViz.Attributes.Colors: SteelBlue1 :: X11Color
- Data.GraphViz.Attributes.Colors: SteelBlue2 :: X11Color
- Data.GraphViz.Attributes.Colors: SteelBlue3 :: X11Color
- Data.GraphViz.Attributes.Colors: SteelBlue4 :: X11Color
- Data.GraphViz.Attributes.Colors: Tan :: X11Color
- Data.GraphViz.Attributes.Colors: Tan1 :: X11Color
- Data.GraphViz.Attributes.Colors: Tan2 :: X11Color
- Data.GraphViz.Attributes.Colors: Tan3 :: X11Color
- Data.GraphViz.Attributes.Colors: Tan4 :: X11Color
- Data.GraphViz.Attributes.Colors: Thistle :: X11Color
- Data.GraphViz.Attributes.Colors: Thistle1 :: X11Color
- Data.GraphViz.Attributes.Colors: Thistle2 :: X11Color
- Data.GraphViz.Attributes.Colors: Thistle3 :: X11Color
- Data.GraphViz.Attributes.Colors: Thistle4 :: X11Color
- Data.GraphViz.Attributes.Colors: Tomato :: X11Color
- Data.GraphViz.Attributes.Colors: Tomato1 :: X11Color
- Data.GraphViz.Attributes.Colors: Tomato2 :: X11Color
- Data.GraphViz.Attributes.Colors: Tomato3 :: X11Color
- Data.GraphViz.Attributes.Colors: Tomato4 :: X11Color
- Data.GraphViz.Attributes.Colors: Transparent :: X11Color
- Data.GraphViz.Attributes.Colors: Turquoise :: X11Color
- Data.GraphViz.Attributes.Colors: Turquoise1 :: X11Color
- Data.GraphViz.Attributes.Colors: Turquoise2 :: X11Color
- Data.GraphViz.Attributes.Colors: Turquoise3 :: X11Color
- Data.GraphViz.Attributes.Colors: Turquoise4 :: X11Color
- Data.GraphViz.Attributes.Colors: Violet :: X11Color
- Data.GraphViz.Attributes.Colors: VioletRed :: X11Color
- Data.GraphViz.Attributes.Colors: VioletRed1 :: X11Color
- Data.GraphViz.Attributes.Colors: VioletRed2 :: X11Color
- Data.GraphViz.Attributes.Colors: VioletRed3 :: X11Color
- Data.GraphViz.Attributes.Colors: VioletRed4 :: X11Color
- Data.GraphViz.Attributes.Colors: Wheat :: X11Color
- Data.GraphViz.Attributes.Colors: Wheat1 :: X11Color
- Data.GraphViz.Attributes.Colors: Wheat2 :: X11Color
- Data.GraphViz.Attributes.Colors: Wheat3 :: X11Color
- Data.GraphViz.Attributes.Colors: Wheat4 :: X11Color
- Data.GraphViz.Attributes.Colors: White :: X11Color
- Data.GraphViz.Attributes.Colors: WhiteSmoke :: X11Color
- Data.GraphViz.Attributes.Colors: Yellow :: X11Color
- Data.GraphViz.Attributes.Colors: Yellow1 :: X11Color
- Data.GraphViz.Attributes.Colors: Yellow2 :: X11Color
- Data.GraphViz.Attributes.Colors: Yellow3 :: X11Color
- Data.GraphViz.Attributes.Colors: Yellow4 :: X11Color
- Data.GraphViz.Attributes.Colors: YellowGreen :: X11Color
- Data.GraphViz.Attributes.Colors: Ylgn :: BrewerName
- Data.GraphViz.Attributes.Colors: Ylgnbu :: BrewerName
- Data.GraphViz.Attributes.Colors: Ylorbr :: BrewerName
- Data.GraphViz.Attributes.Colors: Ylorrd :: BrewerName
- Data.GraphViz.Attributes.Colors: data BrewerName
- Data.GraphViz.Attributes.Colors: data BrewerScheme
- Data.GraphViz.Attributes.Colors: data X11Color
- Data.GraphViz.Attributes.Colors: instance Bounded X11Color
- Data.GraphViz.Attributes.Colors: instance Enum X11Color
- Data.GraphViz.Attributes.Colors: instance Eq X11Color
- Data.GraphViz.Attributes.Colors: instance Ord X11Color
- Data.GraphViz.Attributes.Colors: instance ParseDot X11Color
- Data.GraphViz.Attributes.Colors: instance PrintDot X11Color
- Data.GraphViz.Attributes.Colors: instance Read X11Color
- Data.GraphViz.Attributes.Colors: instance Show X11Color
- Data.GraphViz.Attributes.Colors: x11Colour :: X11Color -> AlphaColour Double
- Data.GraphViz.Attributes.Complete: Bb :: Rect -> Attribute
- Data.GraphViz.Attributes.Complete: RemoveOverlaps :: Overlap
- Data.GraphViz.Attributes.HTML: HtmlAlign :: HtmlAlign -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlBAlign :: HtmlAlign -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlBGColor :: Color -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlBorder :: Word8 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlCellBorder :: Word8 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlCellPadding :: Word8 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlCellSpacing :: Word8 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlColSpan :: Word16 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlColor :: Color -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlExpandBoth :: HtmlScale
- Data.GraphViz.Attributes.HTML: HtmlExpandHeight :: HtmlScale
- Data.GraphViz.Attributes.HTML: HtmlExpandWidth :: HtmlScale
- Data.GraphViz.Attributes.HTML: HtmlFace :: Text -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlFixedSize :: Bool -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlFont :: HtmlAttributes -> HtmlText -> HtmlTextItem
- Data.GraphViz.Attributes.HTML: HtmlHRef :: Text -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlHeight :: Word16 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlImg :: HtmlAttributes -> HtmlImg
- Data.GraphViz.Attributes.HTML: HtmlImgCell :: HtmlAttributes -> HtmlImg -> HtmlCell
- Data.GraphViz.Attributes.HTML: HtmlLabelCell :: HtmlAttributes -> HtmlLabel -> HtmlCell
- Data.GraphViz.Attributes.HTML: HtmlNaturalSize :: HtmlScale
- Data.GraphViz.Attributes.HTML: HtmlNewline :: HtmlAttributes -> HtmlTextItem
- Data.GraphViz.Attributes.HTML: HtmlPointSize :: Double -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlPort :: PortName -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlRow :: [HtmlCell] -> HtmlRow
- Data.GraphViz.Attributes.HTML: HtmlRowSpan :: Word16 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlScale :: HtmlScale -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlScaleUniformly :: HtmlScale
- Data.GraphViz.Attributes.HTML: HtmlSrc :: FilePath -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlStr :: Text -> HtmlTextItem
- Data.GraphViz.Attributes.HTML: HtmlTable :: HtmlTable -> HtmlLabel
- Data.GraphViz.Attributes.HTML: HtmlTarget :: Text -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlText :: HtmlText -> HtmlLabel
- Data.GraphViz.Attributes.HTML: HtmlTitle :: Text -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlVAlign :: HtmlVAlign -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: HtmlWidth :: Word16 -> HtmlAttribute
- Data.GraphViz.Attributes.HTML: data HtmlAlign
- Data.GraphViz.Attributes.HTML: data HtmlAttribute
- Data.GraphViz.Attributes.HTML: data HtmlCell
- Data.GraphViz.Attributes.HTML: data HtmlLabel
- Data.GraphViz.Attributes.HTML: data HtmlScale
- Data.GraphViz.Attributes.HTML: data HtmlTable
- Data.GraphViz.Attributes.HTML: data HtmlTextItem
- Data.GraphViz.Attributes.HTML: data HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Bounded HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Bounded HtmlScale
- Data.GraphViz.Attributes.HTML: instance Bounded HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Enum HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Enum HtmlScale
- Data.GraphViz.Attributes.HTML: instance Enum HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Eq HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Eq HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance Eq HtmlCell
- Data.GraphViz.Attributes.HTML: instance Eq HtmlImg
- Data.GraphViz.Attributes.HTML: instance Eq HtmlLabel
- Data.GraphViz.Attributes.HTML: instance Eq HtmlRow
- Data.GraphViz.Attributes.HTML: instance Eq HtmlScale
- Data.GraphViz.Attributes.HTML: instance Eq HtmlTable
- Data.GraphViz.Attributes.HTML: instance Eq HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance Eq HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Ord HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Ord HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance Ord HtmlCell
- Data.GraphViz.Attributes.HTML: instance Ord HtmlImg
- Data.GraphViz.Attributes.HTML: instance Ord HtmlLabel
- Data.GraphViz.Attributes.HTML: instance Ord HtmlRow
- Data.GraphViz.Attributes.HTML: instance Ord HtmlScale
- Data.GraphViz.Attributes.HTML: instance Ord HtmlTable
- Data.GraphViz.Attributes.HTML: instance Ord HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance Ord HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlAlign
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlCell
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlImg
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlLabel
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlRow
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlScale
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlTable
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance ParseDot HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlAlign
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlCell
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlImg
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlLabel
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlRow
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlScale
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlTable
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance PrintDot HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Read HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Read HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance Read HtmlCell
- Data.GraphViz.Attributes.HTML: instance Read HtmlImg
- Data.GraphViz.Attributes.HTML: instance Read HtmlLabel
- Data.GraphViz.Attributes.HTML: instance Read HtmlRow
- Data.GraphViz.Attributes.HTML: instance Read HtmlScale
- Data.GraphViz.Attributes.HTML: instance Read HtmlTable
- Data.GraphViz.Attributes.HTML: instance Read HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance Read HtmlVAlign
- Data.GraphViz.Attributes.HTML: instance Show HtmlAlign
- Data.GraphViz.Attributes.HTML: instance Show HtmlAttribute
- Data.GraphViz.Attributes.HTML: instance Show HtmlCell
- Data.GraphViz.Attributes.HTML: instance Show HtmlImg
- Data.GraphViz.Attributes.HTML: instance Show HtmlLabel
- Data.GraphViz.Attributes.HTML: instance Show HtmlRow
- Data.GraphViz.Attributes.HTML: instance Show HtmlScale
- Data.GraphViz.Attributes.HTML: instance Show HtmlTable
- Data.GraphViz.Attributes.HTML: instance Show HtmlTextItem
- Data.GraphViz.Attributes.HTML: instance Show HtmlVAlign
- Data.GraphViz.Attributes.HTML: newtype HtmlImg
- Data.GraphViz.Attributes.HTML: newtype HtmlRow
- Data.GraphViz.Attributes.HTML: type HtmlAttributes = [HtmlAttribute]
- Data.GraphViz.Attributes.HTML: type HtmlText = [HtmlTextItem]
- Data.GraphViz.Parsing: allWhitespace :: Parse ()
- Data.GraphViz.Parsing: allWhitespace' :: Parse ()
- Data.GraphViz.Parsing: whitespace' :: Parse ()
- Data.GraphViz.State: GS :: Bool -> [Char] -> ColorScheme -> GraphvizState
- Data.GraphViz.State: class Monad m => GraphvizStateM m
- Data.GraphViz.State: colorScheme :: GraphvizState -> ColorScheme
- Data.GraphViz.State: data GraphvizState
- Data.GraphViz.State: directedEdges :: GraphvizState -> Bool
- Data.GraphViz.State: getColorScheme :: GraphvizStateM m => m ColorScheme
- Data.GraphViz.State: getDirectedness :: GraphvizStateM m => m Bool
- Data.GraphViz.State: getLayerSep :: GraphvizStateM m => m [Char]
- Data.GraphViz.State: getsGS :: GraphvizStateM m => (GraphvizState -> a) -> m a
- Data.GraphViz.State: initialState :: GraphvizState
- Data.GraphViz.State: instance Eq GraphvizState
- Data.GraphViz.State: instance GraphvizStateM (Parser GraphvizState)
- Data.GraphViz.State: instance GraphvizStateM (State GraphvizState)
- Data.GraphViz.State: instance Ord GraphvizState
- Data.GraphViz.State: instance Read GraphvizState
- Data.GraphViz.State: instance Show GraphvizState
- Data.GraphViz.State: layerSep :: GraphvizState -> [Char]
- Data.GraphViz.State: modifyGS :: GraphvizStateM m => (GraphvizState -> GraphvizState) -> m ()
- Data.GraphViz.State: setColorScheme :: GraphvizStateM m => ColorScheme -> m ()
- Data.GraphViz.State: setDirectedness :: GraphvizStateM m => Bool -> m ()
- Data.GraphViz.State: setLayerSep :: GraphvizStateM m => [Char] -> m ()
+ Data.GraphViz.Attributes: InEdges :: Order
+ Data.GraphViz.Attributes: MaxRank :: RankType
+ Data.GraphViz.Attributes: MinRank :: RankType
+ Data.GraphViz.Attributes: OutEdges :: Order
+ Data.GraphViz.Attributes: SameRank :: RankType
+ Data.GraphViz.Attributes: SinkRank :: RankType
+ Data.GraphViz.Attributes: SourceRank :: RankType
+ Data.GraphViz.Attributes: bgColors :: NamedColor nc => nc -> nc -> Attribute
+ Data.GraphViz.Attributes: data Order
+ Data.GraphViz.Attributes: data RankType
+ Data.GraphViz.Attributes: fillColors :: NamedColor nc => nc -> nc -> Attribute
+ Data.GraphViz.Attributes: forceLabels :: Attribute
+ Data.GraphViz.Attributes: gradientAngle :: Int -> Attribute
+ Data.GraphViz.Attributes: instance Labellable Label
+ Data.GraphViz.Attributes: instance Labellable Table
+ Data.GraphViz.Attributes: ordering :: Order -> Attribute
+ Data.GraphViz.Attributes: radial :: Style
+ Data.GraphViz.Attributes: rank :: RankType -> Attribute
+ Data.GraphViz.Attributes: tapered :: Style
+ Data.GraphViz.Attributes: xLabel :: Labellable a => a -> Attribute
+ Data.GraphViz.Attributes: xTextLabel :: Text -> Attribute
+ Data.GraphViz.Attributes.Colors: SVG :: ColorScheme
+ Data.GraphViz.Attributes.Colors: SVGColor :: SVGColor -> Color
+ Data.GraphViz.Attributes.Colors: class NamedColor nc
+ Data.GraphViz.Attributes.Colors: instance NamedColor BrewerColor
+ Data.GraphViz.Attributes.Colors: instance NamedColor SVGColor
+ Data.GraphViz.Attributes.Colors: instance NamedColor X11Color
+ Data.GraphViz.Attributes.Colors: toColor :: NamedColor nc => nc -> Color
+ Data.GraphViz.Attributes.Colors.Brewer: Accent :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: BC :: BrewerScheme -> Word8 -> BrewerColor
+ Data.GraphViz.Attributes.Colors.Brewer: BScheme :: BrewerName -> Word8 -> BrewerScheme
+ Data.GraphViz.Attributes.Colors.Brewer: Blues :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Brbg :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Bugn :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Bupu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Dark2 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Gnbu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Greens :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Greys :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Oranges :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Orrd :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Paired :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Pastel1 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Pastel2 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Piyg :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Prgn :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Pubu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Pubugn :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Puor :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Purd :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Purples :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Rdbu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Rdgy :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Rdpu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Rdylbu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Rdylgn :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Reds :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Set1 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Set2 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Set3 :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Spectral :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Ylgn :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Ylgnbu :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Ylorbr :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: Ylorrd :: BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: data BrewerColor
+ Data.GraphViz.Attributes.Colors.Brewer: data BrewerName
+ Data.GraphViz.Attributes.Colors.Brewer: data BrewerScheme
+ Data.GraphViz.Attributes.Colors.Brewer: instance Eq BrewerColor
+ Data.GraphViz.Attributes.Colors.Brewer: instance Ord BrewerColor
+ Data.GraphViz.Attributes.Colors.Brewer: instance Read BrewerColor
+ Data.GraphViz.Attributes.Colors.Brewer: instance Show BrewerColor
+ Data.GraphViz.Attributes.Colors.SVG: AliceBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: AntiqueWhite :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Aqua :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Aquamarine :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Azure :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Beige :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Bisque :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Black :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: BlanchedAlmond :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Blue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: BlueViolet :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Brown :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Burlywood :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: CadetBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Chartreuse :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Chocolate :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Coral :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: CornflowerBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Cornsilk :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Crimson :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Cyan :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkCyan :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkGoldenrod :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkKhaki :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkMagenta :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkOliveGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkOrange :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkOrchid :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkRed :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkSalmon :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkSeaGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkSlateBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkSlateGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkTurquoise :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DarkViolet :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DeepPink :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DeepSkyBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DimGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: DodgerBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Firebrick :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: FloralWhite :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: ForestGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Fuchsia :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Gainsboro :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: GhostWhite :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Gold :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Goldenrod :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Gray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Green :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: GreenYellow :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Honeydew :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: HotPink :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: IndianRed :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Indigo :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Ivory :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Khaki :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Lavender :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LavenderBlush :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LawnGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LemonChiffon :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightCoral :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightCyan :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightGoldenrodYellow :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightPink :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightSalmon :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightSeaGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightSkyBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightSlateGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightSteelBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LightYellow :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Lime :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: LimeGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Linen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Magenta :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Maroon :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumAquamarine :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumOrchid :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumPurple :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumSeaGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumSlateBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumSpringGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumTurquoise :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MediumVioletRed :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MidnightBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MintCream :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: MistyRose :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Moccasin :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: NavajoWhite :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Navy :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: OldLace :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Olive :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: OliveDrab :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Orange :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: OrangeRed :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Orchid :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PaleGoldenrod :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PaleGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PaleTurquoise :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PaleVioletRed :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PapayaWhip :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PeachPuff :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Peru :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Pink :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Plum :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: PowderBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Purple :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Red :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: RosyBrown :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: RoyalBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SaddleBrown :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Salmon :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SandyBrown :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SeaGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SeaShell :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Sienna :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Silver :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SkyBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SlateBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SlateGray :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Snow :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SpringGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: SteelBlue :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Tan :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Teal :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Thistle :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Tomato :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Turquoise :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Violet :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Wheat :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: White :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: WhiteSmoke :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: Yellow :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: YellowGreen :: SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: data SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Bounded SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Enum SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Eq SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Ord SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance ParseDot SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance PrintDot SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Read SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: instance Show SVGColor
+ Data.GraphViz.Attributes.Colors.SVG: svgColour :: SVGColor -> Colour Double
+ Data.GraphViz.Attributes.Colors.X11: AliceBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: AntiqueWhite :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: AntiqueWhite1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: AntiqueWhite2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: AntiqueWhite3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: AntiqueWhite4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Aquamarine :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Aquamarine1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Aquamarine2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Aquamarine3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Aquamarine4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Azure :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Azure1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Azure2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Azure3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Azure4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Beige :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Bisque :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Bisque1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Bisque2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Bisque3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Bisque4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Black :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: BlanchedAlmond :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Blue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Blue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Blue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Blue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Blue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: BlueViolet :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Brown :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Brown1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Brown2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Brown3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Brown4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Burlywood :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Burlywood1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Burlywood2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Burlywood3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Burlywood4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CadetBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CadetBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CadetBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CadetBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CadetBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chartreuse :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chartreuse1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chartreuse2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chartreuse3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chartreuse4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chocolate :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chocolate1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chocolate2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chocolate3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Chocolate4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Coral :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Coral1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Coral2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Coral3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Coral4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornFlowerBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornSilk :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornSilk1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornSilk2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornSilk3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: CornSilk4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Crimson :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Cyan :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Cyan1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Cyan2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Cyan3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Cyan4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGoldenrod :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGoldenrod1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGoldenrod2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGoldenrod3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGoldenrod4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOliveGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOliveGreen1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOliveGreen2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOliveGreen3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOliveGreen4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrange :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrange1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrange2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrange3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrange4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrchid :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrchid1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrchid2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrchid3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkOrchid4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSalmon :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSeaGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSeaGreen1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSeaGreen2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSeaGreen3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSeaGreen4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateGray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateGray1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateGray2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateGray3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkSlateGray4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkTurquoise :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DarkViolet :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Darkkhaki :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepPink :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepPink1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepPink2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepPink3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepPink4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepSkyBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepSkyBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepSkyBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepSkyBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DeepSkyBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DimGray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DodgerBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DodgerBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DodgerBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DodgerBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: DodgerBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Firebrick :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Firebrick1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Firebrick2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Firebrick3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Firebrick4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: FloralWhite :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: ForestGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gainsboro :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: GhostWhite :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gold :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gold1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gold2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gold3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gold4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Goldenrod :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Goldenrod1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Goldenrod2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Goldenrod3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Goldenrod4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray0 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray10 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray100 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray11 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray12 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray13 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray14 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray15 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray16 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray17 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray18 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray19 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray20 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray21 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray22 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray23 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray24 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray25 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray26 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray27 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray28 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray29 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray30 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray31 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray32 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray33 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray34 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray35 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray36 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray37 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray38 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray39 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray40 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray41 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray42 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray43 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray44 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray45 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray46 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray47 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray48 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray49 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray5 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray50 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray51 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray52 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray53 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray54 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray55 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray56 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray57 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray58 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray59 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray6 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray60 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray61 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray62 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray63 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray64 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray65 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray66 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray67 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray68 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray69 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray7 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray70 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray71 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray72 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray73 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray74 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray75 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray76 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray77 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray78 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray79 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray8 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray80 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray81 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray82 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray83 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray84 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray85 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray86 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray87 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray88 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray89 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray9 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray90 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray91 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray92 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray93 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray94 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray95 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray96 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray97 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray98 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Gray99 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Green :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Green1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Green2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Green3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Green4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: GreenYellow :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HoneyDew :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HoneyDew1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HoneyDew2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HoneyDew3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HoneyDew4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HotPink :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HotPink1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HotPink2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HotPink3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: HotPink4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: IndianRed :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: IndianRed1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: IndianRed2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: IndianRed3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: IndianRed4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Indigo :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Ivory :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Ivory1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Ivory2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Ivory3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Ivory4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Khaki :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Khaki1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Khaki2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Khaki3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Khaki4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Lavender :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LavenderBlush :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LavenderBlush1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LavenderBlush2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LavenderBlush3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LavenderBlush4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LawnGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LemonChiffon :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LemonChiffon1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LemonChiffon2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LemonChiffon3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LemonChiffon4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCoral :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCyan :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCyan1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCyan2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCyan3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightCyan4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrod :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrod1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrod2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrod3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrod4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGoldenrodYellow :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightGray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightPink :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightPink1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightPink2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightPink3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightPink4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSalmon :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSalmon1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSalmon2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSalmon3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSalmon4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSeaGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSkyBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSkyBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSkyBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSkyBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSkyBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSlateBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSlateGray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSteelBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSteelBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSteelBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSteelBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightSteelBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightYellow :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightYellow1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightYellow2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightYellow3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LightYellow4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: LimeGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Linen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Magenta :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Magenta1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Magenta2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Magenta3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Magenta4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Maroon :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Maroon1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Maroon2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Maroon3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Maroon4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumAquamarine :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumOrchid :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumOrchid1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumOrchid2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumOrchid3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumOrchid4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumPurple :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumPurple1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumPurple2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumPurple3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumPurple4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumSeaGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumSlateBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumSpringGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumTurquoise :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MediumVioletRed :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MidnightBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MintCream :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MistyRose :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MistyRose1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MistyRose2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MistyRose3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: MistyRose4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Moccasin :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavajoWhite :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavajoWhite1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavajoWhite2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavajoWhite3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavajoWhite4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Navy :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: NavyBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OldLace :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OliveDrab :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OliveDrab1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OliveDrab2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OliveDrab3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OliveDrab4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orange :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orange1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orange2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orange3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orange4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OrangeRed :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OrangeRed1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OrangeRed2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OrangeRed3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: OrangeRed4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orchid :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orchid1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orchid2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orchid3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Orchid4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGoldenrod :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGreen1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGreen2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGreen3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleGreen4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleTurquoise :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleTurquoise1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleTurquoise2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleTurquoise3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleTurquoise4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleVioletRed :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleVioletRed1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleVioletRed2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleVioletRed3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PaleVioletRed4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PapayaWhip :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PeachPuff :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PeachPuff1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PeachPuff2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PeachPuff3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PeachPuff4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Peru :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Pink :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Pink1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Pink2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Pink3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Pink4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Plum :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Plum1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Plum2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Plum3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Plum4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: PowderBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Purple :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Purple1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Purple2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Purple3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Purple4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Red :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Red1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Red2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Red3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Red4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RosyBrown :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RosyBrown1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RosyBrown2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RosyBrown3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RosyBrown4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RoyalBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RoyalBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RoyalBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RoyalBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: RoyalBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SaddleBrown :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Salmon :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Salmon1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Salmon2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Salmon3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Salmon4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SandyBrown :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaGreen1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaGreen2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaGreen3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaGreen4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaShell :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaShell1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaShell2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaShell3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SeaShell4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Sienna :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Sienna1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Sienna2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Sienna3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Sienna4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SkyBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SkyBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SkyBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SkyBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SkyBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateGray :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateGray1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateGray2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateGray3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SlateGray4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Snow :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Snow1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Snow2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Snow3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Snow4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SpringGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SpringGreen1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SpringGreen2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SpringGreen3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SpringGreen4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SteelBlue :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SteelBlue1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SteelBlue2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SteelBlue3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: SteelBlue4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tan :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tan1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tan2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tan3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tan4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Thistle :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Thistle1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Thistle2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Thistle3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Thistle4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tomato :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tomato1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tomato2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tomato3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Tomato4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Transparent :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Turquoise :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Turquoise1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Turquoise2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Turquoise3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Turquoise4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Violet :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: VioletRed :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: VioletRed1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: VioletRed2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: VioletRed3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: VioletRed4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Wheat :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Wheat1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Wheat2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Wheat3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Wheat4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: White :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: WhiteSmoke :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Yellow :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Yellow1 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Yellow2 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Yellow3 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: Yellow4 :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: YellowGreen :: X11Color
+ Data.GraphViz.Attributes.Colors.X11: data X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Bounded X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Enum X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Eq X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Ord X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance ParseDot X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance PrintDot X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Read X11Color
+ Data.GraphViz.Attributes.Colors.X11: instance Show X11Color
+ Data.GraphViz.Attributes.Colors.X11: x11Colour :: X11Color -> AlphaColour Double
+ Data.GraphViz.Attributes.Complete: BoundingBox :: Rect -> Attribute
+ Data.GraphViz.Attributes.Complete: CloseToCenter :: LabelScheme
+ Data.GraphViz.Attributes.Complete: CloseToOldCenter :: LabelScheme
+ Data.GraphViz.Attributes.Complete: ForceLabels :: Bool -> Attribute
+ Data.GraphViz.Attributes.Complete: GradientAngle :: Int -> Attribute
+ Data.GraphViz.Attributes.Complete: ImagePath :: Paths -> Attribute
+ Data.GraphViz.Attributes.Complete: InEdges :: Order
+ Data.GraphViz.Attributes.Complete: LHeight :: Double -> Attribute
+ Data.GraphViz.Attributes.Complete: LWidth :: Double -> Attribute
+ Data.GraphViz.Attributes.Complete: LabelScheme :: LabelScheme -> Attribute
+ Data.GraphViz.Attributes.Complete: NotEdgeLabel :: LabelScheme
+ Data.GraphViz.Attributes.Complete: OutEdges :: Order
+ Data.GraphViz.Attributes.Complete: Paths :: [FilePath] -> Paths
+ Data.GraphViz.Attributes.Complete: Radial :: StyleName
+ Data.GraphViz.Attributes.Complete: RemoveAndStraighten :: LabelScheme
+ Data.GraphViz.Attributes.Complete: Rotation :: Double -> Attribute
+ Data.GraphViz.Attributes.Complete: Scale :: DPoint -> Attribute
+ Data.GraphViz.Attributes.Complete: Tapered :: StyleName
+ Data.GraphViz.Attributes.Complete: XLabel :: Label -> Attribute
+ Data.GraphViz.Attributes.Complete: data LabelScheme
+ Data.GraphViz.Attributes.Complete: data Order
+ Data.GraphViz.Attributes.Complete: instance Bounded LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Bounded Order
+ Data.GraphViz.Attributes.Complete: instance Enum LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Enum Order
+ Data.GraphViz.Attributes.Complete: instance Eq LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Eq Order
+ Data.GraphViz.Attributes.Complete: instance Eq Paths
+ Data.GraphViz.Attributes.Complete: instance Ord LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Ord Order
+ Data.GraphViz.Attributes.Complete: instance Ord Paths
+ Data.GraphViz.Attributes.Complete: instance ParseDot LabelScheme
+ Data.GraphViz.Attributes.Complete: instance ParseDot Order
+ Data.GraphViz.Attributes.Complete: instance ParseDot Paths
+ Data.GraphViz.Attributes.Complete: instance PrintDot LabelScheme
+ Data.GraphViz.Attributes.Complete: instance PrintDot Order
+ Data.GraphViz.Attributes.Complete: instance PrintDot Paths
+ Data.GraphViz.Attributes.Complete: instance Read LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Read Order
+ Data.GraphViz.Attributes.Complete: instance Read Paths
+ Data.GraphViz.Attributes.Complete: instance Show LabelScheme
+ Data.GraphViz.Attributes.Complete: instance Show Order
+ Data.GraphViz.Attributes.Complete: instance Show Paths
+ Data.GraphViz.Attributes.Complete: newtype Paths
+ Data.GraphViz.Attributes.Complete: paths :: Paths -> [FilePath]
+ Data.GraphViz.Attributes.HTML: Align :: Align -> Attribute
+ Data.GraphViz.Attributes.HTML: BAlign :: Align -> Attribute
+ Data.GraphViz.Attributes.HTML: BGColor :: Color -> Attribute
+ Data.GraphViz.Attributes.HTML: Bold :: Format
+ Data.GraphViz.Attributes.HTML: Border :: Word8 -> Attribute
+ Data.GraphViz.Attributes.HTML: CellBorder :: Word8 -> Attribute
+ Data.GraphViz.Attributes.HTML: CellPadding :: Word8 -> Attribute
+ Data.GraphViz.Attributes.HTML: CellSpacing :: Word8 -> Attribute
+ Data.GraphViz.Attributes.HTML: Cells :: [Cell] -> Row
+ Data.GraphViz.Attributes.HTML: ColSpan :: Word16 -> Attribute
+ Data.GraphViz.Attributes.HTML: Color :: Color -> Attribute
+ Data.GraphViz.Attributes.HTML: ExpandBoth :: Scale
+ Data.GraphViz.Attributes.HTML: ExpandHeight :: Scale
+ Data.GraphViz.Attributes.HTML: ExpandWidth :: Scale
+ Data.GraphViz.Attributes.HTML: Face :: Text -> Attribute
+ Data.GraphViz.Attributes.HTML: FixedSize :: Bool -> Attribute
+ Data.GraphViz.Attributes.HTML: Font :: Attributes -> Text -> TextItem
+ Data.GraphViz.Attributes.HTML: Format :: Format -> Text -> TextItem
+ Data.GraphViz.Attributes.HTML: HRef :: Text -> Attribute
+ Data.GraphViz.Attributes.HTML: Height :: Word16 -> Attribute
+ Data.GraphViz.Attributes.HTML: HorizontalRule :: Row
+ Data.GraphViz.Attributes.HTML: ID :: Text -> Attribute
+ Data.GraphViz.Attributes.HTML: Img :: Attributes -> Img
+ Data.GraphViz.Attributes.HTML: ImgCell :: Attributes -> Img -> Cell
+ Data.GraphViz.Attributes.HTML: Italics :: Format
+ Data.GraphViz.Attributes.HTML: LabelCell :: Attributes -> Label -> Cell
+ Data.GraphViz.Attributes.HTML: NaturalSize :: Scale
+ Data.GraphViz.Attributes.HTML: Newline :: Attributes -> TextItem
+ Data.GraphViz.Attributes.HTML: PointSize :: Double -> Attribute
+ Data.GraphViz.Attributes.HTML: Port :: PortName -> Attribute
+ Data.GraphViz.Attributes.HTML: RowSpan :: Word16 -> Attribute
+ Data.GraphViz.Attributes.HTML: Scale :: Scale -> Attribute
+ Data.GraphViz.Attributes.HTML: ScaleUniformly :: Scale
+ Data.GraphViz.Attributes.HTML: Src :: FilePath -> Attribute
+ Data.GraphViz.Attributes.HTML: Str :: Text -> TextItem
+ Data.GraphViz.Attributes.HTML: Subscript :: Format
+ Data.GraphViz.Attributes.HTML: Superscript :: Format
+ Data.GraphViz.Attributes.HTML: Table :: Table -> Label
+ Data.GraphViz.Attributes.HTML: Target :: Text -> Attribute
+ Data.GraphViz.Attributes.HTML: Text :: Text -> Label
+ Data.GraphViz.Attributes.HTML: Title :: Text -> Attribute
+ Data.GraphViz.Attributes.HTML: Underline :: Format
+ Data.GraphViz.Attributes.HTML: VAlign :: VAlign -> Attribute
+ Data.GraphViz.Attributes.HTML: VerticalRule :: Cell
+ Data.GraphViz.Attributes.HTML: Width :: Word16 -> Attribute
+ Data.GraphViz.Attributes.HTML: data Align
+ Data.GraphViz.Attributes.HTML: data Attribute
+ Data.GraphViz.Attributes.HTML: data Cell
+ Data.GraphViz.Attributes.HTML: data Format
+ Data.GraphViz.Attributes.HTML: data Label
+ Data.GraphViz.Attributes.HTML: data Row
+ Data.GraphViz.Attributes.HTML: data Scale
+ Data.GraphViz.Attributes.HTML: data Table
+ Data.GraphViz.Attributes.HTML: data TextItem
+ Data.GraphViz.Attributes.HTML: data VAlign
+ Data.GraphViz.Attributes.HTML: instance Bounded Align
+ Data.GraphViz.Attributes.HTML: instance Bounded Format
+ Data.GraphViz.Attributes.HTML: instance Bounded Scale
+ Data.GraphViz.Attributes.HTML: instance Bounded VAlign
+ Data.GraphViz.Attributes.HTML: instance Enum Align
+ Data.GraphViz.Attributes.HTML: instance Enum Format
+ Data.GraphViz.Attributes.HTML: instance Enum Scale
+ Data.GraphViz.Attributes.HTML: instance Enum VAlign
+ Data.GraphViz.Attributes.HTML: instance Eq Align
+ Data.GraphViz.Attributes.HTML: instance Eq Attribute
+ Data.GraphViz.Attributes.HTML: instance Eq Cell
+ Data.GraphViz.Attributes.HTML: instance Eq Format
+ Data.GraphViz.Attributes.HTML: instance Eq Img
+ Data.GraphViz.Attributes.HTML: instance Eq Label
+ Data.GraphViz.Attributes.HTML: instance Eq Row
+ Data.GraphViz.Attributes.HTML: instance Eq Scale
+ Data.GraphViz.Attributes.HTML: instance Eq Table
+ Data.GraphViz.Attributes.HTML: instance Eq TextItem
+ Data.GraphViz.Attributes.HTML: instance Eq VAlign
+ Data.GraphViz.Attributes.HTML: instance Ord Align
+ Data.GraphViz.Attributes.HTML: instance Ord Attribute
+ Data.GraphViz.Attributes.HTML: instance Ord Cell
+ Data.GraphViz.Attributes.HTML: instance Ord Format
+ Data.GraphViz.Attributes.HTML: instance Ord Img
+ Data.GraphViz.Attributes.HTML: instance Ord Label
+ Data.GraphViz.Attributes.HTML: instance Ord Row
+ Data.GraphViz.Attributes.HTML: instance Ord Scale
+ Data.GraphViz.Attributes.HTML: instance Ord Table
+ Data.GraphViz.Attributes.HTML: instance Ord TextItem
+ Data.GraphViz.Attributes.HTML: instance Ord VAlign
+ Data.GraphViz.Attributes.HTML: instance ParseDot Align
+ Data.GraphViz.Attributes.HTML: instance ParseDot Attribute
+ Data.GraphViz.Attributes.HTML: instance ParseDot Cell
+ Data.GraphViz.Attributes.HTML: instance ParseDot Format
+ Data.GraphViz.Attributes.HTML: instance ParseDot Img
+ Data.GraphViz.Attributes.HTML: instance ParseDot Label
+ Data.GraphViz.Attributes.HTML: instance ParseDot Row
+ Data.GraphViz.Attributes.HTML: instance ParseDot Scale
+ Data.GraphViz.Attributes.HTML: instance ParseDot Table
+ Data.GraphViz.Attributes.HTML: instance ParseDot TextItem
+ Data.GraphViz.Attributes.HTML: instance ParseDot VAlign
+ Data.GraphViz.Attributes.HTML: instance PrintDot Align
+ Data.GraphViz.Attributes.HTML: instance PrintDot Attribute
+ Data.GraphViz.Attributes.HTML: instance PrintDot Cell
+ Data.GraphViz.Attributes.HTML: instance PrintDot Format
+ Data.GraphViz.Attributes.HTML: instance PrintDot Img
+ Data.GraphViz.Attributes.HTML: instance PrintDot Label
+ Data.GraphViz.Attributes.HTML: instance PrintDot Row
+ Data.GraphViz.Attributes.HTML: instance PrintDot Scale
+ Data.GraphViz.Attributes.HTML: instance PrintDot Table
+ Data.GraphViz.Attributes.HTML: instance PrintDot TextItem
+ Data.GraphViz.Attributes.HTML: instance PrintDot VAlign
+ Data.GraphViz.Attributes.HTML: instance Read Align
+ Data.GraphViz.Attributes.HTML: instance Read Attribute
+ Data.GraphViz.Attributes.HTML: instance Read Cell
+ Data.GraphViz.Attributes.HTML: instance Read Format
+ Data.GraphViz.Attributes.HTML: instance Read Img
+ Data.GraphViz.Attributes.HTML: instance Read Label
+ Data.GraphViz.Attributes.HTML: instance Read Row
+ Data.GraphViz.Attributes.HTML: instance Read Scale
+ Data.GraphViz.Attributes.HTML: instance Read Table
+ Data.GraphViz.Attributes.HTML: instance Read TextItem
+ Data.GraphViz.Attributes.HTML: instance Read VAlign
+ Data.GraphViz.Attributes.HTML: instance Show Align
+ Data.GraphViz.Attributes.HTML: instance Show Attribute
+ Data.GraphViz.Attributes.HTML: instance Show Cell
+ Data.GraphViz.Attributes.HTML: instance Show Format
+ Data.GraphViz.Attributes.HTML: instance Show Img
+ Data.GraphViz.Attributes.HTML: instance Show Label
+ Data.GraphViz.Attributes.HTML: instance Show Row
+ Data.GraphViz.Attributes.HTML: instance Show Scale
+ Data.GraphViz.Attributes.HTML: instance Show Table
+ Data.GraphViz.Attributes.HTML: instance Show TextItem
+ Data.GraphViz.Attributes.HTML: instance Show VAlign
+ Data.GraphViz.Attributes.HTML: newtype Img
+ Data.GraphViz.Attributes.HTML: type Attributes = [Attribute]
+ Data.GraphViz.Attributes.HTML: type Text = [TextItem]
+ Data.GraphViz.Commands: Osage :: GraphvizCommand
+ Data.GraphViz.Commands: Patchwork :: GraphvizCommand
+ Data.GraphViz.Commands: WebP :: GraphvizOutput
+ Data.GraphViz.Parsing: parseColorScheme :: Bool -> Parse ColorScheme
+ Data.GraphViz.Parsing: whitespace1 :: Parse ()
+ Data.GraphViz.Printing: printColorScheme :: Bool -> ColorScheme -> DotCode
+ Data.GraphViz.Types: class ParseDot a where parse = optionalQuoted parseUnqt parseUnqtList = bracketSep (parseAndSpace $ character '[') (wrapWhitespace parseComma `onFail` whitespace1) (whitespace >> character ']') parseUnqt parseList = quotedParse parseUnqtList
+ Data.GraphViz.Types: class PrintDot a where toDot = unqtDot unqtListToDot = list . mapM unqtDot listToDot = dquotes . unqtListToDot
+ Data.GraphViz.Types: class ToGraphID a
+ Data.GraphViz.Types: instance ToGraphID Char
+ Data.GraphViz.Types: instance ToGraphID Double
+ Data.GraphViz.Types: instance ToGraphID Int
+ Data.GraphViz.Types: instance ToGraphID Integer
+ Data.GraphViz.Types: instance ToGraphID String
+ Data.GraphViz.Types: instance ToGraphID Text
+ Data.GraphViz.Types: listToDot :: PrintDot a => [a] -> DotCode
+ Data.GraphViz.Types: parse :: ParseDot a => Parse a
+ Data.GraphViz.Types: parseList :: ParseDot a => Parse [a]
+ Data.GraphViz.Types: parseUnqt :: ParseDot a => Parse a
+ Data.GraphViz.Types: parseUnqtList :: ParseDot a => Parse [a]
+ Data.GraphViz.Types: textGraphID :: Text -> GraphID
+ Data.GraphViz.Types: toDot :: PrintDot a => a -> DotCode
+ Data.GraphViz.Types: toGraphID :: ToGraphID a => a -> GraphID
+ Data.GraphViz.Types: unqtDot :: PrintDot a => a -> DotCode
+ Data.GraphViz.Types: unqtListToDot :: PrintDot a => [a] -> DotCode
- Data.GraphViz.Attributes: bgColor :: X11Color -> Attribute
+ Data.GraphViz.Attributes: bgColor :: NamedColor nc => nc -> Attribute
- Data.GraphViz.Attributes: color :: X11Color -> Attribute
+ Data.GraphViz.Attributes: color :: NamedColor nc => nc -> Attribute
- Data.GraphViz.Attributes: fillColor :: X11Color -> Attribute
+ Data.GraphViz.Attributes: fillColor :: NamedColor nc => nc -> Attribute
- Data.GraphViz.Attributes: fontColor :: X11Color -> Attribute
+ Data.GraphViz.Attributes: fontColor :: NamedColor nc => nc -> Attribute
- Data.GraphViz.Attributes: penColor :: X11Color -> Attribute
+ Data.GraphViz.Attributes: penColor :: NamedColor nc => nc -> Attribute
- Data.GraphViz.Attributes.Colors: BrewerColor :: BrewerScheme -> Word8 -> Color
+ Data.GraphViz.Attributes.Colors: BrewerColor :: BrewerColor -> Color
- Data.GraphViz.Attributes.Complete: BgColor :: Color -> Attribute
+ Data.GraphViz.Attributes.Complete: BgColor :: [Color] -> Attribute
- Data.GraphViz.Attributes.Complete: FillColor :: Color -> Attribute
+ Data.GraphViz.Attributes.Complete: FillColor :: [Color] -> Attribute
- Data.GraphViz.Attributes.Complete: HtmlLabel :: HtmlLabel -> Label
+ Data.GraphViz.Attributes.Complete: HtmlLabel :: Label -> Label
- Data.GraphViz.Attributes.Complete: ID :: Label -> Attribute
+ Data.GraphViz.Attributes.Complete: ID :: EscString -> Attribute
- Data.GraphViz.Attributes.Complete: Ordering :: Text -> Attribute
+ Data.GraphViz.Attributes.Complete: Ordering :: Order -> Attribute
- Data.GraphViz.Attributes.HTML: HBottom :: HtmlVAlign
+ Data.GraphViz.Attributes.HTML: HBottom :: VAlign
- Data.GraphViz.Attributes.HTML: HCenter :: HtmlAlign
+ Data.GraphViz.Attributes.HTML: HCenter :: Align
- Data.GraphViz.Attributes.HTML: HLeft :: HtmlAlign
+ Data.GraphViz.Attributes.HTML: HLeft :: Align
- Data.GraphViz.Attributes.HTML: HMiddle :: HtmlVAlign
+ Data.GraphViz.Attributes.HTML: HMiddle :: VAlign
- Data.GraphViz.Attributes.HTML: HRight :: HtmlAlign
+ Data.GraphViz.Attributes.HTML: HRight :: Align
- Data.GraphViz.Attributes.HTML: HTable :: Maybe HtmlAttributes -> HtmlAttributes -> [HtmlRow] -> HtmlTable
+ Data.GraphViz.Attributes.HTML: HTable :: Maybe Attributes -> Attributes -> [Row] -> Table
- Data.GraphViz.Attributes.HTML: HText :: HtmlAlign
+ Data.GraphViz.Attributes.HTML: HText :: Align
- Data.GraphViz.Attributes.HTML: HTop :: HtmlVAlign
+ Data.GraphViz.Attributes.HTML: HTop :: VAlign
- Data.GraphViz.Attributes.HTML: tableAttrs :: HtmlTable -> HtmlAttributes
+ Data.GraphViz.Attributes.HTML: tableAttrs :: Table -> Attributes
- Data.GraphViz.Attributes.HTML: tableFontAttrs :: HtmlTable -> Maybe HtmlAttributes
+ Data.GraphViz.Attributes.HTML: tableFontAttrs :: Table -> Maybe Attributes
- Data.GraphViz.Attributes.HTML: tableRows :: HtmlTable -> [HtmlRow]
+ Data.GraphViz.Attributes.HTML: tableRows :: Table -> [Row]
- Data.GraphViz.Parsing: class ParseDot a
+ Data.GraphViz.Parsing: class ParseDot a where parse = optionalQuoted parseUnqt parseUnqtList = bracketSep (parseAndSpace $ character '[') (wrapWhitespace parseComma `onFail` whitespace1) (whitespace >> character ']') parseUnqt parseList = quotedParse parseUnqtList
- Data.GraphViz.Printing: class PrintDot a
+ Data.GraphViz.Printing: class PrintDot a where toDot = unqtDot unqtListToDot = list . mapM unqtDot listToDot = dquotes . unqtListToDot
Files
- Changelog +85/−5
- Data/GraphViz/Algorithms.hs +34/−9
- Data/GraphViz/Attributes.hs +104/−24
- Data/GraphViz/Attributes/ColorScheme.hs +2/−1
- Data/GraphViz/Attributes/Colors.hs +262/−2515
- Data/GraphViz/Attributes/Colors/Brewer.hs +52/−0
- Data/GraphViz/Attributes/Colors/SVG.hs +609/−0
- Data/GraphViz/Attributes/Colors/X11.hs +2354/−0
- Data/GraphViz/Attributes/Complete.hs +265/−123
- Data/GraphViz/Attributes/HTML.hs +293/−247
- Data/GraphViz/Commands.hs +23/−13
- Data/GraphViz/Commands/IO.hs +1/−1
- Data/GraphViz/Exception.hs +1/−1
- Data/GraphViz/Parsing.hs +25/−27
- Data/GraphViz/PreProcessing.hs +1/−1
- Data/GraphViz/Printing.hs +10/−6
- Data/GraphViz/State.hs +43/−8
- Data/GraphViz/Testing.hs +0/−382
- Data/GraphViz/Testing/Instances.hs +0/−27
- Data/GraphViz/Testing/Instances/Attributes.hs +0/−897
- Data/GraphViz/Testing/Instances/Canonical.hs +0/−57
- Data/GraphViz/Testing/Instances/Common.hs +0/−71
- Data/GraphViz/Testing/Instances/FGL.hs +0/−47
- Data/GraphViz/Testing/Instances/Generalised.hs +0/−77
- Data/GraphViz/Testing/Instances/Graph.hs +0/−31
- Data/GraphViz/Testing/Instances/Helpers.hs +0/−138
- Data/GraphViz/Testing/Properties.hs +0/−181
- Data/GraphViz/Types.hs +42/−3
- Data/GraphViz/Types/Canonical.hs +17/−7
- Data/GraphViz/Types/Common.hs +97/−58
- Data/GraphViz/Types/Generalised.hs +16/−7
- Data/GraphViz/Types/Graph.hs +8/−6
- FAQ +59/−91
- LICENSE +1/−1
- README +1/−2
- RunTests.hs +0/−83
- TODO +3/−7
- graphviz.cabal +66/−29
- tests/Data/GraphViz/Testing.hs +383/−0
- tests/Data/GraphViz/Testing/Instances.hs +27/−0
- tests/Data/GraphViz/Testing/Instances/Attributes.hs +960/−0
- tests/Data/GraphViz/Testing/Instances/Canonical.hs +57/−0
- tests/Data/GraphViz/Testing/Instances/Common.hs +71/−0
- tests/Data/GraphViz/Testing/Instances/FGL.hs +47/−0
- tests/Data/GraphViz/Testing/Instances/Generalised.hs +77/−0
- tests/Data/GraphViz/Testing/Instances/Graph.hs +31/−0
- tests/Data/GraphViz/Testing/Instances/Helpers.hs +138/−0
- tests/Data/GraphViz/Testing/Properties.hs +181/−0
- tests/RunTests.hs +83/−0
- utils/AttributeGenerator.hs +30/−19
- utils/Benchmark.hs +38/−0
- utils/TestParsing.hs +28/−25
Changelog view
@@ -1,4 +1,4 @@-% graphviz - Changelog+% Changelog % Ivan Lazar Miljenovic Release History and Changelog@@ -10,11 +10,91 @@ Changes in 2999.13.0.0 ---------------------- -* Added support for the `osage` and `patchwork` visualisation tools.+* Added support for the `osage` and `patchwork` visualisation tools,+ available as of Graphviz-2.28.0. -* Now uses Dot semantics as of Graphviz-2.28.0. The only change is- when parsing the Attribute `overlap=false`; this is now equivalent- to `overlap=prism`.+* Updated attributes as of Graphviz-2.28.0:++ - `SVG` colors are now supported, and the support for different+ colors has been revamped.++ - `overlap=false` is now equivalent to `overlap=prism` and the+ `RemoveOverlaps` option has been removed.++ - `LabelScheme` and `Rotation` are new attributes for use with+ `sfdp`.++ - `Scale` is a new attribute for use with `twopi`.++ - Add new italics, bold, underline, superscript and subscript+ options for HTML-like labels.++ - `LHeight` and `LWidth` for getting the height and width of the+ root graph and clusters.++* Updated attributes from the current development branch of Graphviz+ (i.e. 2.29.*). Please note that these will probably not work yet,+ but are implemented now for future-proofing.++ - A new style for edges: `Tapered`.++ - `XLabel` allows you to specify labels external to a node or+ edge. `ForceLabels` allow you to specify that these should be+ drawn even when they will cause overlaps.++ - `ImagePath` allows you to specify where to search for images.++ - HTML-like labels now support `ID` values as well as horizontal+ and vertical rules.++ - `BgColor` and `FillColor` now take a list of colors: this allows+ gradient fills for graphs, clusters and nodes. The `Radial`+ style and `GradientAngle` are also used for this purpose.++ - `FillColor` is now used by edges to set the color of any arrows.++ - [WebP](http://en.wikipedia.org/wiki/WebP) output support added.++* Other attribute changes:++ - Use a specified data type for the `Ordering` attribute rather+ than an arbitrary `Text` value, and provide a documented wrapper+ in `Data.GraphViz.Attributes`.++ - `Bb` has been renamed `BoundingBox`.++ - `ID` now only takes `EscString` (a type alias for `Text`) values+ rather than arbitrary `Label`s.++ - The `Data.GraphViz.Attributes.HTML` module has had all values+ re-named and is now meant to be imported qualified. It is also+ no longer re-exported from `Data.GraphViz.Attributes.Complete`.++* The `ToGraphID` class provides a common wrapper to help create+ cluster identifiers, etc.++* Cabal's `Test-Suite` functionality is now used. As part of this,+ the `Data.GraphViz.Testing` module and sub-modules are no longer+ exported by the library.++* The new `Benchmark` support in Cabal-1.14 is now used for the+ benchmark script.++* Dropped support for base-3.++* The `Data.GraphViz.State` module is no longer exposed, as there's no+ need for users to use it.++* Bugfixes:++ - Some corner cases in canonicalisation prevented it from being+ idempotent.++ - The `TestParsing` script will no longer crash and refuse to+ continue if an IO-based error (e.g. unable to successfully call+ `dot`) occurs.++ - A typo was spotted by **Gabor Greif**. Changes in 2999.12.0.4 ----------------------
Data/GraphViz/Algorithms.hs view
@@ -118,11 +118,16 @@ , EdgeAttrs topEAs ] nUnlook (n,(p,as)) = (F.toList p, DotNode n as)+ -- DotNodes paired and sorted by their paths ns = sortBy (compLists `on` fst) . map nUnlook $ Map.toList nl+ -- nodes in clusters vs top-level (clustNs, topNs) = thisLevel ns+ -- edges in clusters vs top-level (clustEL, topEs) = if edgesInClusters opts then edgeClusters nl es else (Map.empty, es)++ -- The global attributes that are also applicable to clusters. topClustAs = filter usedByClusters $ attrs gas topClustAs' = toSAttr topClustAs @@ -140,41 +145,62 @@ . groupBy ((==) `on` (listToMaybe . fst)) -- Create a new cluster.+ -- oAs - outer cluster attributes+ -- nAs - outer node attributes+ -- eAs - outer edge attributes+ -- (*S variants are same thing but as sets; premature optimisation?)+ -- cns - nodes in this cluster toClust oAs oAsS nAs nAsS eAs eAsS cns = DotSG { isCluster = True , subGraphID = cID , subGraphStmts = stmts } where+ -- Find the ID for this cluster. cID = head . fst $ head cns++ -- Get the nodes that are deeper and the ones that belong+ -- here. (nested, here) = thisLevel $ map (first tail) cns++ stmts = DotStmts { attrStmts = sgAs , subGraphs = subSGs , nodeStmts = here' , edgeStmts = edges' } + -- Starting global attributes sgAs = nonEmptyGAs [ GraphAttrs as' , NodeAttrs nas' , EdgeAttrs eas' ] + -- Sub-clusters subSGs = clusts as asS nas nasS eas easS nested + -- The attributes attached to this cluster ID in the original. as = attrs . snd $ cl Map.! cID asS = toSAttr as- as' = innerAttributes oAs oAsS as + -- Get the global attributes that apply to this cluster,+ -- ignoring ones set globally.+ as' = fst $ innerAttributes oAs oAsS as++ -- The node attributes that can be stated globally. nas = mCommon nodeAttributes here nasS = toSAttr nas- nas' = innerAttributes nAs nAsS nas- here' = map (\dn -> dn {nodeAttributes = nodeAttributes dn \\ nas}) here+ (nas',nOv) = innerAttributes nAs nAsS nas + -- The nodes that belong here, with updated attributes.+ here' = map (\dn -> dn {nodeAttributes = nodeAttributes dn \\ (nas ++ nOv)}) here+ eas = mCommon edgeAttributes edges easS = toSAttr eas- eas' = innerAttributes eAs eAsS eas- edges' = map (\de -> de {edgeAttributes = edgeAttributes de \\ eas}) edges+ (eas',eOv) = innerAttributes eAs eAsS eas+ edges' = map (\de -> de {edgeAttributes = edgeAttributes de \\ (eas ++ eOv)}) edges + -- Find edges that belong here edges = fromMaybe [] $ cID `Map.lookup` clustEL thisLevel = second (map snd) . span (not . null . fst)@@ -218,10 +244,10 @@ . map (last *** DList.singleton) -- Return only those attributes that are required within the inner--- sub-graph.+-- sub-graph. Also returns the overrides. innerAttributes :: Attributes -> SAttrs- -> Attributes -> Attributes-innerAttributes outer outerS inner = sort $ inner' ++ override+ -> Attributes -> (Attributes, Attributes)+innerAttributes outer outerS inner = (sort $ inner' ++ override, override) where -- Remove all Attributes that are also defined in the outer cluster inner' = inner \\ outer@@ -391,4 +417,3 @@ let n' = toNode e unless (isMarked m n' || t' `Set.member` delSet) $ traverse t' n'-
Data/GraphViz/Attributes.hs view
@@ -25,19 +25,25 @@ -- $labels , toLabel , textLabel+ , xLabel+ , xTextLabel+ , forceLabels , textLabelValue , Labellable(..) -- * Colors -- $colors , X11Color(..) , bgColor+ , bgColors , fillColor+ , fillColors , fontColor , penColor , color -- * Stylistic attributes -- $styles , penWidth+ , gradientAngle , style , styles , Style@@ -49,6 +55,8 @@ , filled , diagonals , rounded+ , tapered+ , radial -- * Node shapes , shape , Shape(..)@@ -76,9 +84,16 @@ , invODot , oBox , oDiamond+ -- * Layout+ , ordering+ , Order(..)+ , rank+ , RankType(..) ) where import Data.GraphViz.Attributes.Complete+import Data.GraphViz.Attributes.Colors.X11+import qualified Data.GraphViz.Attributes.HTML as Html import qualified Data.Text.Lazy as T import Data.Text.Lazy(Text)@@ -124,12 +139,25 @@ toLabel :: (Labellable a) => a -> Attribute toLabel = Label . toLabelValue --- | An alias for 'toLabel' for use with the OverloadedStrings+-- | An alias for 'toLabel' for use with the @OverloadedStrings@ -- extension. textLabel :: Text -> Attribute textLabel = toLabel --- | An alias for 'toLabelValue' for use with the OverloadedStrings+-- | Create a label /outside/ of a node\/edge. Currently only in the+-- | Graphviz development branch (2.29.*).+xLabel :: (Labellable a) => a -> Attribute+xLabel = XLabel . toLabelValue++-- | An alias for 'xLabel' for use with the @OverloadedStrings@ extension.+xTextLabel :: Text -> Attribute+xTextLabel = xLabel++-- | Force the positioning of 'xLabel's, even when it will cause overlaps.+forceLabels :: Attribute+forceLabels = ForceLabels True++-- | An alias for 'toLabelValue' for use with the @OverloadedStrings@ -- extension. textLabelValue :: Text -> Label textLabelValue = toLabelValue@@ -152,14 +180,14 @@ instance Labellable Bool where toLabelValue = toLabelValue . show -instance Labellable HtmlLabel where+instance Labellable Html.Label where toLabelValue = HtmlLabel -instance Labellable HtmlText where- toLabelValue = toLabelValue . HtmlText+instance Labellable Html.Text where+ toLabelValue = toLabelValue . Html.Text -instance Labellable HtmlTable where- toLabelValue = toLabelValue . HtmlTable+instance Labellable Html.Table where+ toLabelValue = toLabelValue . Html.Table instance Labellable RecordFields where toLabelValue = RecordLabel@@ -180,27 +208,46 @@ {- $colors The recommended way of dealing with colors in Dot graphs is to use the- named 'X11Colors' rather than explicitly specifying RGB, RGBA or HSV+ named 'X11Color's rather than explicitly specifying RGB, RGBA or HSV colors. + These functions also allow you to use SVG and Brewer colors, but+ X11 colors are generally preferable. If you wish to use SVG+ colors, either import this module hiding 'X11Color' or import the+ SVG module qualified.+ -} --- | Specify the background color of a graph or cluster. Requires--- @'style' 'filled'@.-bgColor :: X11Color -> Attribute-bgColor = BgColor . X11Color+-- | Specify the background color of a graph or cluster. For+-- clusters, if @'style' 'filled'@ is used, then 'fillColor' will+-- override it.+bgColor :: (NamedColor nc) => nc -> Attribute+bgColor = BgColor . (:[]) . toColor --- | Specify the fill color of a node. Requires @'style' 'filled'@.-fillColor :: X11Color -> Attribute-fillColor = FillColor . X11Color+-- | As with 'bgColor', but add a second color to create a gradient+-- effect. Requires Graphviz >= 2.29.0.+bgColors :: (NamedColor nc) => nc -> nc -> Attribute+bgColors c1 c2 = BgColor $ map toColor [c1,c2] +-- | Specify the fill color of a node, cluster or arrowhead. Requires+-- @'style' 'filled'@ for nodes and clusters. For nodes and edges,+-- if this isn't set then the 'color' value is used instead; for+-- clusters, 'bgColor' is used.+fillColor :: (NamedColor nc) => nc -> Attribute+fillColor = FillColor . (:[]) . toColor++-- | As with 'fillColor', but add a second color to create a gradient+-- effect. Requires Graphviz >= 2.29.0.+fillColors :: (NamedColor nc) => nc -> nc -> Attribute+fillColors c1 c2 = FillColor $ map toColor [c1,c2]+ -- | Specify the color of text.-fontColor :: X11Color -> Attribute-fontColor = FontColor . X11Color+fontColor :: (NamedColor nc) => nc -> Attribute+fontColor = FontColor . toColor -- | Specify the color of the bounding box of a cluster.-penColor :: X11Color -> Attribute-penColor = PenColor . X11Color+penColor :: (NamedColor nc) => nc -> Attribute+penColor = PenColor . toColor -- | The @color@ attribute serves several purposes. As such care must -- be taken when using it, and it is preferable to use those@@ -215,16 +262,16 @@ -- * If the 'filled' 'Style' is set, then it defines the -- background color of nodes and clusters unless 'fillColor' or -- 'bgColor' respectively is set.-color :: X11Color -> Attribute-color = Color . (:[]) . X11Color+color :: (NamedColor nc) => nc -> Attribute+color = Color . (:[]) . toColor -- ----------------------------------------------------------------------------- {- $styles - Various stylistic attributes to customise how items are drawn. All- 'Style's are available for nodes; those specified also can be used- for edges and clusters.+ Various stylistic attributes to customise how items are drawn.+ Unless specified otherwise, all 'Style's are available for nodes;+ those specified also can be used for edges and clusters. -} @@ -269,10 +316,26 @@ diagonals :: Style diagonals = SItem Diagonals [] +-- | Only available for edges; creates a tapered edge between the two+-- nodes. Requires Graphviz >= 2.29.0.+tapered :: Style+tapered = SItem Tapered []++-- | Available for nodes, clusters and edges. When using+-- 'gradientAngle', indicates that a radial gradient should be used.+-- Requires Graphviz >= 2.29.0.+radial :: Style+radial = SItem Radial []+ -- | Specify the width of lines. Valid for clusters, nodes and edges. penWidth :: Double -> Attribute penWidth = PenWidth +-- | Specify the angle at which gradient fills are drawn; for use with+-- 'bgColors' and 'fillColors'. Requires Graphviz >= 2.29.0.+gradientAngle :: Int -> Attribute+gradientAngle = GradientAngle+ -- ----------------------------------------------------------------------------- -- | The shape of a node.@@ -320,3 +383,20 @@ vee = AType [(noMods, Vee)] -- -----------------------------------------------------------------------------++-- | Specify an ordering of edges of a node: either the outgoing or+-- the incoming edges of a node must appear left-to-right in the+-- same order in which they are defined in the input.+--+-- When specified as both a global graph or sub-graph level+-- attribute, then it takes precedence over an attribute specified+-- for an individual node.+ordering :: Order -> Attribute+ordering = Ordering++-- -----------------------------------------------------------------------------++-- | When using @dot@, this allows you to control relative placement+-- of sub-graphs and clusters.+rank :: RankType -> Attribute+rank = Rank
Data/GraphViz/Attributes/ColorScheme.hs view
@@ -18,10 +18,11 @@ -- | This represents the color schemes that Graphviz accepts. data ColorScheme = X11+ | SVG | Brewer BrewerScheme deriving (Eq, Ord, Show, Read) --- | Specify which colour pallete and how many colours it has. Note+-- | Specify which colour palette and how many colours it has. Note -- the allowed values for the different 'BrewerName's. data BrewerScheme = BScheme BrewerName Word8 deriving (Eq, Ord, Show, Read)
Data/GraphViz/Attributes/Colors.hs view
@@ -22,2521 +22,268 @@ module Data.GraphViz.Attributes.Colors ( -- * Color schemes. ColorScheme(..)- , BrewerScheme(..)- , BrewerName(..)- -- * Colors- , Color(..)- , X11Color(..)- -- * Conversion to\/from @Colour@.- , toColour- , x11Colour- , fromColour- , fromAColour- ) where--import Data.GraphViz.Parsing-import Data.GraphViz.Printing-import Data.GraphViz.State-import Data.GraphViz.Attributes.ColorScheme-import Data.GraphViz.Util(bool)-import Data.GraphViz.Exception--import Data.Colour( AlphaColour, opaque, transparent, withOpacity- , over, black, alphaChannel, darken)-import Data.Colour.SRGB(Colour, sRGB, sRGB24, toSRGB24)-import Data.Colour.RGBSpace(uncurryRGB)-import Data.Colour.RGBSpace.HSV(hsv)--import Data.Char(isHexDigit)-import Numeric(showHex, readHex)-import Data.Word(Word8)-import qualified Data.Text.Lazy as T-import Control.Monad(liftM)---- --------------------------------------------------------------------------------- | Defining a color for use with Graphviz. Note that named colors--- have been split up into 'X11Color's and those based upon the--- Brewer color schemes.-data Color = RGB { red :: Word8- , green :: Word8- , blue :: Word8- }- | RGBA { red :: Word8- , green :: Word8- , blue :: Word8- , alpha :: Word8- }- -- | The 'hue', 'saturation' and 'value' values must all- -- be @0 <= x <=1@.- | HSV { hue :: Double- , saturation :: Double- , value :: Double- }- | X11Color X11Color- | BrewerColor BrewerScheme Word8 -- ^ This value should be- -- between @1@ and the- -- level of the- -- 'BrewerScheme' being- -- used.- deriving (Eq, Ord, Show, Read)--instance PrintDot Color where- unqtDot (RGB r g b) = hexColor [r,g,b]- unqtDot (RGBA r g b a) = hexColor [r,g,b,a]- unqtDot (HSV h s v) = hcat . punctuate comma $ mapM unqtDot [h,s,v]- unqtDot (X11Color name) = unqtDot name- unqtDot (BrewerColor bs n) = printBrewerColor False bs n-- toDot (X11Color name) = toDot name- toDot (BrewerColor bs n) = printBrewerColor True bs n- toDot c = dquotes $ unqtDot c-- unqtListToDot = hcat . punctuate colon . mapM unqtDot-- -- These two don't need to be quoted if they're on their own.- listToDot [X11Color name] = toDot name- listToDot [BrewerColor bs n] = printBrewerColor True bs n- listToDot cs = dquotes $ unqtListToDot cs--hexColor :: [Word8] -> DotCode-hexColor = (<>) (char '#') . hcat . mapM word8Doc--word8Doc :: Word8 -> DotCode-word8Doc w = text $ padding `T.append` simple- where- simple = T.pack $ showHex w ""- padding = T.replicate count (T.singleton '0')- count = 2 - findCols 1 w- findCols c n- | n < 16 = c- | otherwise = findCols (c+1) (n `div` 16)--instance ParseDot Color where- parseUnqt = oneOf [ parseHexBased- , parseHSV- -- Have to parse BrewerColor first, as some of them may appear to be X11 colors- , liftM (uncurry BrewerColor) $ parseBrewerColor False- , liftM X11Color $ parseX11Color False- ]- where- parseHexBased- = do character '#'- cs <- many1 parse2Hex- return $ case cs of- [r,g,b] -> RGB r g b- [r,g,b,a] -> RGBA r g b a- _ -> throw . NotDotCode- $ "Not a valid hex Color specification: "- ++ show cs- parseHSV = do h <- parse- parseSep- s <- parse- parseSep- v <- parse- return $ HSV h s v- parseSep = oneOf [ string ","- , whitespace- ]- parse2Hex = do c1 <- satisfy isHexDigit- c2 <- satisfy isHexDigit- let [(n, [])] = readHex [c1, c2]- return n-- parse = quotedParse parseUnqt- `onFail` -- These two might not need to be quoted- oneOf [ liftM X11Color parseUnqt- , do Brewer bc <- getColorScheme- liftM (BrewerColor bc) parseUnqt- ]-- parseUnqtList = sepBy1 parseUnqt (character ':')-- parseList = liftM (:[])- -- Unquoted single color- (oneOf [ liftM X11Color parseUnqt- , do Brewer bc <- getColorScheme- liftM (BrewerColor bc) parseUnqt- ]- )- `onFail`- quotedParse parseUnqtList--printBrewerColor :: Bool -> BrewerScheme -> Word8 -> DotCode-printBrewerColor q bs l = do cs <- getColorScheme- case cs of- Brewer bs'- | bs == bs' -> unqtDot l- _ -> addQ $ fslash <> unqtDot bs- <> fslash <> unqtDot l- where- addQ = bool id dquotes q--parseBrewerColor :: Bool -> Parse (BrewerScheme, Word8)-parseBrewerColor q = do Brewer bs <- getColorScheme- optional $ stringRep () "//"- liftM ((,) bs) $ bool parseUnqt parse q- `onFail`- bool id quotedParse q ( do character '/'- bs <- parseUnqt- character '/'- l <- parseUnqt- return (bs,l)- )---- --------------------------------------------------------------------------------- | Covers the four cases:------ * yyyy--- * /yyyy--- * /X11/yyyy--- * //yyyy----parseX11Color :: Bool -> Parse X11Color-parseX11Color q = bool parseUnqt parse q- `onFail`- bool id quotedParse q- ( do character '/'- optional $ do optional $ do X11 <- parseUnqt- return ()- character '/'- parseUnqt- )---- | The X11 colors that Graphviz uses. Note that these are slightly--- different from the \"normal\" X11 colors used (e.g. the inclusion--- of @Crimson@). Graphviz's list of colors also duplicated almost--- all @Gray@ colors with @Grey@ ones; parsing of an 'X11Color'--- which is specified using \"grey\" will succeed, even for those--- that don't have the duplicate spelling (e.g. @DarkSlateGray1@).-data X11Color = AliceBlue- | AntiqueWhite- | AntiqueWhite1- | AntiqueWhite2- | AntiqueWhite3- | AntiqueWhite4- | Aquamarine- | Aquamarine1- | Aquamarine2- | Aquamarine3- | Aquamarine4- | Azure- | Azure1- | Azure2- | Azure3- | Azure4- | Beige- | Bisque- | Bisque1- | Bisque2- | Bisque3- | Bisque4- | Black- | BlanchedAlmond- | Blue- | Blue1- | Blue2- | Blue3- | Blue4- | BlueViolet- | Brown- | Brown1- | Brown2- | Brown3- | Brown4- | Burlywood- | Burlywood1- | Burlywood2- | Burlywood3- | Burlywood4- | CadetBlue- | CadetBlue1- | CadetBlue2- | CadetBlue3- | CadetBlue4- | Chartreuse- | Chartreuse1- | Chartreuse2- | Chartreuse3- | Chartreuse4- | Chocolate- | Chocolate1- | Chocolate2- | Chocolate3- | Chocolate4- | Coral- | Coral1- | Coral2- | Coral3- | Coral4- | CornFlowerBlue- | CornSilk- | CornSilk1- | CornSilk2- | CornSilk3- | CornSilk4- | Crimson- | Cyan- | Cyan1- | Cyan2- | Cyan3- | Cyan4- | DarkGoldenrod- | DarkGoldenrod1- | DarkGoldenrod2- | DarkGoldenrod3- | DarkGoldenrod4- | DarkGreen- | Darkkhaki- | DarkOliveGreen- | DarkOliveGreen1- | DarkOliveGreen2- | DarkOliveGreen3- | DarkOliveGreen4- | DarkOrange- | DarkOrange1- | DarkOrange2- | DarkOrange3- | DarkOrange4- | DarkOrchid- | DarkOrchid1- | DarkOrchid2- | DarkOrchid3- | DarkOrchid4- | DarkSalmon- | DarkSeaGreen- | DarkSeaGreen1- | DarkSeaGreen2- | DarkSeaGreen3- | DarkSeaGreen4- | DarkSlateBlue- | DarkSlateGray- | DarkSlateGray1- | DarkSlateGray2- | DarkSlateGray3- | DarkSlateGray4- | DarkTurquoise- | DarkViolet- | DeepPink- | DeepPink1- | DeepPink2- | DeepPink3- | DeepPink4- | DeepSkyBlue- | DeepSkyBlue1- | DeepSkyBlue2- | DeepSkyBlue3- | DeepSkyBlue4- | DimGray- | DodgerBlue- | DodgerBlue1- | DodgerBlue2- | DodgerBlue3- | DodgerBlue4- | Firebrick- | Firebrick1- | Firebrick2- | Firebrick3- | Firebrick4- | FloralWhite- | ForestGreen- | Gainsboro- | GhostWhite- | Gold- | Gold1- | Gold2- | Gold3- | Gold4- | Goldenrod- | Goldenrod1- | Goldenrod2- | Goldenrod3- | Goldenrod4- | Gray- | Gray0- | Gray1- | Gray2- | Gray3- | Gray4- | Gray5- | Gray6- | Gray7- | Gray8- | Gray9- | Gray10- | Gray11- | Gray12- | Gray13- | Gray14- | Gray15- | Gray16- | Gray17- | Gray18- | Gray19- | Gray20- | Gray21- | Gray22- | Gray23- | Gray24- | Gray25- | Gray26- | Gray27- | Gray28- | Gray29- | Gray30- | Gray31- | Gray32- | Gray33- | Gray34- | Gray35- | Gray36- | Gray37- | Gray38- | Gray39- | Gray40- | Gray41- | Gray42- | Gray43- | Gray44- | Gray45- | Gray46- | Gray47- | Gray48- | Gray49- | Gray50- | Gray51- | Gray52- | Gray53- | Gray54- | Gray55- | Gray56- | Gray57- | Gray58- | Gray59- | Gray60- | Gray61- | Gray62- | Gray63- | Gray64- | Gray65- | Gray66- | Gray67- | Gray68- | Gray69- | Gray70- | Gray71- | Gray72- | Gray73- | Gray74- | Gray75- | Gray76- | Gray77- | Gray78- | Gray79- | Gray80- | Gray81- | Gray82- | Gray83- | Gray84- | Gray85- | Gray86- | Gray87- | Gray88- | Gray89- | Gray90- | Gray91- | Gray92- | Gray93- | Gray94- | Gray95- | Gray96- | Gray97- | Gray98- | Gray99- | Gray100- | Green- | Green1- | Green2- | Green3- | Green4- | GreenYellow- | HoneyDew- | HoneyDew1- | HoneyDew2- | HoneyDew3- | HoneyDew4- | HotPink- | HotPink1- | HotPink2- | HotPink3- | HotPink4- | IndianRed- | IndianRed1- | IndianRed2- | IndianRed3- | IndianRed4- | Indigo- | Ivory- | Ivory1- | Ivory2- | Ivory3- | Ivory4- | Khaki- | Khaki1- | Khaki2- | Khaki3- | Khaki4- | Lavender- | LavenderBlush- | LavenderBlush1- | LavenderBlush2- | LavenderBlush3- | LavenderBlush4- | LawnGreen- | LemonChiffon- | LemonChiffon1- | LemonChiffon2- | LemonChiffon3- | LemonChiffon4- | LightBlue- | LightBlue1- | LightBlue2- | LightBlue3- | LightBlue4- | LightCoral- | LightCyan- | LightCyan1- | LightCyan2- | LightCyan3- | LightCyan4- | LightGoldenrod- | LightGoldenrod1- | LightGoldenrod2- | LightGoldenrod3- | LightGoldenrod4- | LightGoldenrodYellow- | LightGray- | LightPink- | LightPink1- | LightPink2- | LightPink3- | LightPink4- | LightSalmon- | LightSalmon1- | LightSalmon2- | LightSalmon3- | LightSalmon4- | LightSeaGreen- | LightSkyBlue- | LightSkyBlue1- | LightSkyBlue2- | LightSkyBlue3- | LightSkyBlue4- | LightSlateBlue- | LightSlateGray- | LightSteelBlue- | LightSteelBlue1- | LightSteelBlue2- | LightSteelBlue3- | LightSteelBlue4- | LightYellow- | LightYellow1- | LightYellow2- | LightYellow3- | LightYellow4- | LimeGreen- | Linen- | Magenta- | Magenta1- | Magenta2- | Magenta3- | Magenta4- | Maroon- | Maroon1- | Maroon2- | Maroon3- | Maroon4- | MediumAquamarine- | MediumBlue- | MediumOrchid- | MediumOrchid1- | MediumOrchid2- | MediumOrchid3- | MediumOrchid4- | MediumPurple- | MediumPurple1- | MediumPurple2- | MediumPurple3- | MediumPurple4- | MediumSeaGreen- | MediumSlateBlue- | MediumSpringGreen- | MediumTurquoise- | MediumVioletRed- | MidnightBlue- | MintCream- | MistyRose- | MistyRose1- | MistyRose2- | MistyRose3- | MistyRose4- | Moccasin- | NavajoWhite- | NavajoWhite1- | NavajoWhite2- | NavajoWhite3- | NavajoWhite4- | Navy- | NavyBlue- | OldLace- | OliveDrab- | OliveDrab1- | OliveDrab2- | OliveDrab3- | OliveDrab4- | Orange- | Orange1- | Orange2- | Orange3- | Orange4- | OrangeRed- | OrangeRed1- | OrangeRed2- | OrangeRed3- | OrangeRed4- | Orchid- | Orchid1- | Orchid2- | Orchid3- | Orchid4- | PaleGoldenrod- | PaleGreen- | PaleGreen1- | PaleGreen2- | PaleGreen3- | PaleGreen4- | PaleTurquoise- | PaleTurquoise1- | PaleTurquoise2- | PaleTurquoise3- | PaleTurquoise4- | PaleVioletRed- | PaleVioletRed1- | PaleVioletRed2- | PaleVioletRed3- | PaleVioletRed4- | PapayaWhip- | PeachPuff- | PeachPuff1- | PeachPuff2- | PeachPuff3- | PeachPuff4- | Peru- | Pink- | Pink1- | Pink2- | Pink3- | Pink4- | Plum- | Plum1- | Plum2- | Plum3- | Plum4- | PowderBlue- | Purple- | Purple1- | Purple2- | Purple3- | Purple4- | Red- | Red1- | Red2- | Red3- | Red4- | RosyBrown- | RosyBrown1- | RosyBrown2- | RosyBrown3- | RosyBrown4- | RoyalBlue- | RoyalBlue1- | RoyalBlue2- | RoyalBlue3- | RoyalBlue4- | SaddleBrown- | Salmon- | Salmon1- | Salmon2- | Salmon3- | Salmon4- | SandyBrown- | SeaGreen- | SeaGreen1- | SeaGreen2- | SeaGreen3- | SeaGreen4- | SeaShell- | SeaShell1- | SeaShell2- | SeaShell3- | SeaShell4- | Sienna- | Sienna1- | Sienna2- | Sienna3- | Sienna4- | SkyBlue- | SkyBlue1- | SkyBlue2- | SkyBlue3- | SkyBlue4- | SlateBlue- | SlateBlue1- | SlateBlue2- | SlateBlue3- | SlateBlue4- | SlateGray- | SlateGray1- | SlateGray2- | SlateGray3- | SlateGray4- | Snow- | Snow1- | Snow2- | Snow3- | Snow4- | SpringGreen- | SpringGreen1- | SpringGreen2- | SpringGreen3- | SpringGreen4- | SteelBlue- | SteelBlue1- | SteelBlue2- | SteelBlue3- | SteelBlue4- | Tan- | Tan1- | Tan2- | Tan3- | Tan4- | Thistle- | Thistle1- | Thistle2- | Thistle3- | Thistle4- | Tomato- | Tomato1- | Tomato2- | Tomato3- | Tomato4- | Transparent -- ^ Equivalent to setting @Style [SItem Invisible []]@.- | Turquoise- | Turquoise1- | Turquoise2- | Turquoise3- | Turquoise4- | Violet- | VioletRed- | VioletRed1- | VioletRed2- | VioletRed3- | VioletRed4- | Wheat- | Wheat1- | Wheat2- | Wheat3- | Wheat4- | White- | WhiteSmoke- | Yellow- | Yellow1- | Yellow2- | Yellow3- | Yellow4- | YellowGreen- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot X11Color where- unqtDot AliceBlue = unqtText "aliceblue"- unqtDot AntiqueWhite = unqtText "antiquewhite"- unqtDot AntiqueWhite1 = unqtText "antiquewhite1"- unqtDot AntiqueWhite2 = unqtText "antiquewhite2"- unqtDot AntiqueWhite3 = unqtText "antiquewhite3"- unqtDot AntiqueWhite4 = unqtText "antiquewhite4"- unqtDot Aquamarine = unqtText "aquamarine"- unqtDot Aquamarine1 = unqtText "aquamarine1"- unqtDot Aquamarine2 = unqtText "aquamarine2"- unqtDot Aquamarine3 = unqtText "aquamarine3"- unqtDot Aquamarine4 = unqtText "aquamarine4"- unqtDot Azure = unqtText "azure"- unqtDot Azure1 = unqtText "azure1"- unqtDot Azure2 = unqtText "azure2"- unqtDot Azure3 = unqtText "azure3"- unqtDot Azure4 = unqtText "azure4"- unqtDot Beige = unqtText "beige"- unqtDot Bisque = unqtText "bisque"- unqtDot Bisque1 = unqtText "bisque1"- unqtDot Bisque2 = unqtText "bisque2"- unqtDot Bisque3 = unqtText "bisque3"- unqtDot Bisque4 = unqtText "bisque4"- unqtDot Black = unqtText "black"- unqtDot BlanchedAlmond = unqtText "blanchedalmond"- unqtDot Blue = unqtText "blue"- unqtDot Blue1 = unqtText "blue1"- unqtDot Blue2 = unqtText "blue2"- unqtDot Blue3 = unqtText "blue3"- unqtDot Blue4 = unqtText "blue4"- unqtDot BlueViolet = unqtText "blueviolet"- unqtDot Brown = unqtText "brown"- unqtDot Brown1 = unqtText "brown1"- unqtDot Brown2 = unqtText "brown2"- unqtDot Brown3 = unqtText "brown3"- unqtDot Brown4 = unqtText "brown4"- unqtDot Burlywood = unqtText "burlywood"- unqtDot Burlywood1 = unqtText "burlywood1"- unqtDot Burlywood2 = unqtText "burlywood2"- unqtDot Burlywood3 = unqtText "burlywood3"- unqtDot Burlywood4 = unqtText "burlywood4"- unqtDot CadetBlue = unqtText "cadetblue"- unqtDot CadetBlue1 = unqtText "cadetblue1"- unqtDot CadetBlue2 = unqtText "cadetblue2"- unqtDot CadetBlue3 = unqtText "cadetblue3"- unqtDot CadetBlue4 = unqtText "cadetblue4"- unqtDot Chartreuse = unqtText "chartreuse"- unqtDot Chartreuse1 = unqtText "chartreuse1"- unqtDot Chartreuse2 = unqtText "chartreuse2"- unqtDot Chartreuse3 = unqtText "chartreuse3"- unqtDot Chartreuse4 = unqtText "chartreuse4"- unqtDot Chocolate = unqtText "chocolate"- unqtDot Chocolate1 = unqtText "chocolate1"- unqtDot Chocolate2 = unqtText "chocolate2"- unqtDot Chocolate3 = unqtText "chocolate3"- unqtDot Chocolate4 = unqtText "chocolate4"- unqtDot Coral = unqtText "coral"- unqtDot Coral1 = unqtText "coral1"- unqtDot Coral2 = unqtText "coral2"- unqtDot Coral3 = unqtText "coral3"- unqtDot Coral4 = unqtText "coral4"- unqtDot CornFlowerBlue = unqtText "cornflowerblue"- unqtDot CornSilk = unqtText "cornsilk"- unqtDot CornSilk1 = unqtText "cornsilk1"- unqtDot CornSilk2 = unqtText "cornsilk2"- unqtDot CornSilk3 = unqtText "cornsilk3"- unqtDot CornSilk4 = unqtText "cornsilk4"- unqtDot Crimson = unqtText "crimson"- unqtDot Cyan = unqtText "cyan"- unqtDot Cyan1 = unqtText "cyan1"- unqtDot Cyan2 = unqtText "cyan2"- unqtDot Cyan3 = unqtText "cyan3"- unqtDot Cyan4 = unqtText "cyan4"- unqtDot DarkGoldenrod = unqtText "darkgoldenrod"- unqtDot DarkGoldenrod1 = unqtText "darkgoldenrod1"- unqtDot DarkGoldenrod2 = unqtText "darkgoldenrod2"- unqtDot DarkGoldenrod3 = unqtText "darkgoldenrod3"- unqtDot DarkGoldenrod4 = unqtText "darkgoldenrod4"- unqtDot DarkGreen = unqtText "darkgreen"- unqtDot Darkkhaki = unqtText "darkkhaki"- unqtDot DarkOliveGreen = unqtText "darkolivegreen"- unqtDot DarkOliveGreen1 = unqtText "darkolivegreen1"- unqtDot DarkOliveGreen2 = unqtText "darkolivegreen2"- unqtDot DarkOliveGreen3 = unqtText "darkolivegreen3"- unqtDot DarkOliveGreen4 = unqtText "darkolivegreen4"- unqtDot DarkOrange = unqtText "darkorange"- unqtDot DarkOrange1 = unqtText "darkorange1"- unqtDot DarkOrange2 = unqtText "darkorange2"- unqtDot DarkOrange3 = unqtText "darkorange3"- unqtDot DarkOrange4 = unqtText "darkorange4"- unqtDot DarkOrchid = unqtText "darkorchid"- unqtDot DarkOrchid1 = unqtText "darkorchid1"- unqtDot DarkOrchid2 = unqtText "darkorchid2"- unqtDot DarkOrchid3 = unqtText "darkorchid3"- unqtDot DarkOrchid4 = unqtText "darkorchid4"- unqtDot DarkSalmon = unqtText "darksalmon"- unqtDot DarkSeaGreen = unqtText "darkseagreen"- unqtDot DarkSeaGreen1 = unqtText "darkseagreen1"- unqtDot DarkSeaGreen2 = unqtText "darkseagreen2"- unqtDot DarkSeaGreen3 = unqtText "darkseagreen3"- unqtDot DarkSeaGreen4 = unqtText "darkseagreen4"- unqtDot DarkSlateBlue = unqtText "darkslateblue"- unqtDot DarkSlateGray = unqtText "darkslategray"- unqtDot DarkSlateGray1 = unqtText "darkslategray1"- unqtDot DarkSlateGray2 = unqtText "darkslategray2"- unqtDot DarkSlateGray3 = unqtText "darkslategray3"- unqtDot DarkSlateGray4 = unqtText "darkslategray4"- unqtDot DarkTurquoise = unqtText "darkturquoise"- unqtDot DarkViolet = unqtText "darkviolet"- unqtDot DeepPink = unqtText "deeppink"- unqtDot DeepPink1 = unqtText "deeppink1"- unqtDot DeepPink2 = unqtText "deeppink2"- unqtDot DeepPink3 = unqtText "deeppink3"- unqtDot DeepPink4 = unqtText "deeppink4"- unqtDot DeepSkyBlue = unqtText "deepskyblue"- unqtDot DeepSkyBlue1 = unqtText "deepskyblue1"- unqtDot DeepSkyBlue2 = unqtText "deepskyblue2"- unqtDot DeepSkyBlue3 = unqtText "deepskyblue3"- unqtDot DeepSkyBlue4 = unqtText "deepskyblue4"- unqtDot DimGray = unqtText "dimgray"- unqtDot DodgerBlue = unqtText "dodgerblue"- unqtDot DodgerBlue1 = unqtText "dodgerblue1"- unqtDot DodgerBlue2 = unqtText "dodgerblue2"- unqtDot DodgerBlue3 = unqtText "dodgerblue3"- unqtDot DodgerBlue4 = unqtText "dodgerblue4"- unqtDot Firebrick = unqtText "firebrick"- unqtDot Firebrick1 = unqtText "firebrick1"- unqtDot Firebrick2 = unqtText "firebrick2"- unqtDot Firebrick3 = unqtText "firebrick3"- unqtDot Firebrick4 = unqtText "firebrick4"- unqtDot FloralWhite = unqtText "floralwhite"- unqtDot ForestGreen = unqtText "forestgreen"- unqtDot Gainsboro = unqtText "gainsboro"- unqtDot GhostWhite = unqtText "ghostwhite"- unqtDot Gold = unqtText "gold"- unqtDot Gold1 = unqtText "gold1"- unqtDot Gold2 = unqtText "gold2"- unqtDot Gold3 = unqtText "gold3"- unqtDot Gold4 = unqtText "gold4"- unqtDot Goldenrod = unqtText "goldenrod"- unqtDot Goldenrod1 = unqtText "goldenrod1"- unqtDot Goldenrod2 = unqtText "goldenrod2"- unqtDot Goldenrod3 = unqtText "goldenrod3"- unqtDot Goldenrod4 = unqtText "goldenrod4"- unqtDot Gray = unqtText "gray"- unqtDot Gray0 = unqtText "gray0"- unqtDot Gray1 = unqtText "gray1"- unqtDot Gray2 = unqtText "gray2"- unqtDot Gray3 = unqtText "gray3"- unqtDot Gray4 = unqtText "gray4"- unqtDot Gray5 = unqtText "gray5"- unqtDot Gray6 = unqtText "gray6"- unqtDot Gray7 = unqtText "gray7"- unqtDot Gray8 = unqtText "gray8"- unqtDot Gray9 = unqtText "gray9"- unqtDot Gray10 = unqtText "gray10"- unqtDot Gray11 = unqtText "gray11"- unqtDot Gray12 = unqtText "gray12"- unqtDot Gray13 = unqtText "gray13"- unqtDot Gray14 = unqtText "gray14"- unqtDot Gray15 = unqtText "gray15"- unqtDot Gray16 = unqtText "gray16"- unqtDot Gray17 = unqtText "gray17"- unqtDot Gray18 = unqtText "gray18"- unqtDot Gray19 = unqtText "gray19"- unqtDot Gray20 = unqtText "gray20"- unqtDot Gray21 = unqtText "gray21"- unqtDot Gray22 = unqtText "gray22"- unqtDot Gray23 = unqtText "gray23"- unqtDot Gray24 = unqtText "gray24"- unqtDot Gray25 = unqtText "gray25"- unqtDot Gray26 = unqtText "gray26"- unqtDot Gray27 = unqtText "gray27"- unqtDot Gray28 = unqtText "gray28"- unqtDot Gray29 = unqtText "gray29"- unqtDot Gray30 = unqtText "gray30"- unqtDot Gray31 = unqtText "gray31"- unqtDot Gray32 = unqtText "gray32"- unqtDot Gray33 = unqtText "gray33"- unqtDot Gray34 = unqtText "gray34"- unqtDot Gray35 = unqtText "gray35"- unqtDot Gray36 = unqtText "gray36"- unqtDot Gray37 = unqtText "gray37"- unqtDot Gray38 = unqtText "gray38"- unqtDot Gray39 = unqtText "gray39"- unqtDot Gray40 = unqtText "gray40"- unqtDot Gray41 = unqtText "gray41"- unqtDot Gray42 = unqtText "gray42"- unqtDot Gray43 = unqtText "gray43"- unqtDot Gray44 = unqtText "gray44"- unqtDot Gray45 = unqtText "gray45"- unqtDot Gray46 = unqtText "gray46"- unqtDot Gray47 = unqtText "gray47"- unqtDot Gray48 = unqtText "gray48"- unqtDot Gray49 = unqtText "gray49"- unqtDot Gray50 = unqtText "gray50"- unqtDot Gray51 = unqtText "gray51"- unqtDot Gray52 = unqtText "gray52"- unqtDot Gray53 = unqtText "gray53"- unqtDot Gray54 = unqtText "gray54"- unqtDot Gray55 = unqtText "gray55"- unqtDot Gray56 = unqtText "gray56"- unqtDot Gray57 = unqtText "gray57"- unqtDot Gray58 = unqtText "gray58"- unqtDot Gray59 = unqtText "gray59"- unqtDot Gray60 = unqtText "gray60"- unqtDot Gray61 = unqtText "gray61"- unqtDot Gray62 = unqtText "gray62"- unqtDot Gray63 = unqtText "gray63"- unqtDot Gray64 = unqtText "gray64"- unqtDot Gray65 = unqtText "gray65"- unqtDot Gray66 = unqtText "gray66"- unqtDot Gray67 = unqtText "gray67"- unqtDot Gray68 = unqtText "gray68"- unqtDot Gray69 = unqtText "gray69"- unqtDot Gray70 = unqtText "gray70"- unqtDot Gray71 = unqtText "gray71"- unqtDot Gray72 = unqtText "gray72"- unqtDot Gray73 = unqtText "gray73"- unqtDot Gray74 = unqtText "gray74"- unqtDot Gray75 = unqtText "gray75"- unqtDot Gray76 = unqtText "gray76"- unqtDot Gray77 = unqtText "gray77"- unqtDot Gray78 = unqtText "gray78"- unqtDot Gray79 = unqtText "gray79"- unqtDot Gray80 = unqtText "gray80"- unqtDot Gray81 = unqtText "gray81"- unqtDot Gray82 = unqtText "gray82"- unqtDot Gray83 = unqtText "gray83"- unqtDot Gray84 = unqtText "gray84"- unqtDot Gray85 = unqtText "gray85"- unqtDot Gray86 = unqtText "gray86"- unqtDot Gray87 = unqtText "gray87"- unqtDot Gray88 = unqtText "gray88"- unqtDot Gray89 = unqtText "gray89"- unqtDot Gray90 = unqtText "gray90"- unqtDot Gray91 = unqtText "gray91"- unqtDot Gray92 = unqtText "gray92"- unqtDot Gray93 = unqtText "gray93"- unqtDot Gray94 = unqtText "gray94"- unqtDot Gray95 = unqtText "gray95"- unqtDot Gray96 = unqtText "gray96"- unqtDot Gray97 = unqtText "gray97"- unqtDot Gray98 = unqtText "gray98"- unqtDot Gray99 = unqtText "gray99"- unqtDot Gray100 = unqtText "gray100"- unqtDot Green = unqtText "green"- unqtDot Green1 = unqtText "green1"- unqtDot Green2 = unqtText "green2"- unqtDot Green3 = unqtText "green3"- unqtDot Green4 = unqtText "green4"- unqtDot GreenYellow = unqtText "greenyellow"- unqtDot HoneyDew = unqtText "honeydew"- unqtDot HoneyDew1 = unqtText "honeydew1"- unqtDot HoneyDew2 = unqtText "honeydew2"- unqtDot HoneyDew3 = unqtText "honeydew3"- unqtDot HoneyDew4 = unqtText "honeydew4"- unqtDot HotPink = unqtText "hotpink"- unqtDot HotPink1 = unqtText "hotpink1"- unqtDot HotPink2 = unqtText "hotpink2"- unqtDot HotPink3 = unqtText "hotpink3"- unqtDot HotPink4 = unqtText "hotpink4"- unqtDot IndianRed = unqtText "indianred"- unqtDot IndianRed1 = unqtText "indianred1"- unqtDot IndianRed2 = unqtText "indianred2"- unqtDot IndianRed3 = unqtText "indianred3"- unqtDot IndianRed4 = unqtText "indianred4"- unqtDot Indigo = unqtText "indigo"- unqtDot Ivory = unqtText "ivory"- unqtDot Ivory1 = unqtText "ivory1"- unqtDot Ivory2 = unqtText "ivory2"- unqtDot Ivory3 = unqtText "ivory3"- unqtDot Ivory4 = unqtText "ivory4"- unqtDot Khaki = unqtText "khaki"- unqtDot Khaki1 = unqtText "khaki1"- unqtDot Khaki2 = unqtText "khaki2"- unqtDot Khaki3 = unqtText "khaki3"- unqtDot Khaki4 = unqtText "khaki4"- unqtDot Lavender = unqtText "lavender"- unqtDot LavenderBlush = unqtText "lavenderblush"- unqtDot LavenderBlush1 = unqtText "lavenderblush1"- unqtDot LavenderBlush2 = unqtText "lavenderblush2"- unqtDot LavenderBlush3 = unqtText "lavenderblush3"- unqtDot LavenderBlush4 = unqtText "lavenderblush4"- unqtDot LawnGreen = unqtText "lawngreen"- unqtDot LemonChiffon = unqtText "lemonchiffon"- unqtDot LemonChiffon1 = unqtText "lemonchiffon1"- unqtDot LemonChiffon2 = unqtText "lemonchiffon2"- unqtDot LemonChiffon3 = unqtText "lemonchiffon3"- unqtDot LemonChiffon4 = unqtText "lemonchiffon4"- unqtDot LightBlue = unqtText "lightblue"- unqtDot LightBlue1 = unqtText "lightblue1"- unqtDot LightBlue2 = unqtText "lightblue2"- unqtDot LightBlue3 = unqtText "lightblue3"- unqtDot LightBlue4 = unqtText "lightblue4"- unqtDot LightCoral = unqtText "lightcoral"- unqtDot LightCyan = unqtText "lightcyan"- unqtDot LightCyan1 = unqtText "lightcyan1"- unqtDot LightCyan2 = unqtText "lightcyan2"- unqtDot LightCyan3 = unqtText "lightcyan3"- unqtDot LightCyan4 = unqtText "lightcyan4"- unqtDot LightGoldenrod = unqtText "lightgoldenrod"- unqtDot LightGoldenrod1 = unqtText "lightgoldenrod1"- unqtDot LightGoldenrod2 = unqtText "lightgoldenrod2"- unqtDot LightGoldenrod3 = unqtText "lightgoldenrod3"- unqtDot LightGoldenrod4 = unqtText "lightgoldenrod4"- unqtDot LightGoldenrodYellow = unqtText "lightgoldenrodyellow"- unqtDot LightGray = unqtText "lightgray"- unqtDot LightPink = unqtText "lightpink"- unqtDot LightPink1 = unqtText "lightpink1"- unqtDot LightPink2 = unqtText "lightpink2"- unqtDot LightPink3 = unqtText "lightpink3"- unqtDot LightPink4 = unqtText "lightpink4"- unqtDot LightSalmon = unqtText "lightsalmon"- unqtDot LightSalmon1 = unqtText "lightsalmon1"- unqtDot LightSalmon2 = unqtText "lightsalmon2"- unqtDot LightSalmon3 = unqtText "lightsalmon3"- unqtDot LightSalmon4 = unqtText "lightsalmon4"- unqtDot LightSeaGreen = unqtText "lightseagreen"- unqtDot LightSkyBlue = unqtText "lightskyblue"- unqtDot LightSkyBlue1 = unqtText "lightskyblue1"- unqtDot LightSkyBlue2 = unqtText "lightskyblue2"- unqtDot LightSkyBlue3 = unqtText "lightskyblue3"- unqtDot LightSkyBlue4 = unqtText "lightskyblue4"- unqtDot LightSlateBlue = unqtText "lightslateblue"- unqtDot LightSlateGray = unqtText "lightslategray"- unqtDot LightSteelBlue = unqtText "lightsteelblue"- unqtDot LightSteelBlue1 = unqtText "lightsteelblue1"- unqtDot LightSteelBlue2 = unqtText "lightsteelblue2"- unqtDot LightSteelBlue3 = unqtText "lightsteelblue3"- unqtDot LightSteelBlue4 = unqtText "lightsteelblue4"- unqtDot LightYellow = unqtText "lightyellow"- unqtDot LightYellow1 = unqtText "lightyellow1"- unqtDot LightYellow2 = unqtText "lightyellow2"- unqtDot LightYellow3 = unqtText "lightyellow3"- unqtDot LightYellow4 = unqtText "lightyellow4"- unqtDot LimeGreen = unqtText "limegreen"- unqtDot Linen = unqtText "linen"- unqtDot Magenta = unqtText "magenta"- unqtDot Magenta1 = unqtText "magenta1"- unqtDot Magenta2 = unqtText "magenta2"- unqtDot Magenta3 = unqtText "magenta3"- unqtDot Magenta4 = unqtText "magenta4"- unqtDot Maroon = unqtText "maroon"- unqtDot Maroon1 = unqtText "maroon1"- unqtDot Maroon2 = unqtText "maroon2"- unqtDot Maroon3 = unqtText "maroon3"- unqtDot Maroon4 = unqtText "maroon4"- unqtDot MediumAquamarine = unqtText "mediumaquamarine"- unqtDot MediumBlue = unqtText "mediumblue"- unqtDot MediumOrchid = unqtText "mediumorchid"- unqtDot MediumOrchid1 = unqtText "mediumorchid1"- unqtDot MediumOrchid2 = unqtText "mediumorchid2"- unqtDot MediumOrchid3 = unqtText "mediumorchid3"- unqtDot MediumOrchid4 = unqtText "mediumorchid4"- unqtDot MediumPurple = unqtText "mediumpurple"- unqtDot MediumPurple1 = unqtText "mediumpurple1"- unqtDot MediumPurple2 = unqtText "mediumpurple2"- unqtDot MediumPurple3 = unqtText "mediumpurple3"- unqtDot MediumPurple4 = unqtText "mediumpurple4"- unqtDot MediumSeaGreen = unqtText "mediumseagreen"- unqtDot MediumSlateBlue = unqtText "mediumslateblue"- unqtDot MediumSpringGreen = unqtText "mediumspringgreen"- unqtDot MediumTurquoise = unqtText "mediumturquoise"- unqtDot MediumVioletRed = unqtText "mediumvioletred"- unqtDot MidnightBlue = unqtText "midnightblue"- unqtDot MintCream = unqtText "mintcream"- unqtDot MistyRose = unqtText "mistyrose"- unqtDot MistyRose1 = unqtText "mistyrose1"- unqtDot MistyRose2 = unqtText "mistyrose2"- unqtDot MistyRose3 = unqtText "mistyrose3"- unqtDot MistyRose4 = unqtText "mistyrose4"- unqtDot Moccasin = unqtText "moccasin"- unqtDot NavajoWhite = unqtText "navajowhite"- unqtDot NavajoWhite1 = unqtText "navajowhite1"- unqtDot NavajoWhite2 = unqtText "navajowhite2"- unqtDot NavajoWhite3 = unqtText "navajowhite3"- unqtDot NavajoWhite4 = unqtText "navajowhite4"- unqtDot Navy = unqtText "navy"- unqtDot NavyBlue = unqtText "navyblue"- unqtDot OldLace = unqtText "oldlace"- unqtDot OliveDrab = unqtText "olivedrab"- unqtDot OliveDrab1 = unqtText "olivedrab1"- unqtDot OliveDrab2 = unqtText "olivedrab2"- unqtDot OliveDrab3 = unqtText "olivedrab3"- unqtDot OliveDrab4 = unqtText "olivedrab4"- unqtDot Orange = unqtText "orange"- unqtDot Orange1 = unqtText "orange1"- unqtDot Orange2 = unqtText "orange2"- unqtDot Orange3 = unqtText "orange3"- unqtDot Orange4 = unqtText "orange4"- unqtDot OrangeRed = unqtText "orangered"- unqtDot OrangeRed1 = unqtText "orangered1"- unqtDot OrangeRed2 = unqtText "orangered2"- unqtDot OrangeRed3 = unqtText "orangered3"- unqtDot OrangeRed4 = unqtText "orangered4"- unqtDot Orchid = unqtText "orchid"- unqtDot Orchid1 = unqtText "orchid1"- unqtDot Orchid2 = unqtText "orchid2"- unqtDot Orchid3 = unqtText "orchid3"- unqtDot Orchid4 = unqtText "orchid4"- unqtDot PaleGoldenrod = unqtText "palegoldenrod"- unqtDot PaleGreen = unqtText "palegreen"- unqtDot PaleGreen1 = unqtText "palegreen1"- unqtDot PaleGreen2 = unqtText "palegreen2"- unqtDot PaleGreen3 = unqtText "palegreen3"- unqtDot PaleGreen4 = unqtText "palegreen4"- unqtDot PaleTurquoise = unqtText "paleturquoise"- unqtDot PaleTurquoise1 = unqtText "paleturquoise1"- unqtDot PaleTurquoise2 = unqtText "paleturquoise2"- unqtDot PaleTurquoise3 = unqtText "paleturquoise3"- unqtDot PaleTurquoise4 = unqtText "paleturquoise4"- unqtDot PaleVioletRed = unqtText "palevioletred"- unqtDot PaleVioletRed1 = unqtText "palevioletred1"- unqtDot PaleVioletRed2 = unqtText "palevioletred2"- unqtDot PaleVioletRed3 = unqtText "palevioletred3"- unqtDot PaleVioletRed4 = unqtText "palevioletred4"- unqtDot PapayaWhip = unqtText "papayawhip"- unqtDot PeachPuff = unqtText "peachpuff"- unqtDot PeachPuff1 = unqtText "peachpuff1"- unqtDot PeachPuff2 = unqtText "peachpuff2"- unqtDot PeachPuff3 = unqtText "peachpuff3"- unqtDot PeachPuff4 = unqtText "peachpuff4"- unqtDot Peru = unqtText "peru"- unqtDot Pink = unqtText "pink"- unqtDot Pink1 = unqtText "pink1"- unqtDot Pink2 = unqtText "pink2"- unqtDot Pink3 = unqtText "pink3"- unqtDot Pink4 = unqtText "pink4"- unqtDot Plum = unqtText "plum"- unqtDot Plum1 = unqtText "plum1"- unqtDot Plum2 = unqtText "plum2"- unqtDot Plum3 = unqtText "plum3"- unqtDot Plum4 = unqtText "plum4"- unqtDot PowderBlue = unqtText "powderblue"- unqtDot Purple = unqtText "purple"- unqtDot Purple1 = unqtText "purple1"- unqtDot Purple2 = unqtText "purple2"- unqtDot Purple3 = unqtText "purple3"- unqtDot Purple4 = unqtText "purple4"- unqtDot Red = unqtText "red"- unqtDot Red1 = unqtText "red1"- unqtDot Red2 = unqtText "red2"- unqtDot Red3 = unqtText "red3"- unqtDot Red4 = unqtText "red4"- unqtDot RosyBrown = unqtText "rosybrown"- unqtDot RosyBrown1 = unqtText "rosybrown1"- unqtDot RosyBrown2 = unqtText "rosybrown2"- unqtDot RosyBrown3 = unqtText "rosybrown3"- unqtDot RosyBrown4 = unqtText "rosybrown4"- unqtDot RoyalBlue = unqtText "royalblue"- unqtDot RoyalBlue1 = unqtText "royalblue1"- unqtDot RoyalBlue2 = unqtText "royalblue2"- unqtDot RoyalBlue3 = unqtText "royalblue3"- unqtDot RoyalBlue4 = unqtText "royalblue4"- unqtDot SaddleBrown = unqtText "saddlebrown"- unqtDot Salmon = unqtText "salmon"- unqtDot Salmon1 = unqtText "salmon1"- unqtDot Salmon2 = unqtText "salmon2"- unqtDot Salmon3 = unqtText "salmon3"- unqtDot Salmon4 = unqtText "salmon4"- unqtDot SandyBrown = unqtText "sandybrown"- unqtDot SeaGreen = unqtText "seagreen"- unqtDot SeaGreen1 = unqtText "seagreen1"- unqtDot SeaGreen2 = unqtText "seagreen2"- unqtDot SeaGreen3 = unqtText "seagreen3"- unqtDot SeaGreen4 = unqtText "seagreen4"- unqtDot SeaShell = unqtText "seashell"- unqtDot SeaShell1 = unqtText "seashell1"- unqtDot SeaShell2 = unqtText "seashell2"- unqtDot SeaShell3 = unqtText "seashell3"- unqtDot SeaShell4 = unqtText "seashell4"- unqtDot Sienna = unqtText "sienna"- unqtDot Sienna1 = unqtText "sienna1"- unqtDot Sienna2 = unqtText "sienna2"- unqtDot Sienna3 = unqtText "sienna3"- unqtDot Sienna4 = unqtText "sienna4"- unqtDot SkyBlue = unqtText "skyblue"- unqtDot SkyBlue1 = unqtText "skyblue1"- unqtDot SkyBlue2 = unqtText "skyblue2"- unqtDot SkyBlue3 = unqtText "skyblue3"- unqtDot SkyBlue4 = unqtText "skyblue4"- unqtDot SlateBlue = unqtText "slateblue"- unqtDot SlateBlue1 = unqtText "slateblue1"- unqtDot SlateBlue2 = unqtText "slateblue2"- unqtDot SlateBlue3 = unqtText "slateblue3"- unqtDot SlateBlue4 = unqtText "slateblue4"- unqtDot SlateGray = unqtText "slategray"- unqtDot SlateGray1 = unqtText "slategray1"- unqtDot SlateGray2 = unqtText "slategray2"- unqtDot SlateGray3 = unqtText "slategray3"- unqtDot SlateGray4 = unqtText "slategray4"- unqtDot Snow = unqtText "snow"- unqtDot Snow1 = unqtText "snow1"- unqtDot Snow2 = unqtText "snow2"- unqtDot Snow3 = unqtText "snow3"- unqtDot Snow4 = unqtText "snow4"- unqtDot SpringGreen = unqtText "springgreen"- unqtDot SpringGreen1 = unqtText "springgreen1"- unqtDot SpringGreen2 = unqtText "springgreen2"- unqtDot SpringGreen3 = unqtText "springgreen3"- unqtDot SpringGreen4 = unqtText "springgreen4"- unqtDot SteelBlue = unqtText "steelblue"- unqtDot SteelBlue1 = unqtText "steelblue1"- unqtDot SteelBlue2 = unqtText "steelblue2"- unqtDot SteelBlue3 = unqtText "steelblue3"- unqtDot SteelBlue4 = unqtText "steelblue4"- unqtDot Tan = unqtText "tan"- unqtDot Tan1 = unqtText "tan1"- unqtDot Tan2 = unqtText "tan2"- unqtDot Tan3 = unqtText "tan3"- unqtDot Tan4 = unqtText "tan4"- unqtDot Thistle = unqtText "thistle"- unqtDot Thistle1 = unqtText "thistle1"- unqtDot Thistle2 = unqtText "thistle2"- unqtDot Thistle3 = unqtText "thistle3"- unqtDot Thistle4 = unqtText "thistle4"- unqtDot Tomato = unqtText "tomato"- unqtDot Tomato1 = unqtText "tomato1"- unqtDot Tomato2 = unqtText "tomato2"- unqtDot Tomato3 = unqtText "tomato3"- unqtDot Tomato4 = unqtText "tomato4"- unqtDot Transparent = unqtText "transparent"- unqtDot Turquoise = unqtText "turquoise"- unqtDot Turquoise1 = unqtText "turquoise1"- unqtDot Turquoise2 = unqtText "turquoise2"- unqtDot Turquoise3 = unqtText "turquoise3"- unqtDot Turquoise4 = unqtText "turquoise4"- unqtDot Violet = unqtText "violet"- unqtDot VioletRed = unqtText "violetred"- unqtDot VioletRed1 = unqtText "violetred1"- unqtDot VioletRed2 = unqtText "violetred2"- unqtDot VioletRed3 = unqtText "violetred3"- unqtDot VioletRed4 = unqtText "violetred4"- unqtDot Wheat = unqtText "wheat"- unqtDot Wheat1 = unqtText "wheat1"- unqtDot Wheat2 = unqtText "wheat2"- unqtDot Wheat3 = unqtText "wheat3"- unqtDot Wheat4 = unqtText "wheat4"- unqtDot White = unqtText "white"- unqtDot WhiteSmoke = unqtText "whitesmoke"- unqtDot Yellow = unqtText "yellow"- unqtDot Yellow1 = unqtText "yellow1"- unqtDot Yellow2 = unqtText "yellow2"- unqtDot Yellow3 = unqtText "yellow3"- unqtDot Yellow4 = unqtText "yellow4"- unqtDot YellowGreen = unqtText "yellowgreen"--instance ParseDot X11Color where- parseUnqt = stringValue [ ("aliceblue", AliceBlue)- , ("antiquewhite", AntiqueWhite)- , ("antiquewhite1", AntiqueWhite1)- , ("antiquewhite2", AntiqueWhite2)- , ("antiquewhite3", AntiqueWhite3)- , ("antiquewhite4", AntiqueWhite4)- , ("aquamarine", Aquamarine)- , ("aquamarine1", Aquamarine1)- , ("aquamarine2", Aquamarine2)- , ("aquamarine3", Aquamarine3)- , ("aquamarine4", Aquamarine4)- , ("azure", Azure)- , ("azure1", Azure1)- , ("azure2", Azure2)- , ("azure3", Azure3)- , ("azure4", Azure4)- , ("beige", Beige)- , ("bisque", Bisque)- , ("bisque1", Bisque1)- , ("bisque2", Bisque2)- , ("bisque3", Bisque3)- , ("bisque4", Bisque4)- , ("black", Black)- , ("blanchedalmond", BlanchedAlmond)- , ("blue", Blue)- , ("blue1", Blue1)- , ("blue2", Blue2)- , ("blue3", Blue3)- , ("blue4", Blue4)- , ("blueviolet", BlueViolet)- , ("brown", Brown)- , ("brown1", Brown1)- , ("brown2", Brown2)- , ("brown3", Brown3)- , ("brown4", Brown4)- , ("burlywood", Burlywood)- , ("burlywood1", Burlywood1)- , ("burlywood2", Burlywood2)- , ("burlywood3", Burlywood3)- , ("burlywood4", Burlywood4)- , ("cadetblue", CadetBlue)- , ("cadetblue1", CadetBlue1)- , ("cadetblue2", CadetBlue2)- , ("cadetblue3", CadetBlue3)- , ("cadetblue4", CadetBlue4)- , ("chartreuse", Chartreuse)- , ("chartreuse1", Chartreuse1)- , ("chartreuse2", Chartreuse2)- , ("chartreuse3", Chartreuse3)- , ("chartreuse4", Chartreuse4)- , ("chocolate", Chocolate)- , ("chocolate1", Chocolate1)- , ("chocolate2", Chocolate2)- , ("chocolate3", Chocolate3)- , ("chocolate4", Chocolate4)- , ("coral", Coral)- , ("coral1", Coral1)- , ("coral2", Coral2)- , ("coral3", Coral3)- , ("coral4", Coral4)- , ("cornflowerblue", CornFlowerBlue)- , ("cornsilk", CornSilk)- , ("cornsilk1", CornSilk1)- , ("cornsilk2", CornSilk2)- , ("cornsilk3", CornSilk3)- , ("cornsilk4", CornSilk4)- , ("crimson", Crimson)- , ("cyan", Cyan)- , ("cyan1", Cyan1)- , ("cyan2", Cyan2)- , ("cyan3", Cyan3)- , ("cyan4", Cyan4)- , ("darkgoldenrod", DarkGoldenrod)- , ("darkgoldenrod1", DarkGoldenrod1)- , ("darkgoldenrod2", DarkGoldenrod2)- , ("darkgoldenrod3", DarkGoldenrod3)- , ("darkgoldenrod4", DarkGoldenrod4)- , ("darkgreen", DarkGreen)- , ("darkkhaki", Darkkhaki)- , ("darkolivegreen", DarkOliveGreen)- , ("darkolivegreen1", DarkOliveGreen1)- , ("darkolivegreen2", DarkOliveGreen2)- , ("darkolivegreen3", DarkOliveGreen3)- , ("darkolivegreen4", DarkOliveGreen4)- , ("darkorange", DarkOrange)- , ("darkorange1", DarkOrange1)- , ("darkorange2", DarkOrange2)- , ("darkorange3", DarkOrange3)- , ("darkorange4", DarkOrange4)- , ("darkorchid", DarkOrchid)- , ("darkorchid1", DarkOrchid1)- , ("darkorchid2", DarkOrchid2)- , ("darkorchid3", DarkOrchid3)- , ("darkorchid4", DarkOrchid4)- , ("darksalmon", DarkSalmon)- , ("darkseagreen", DarkSeaGreen)- , ("darkseagreen1", DarkSeaGreen1)- , ("darkseagreen2", DarkSeaGreen2)- , ("darkseagreen3", DarkSeaGreen3)- , ("darkseagreen4", DarkSeaGreen4)- , ("darkslateblue", DarkSlateBlue)- , ("darkslategray", DarkSlateGray)- , ("darkslategrey", DarkSlateGray)- , ("darkslategray1", DarkSlateGray1)- , ("darkslategrey1", DarkSlateGray1)- , ("darkslategray2", DarkSlateGray2)- , ("darkslategrey2", DarkSlateGray2)- , ("darkslategray3", DarkSlateGray3)- , ("darkslategrey3", DarkSlateGray3)- , ("darkslategray4", DarkSlateGray4)- , ("darkslategrey4", DarkSlateGray4)- , ("darkturquoise", DarkTurquoise)- , ("darkviolet", DarkViolet)- , ("deeppink", DeepPink)- , ("deeppink1", DeepPink1)- , ("deeppink2", DeepPink2)- , ("deeppink3", DeepPink3)- , ("deeppink4", DeepPink4)- , ("deepskyblue", DeepSkyBlue)- , ("deepskyblue1", DeepSkyBlue1)- , ("deepskyblue2", DeepSkyBlue2)- , ("deepskyblue3", DeepSkyBlue3)- , ("deepskyblue4", DeepSkyBlue4)- , ("dimgray", DimGray)- , ("dimgrey", DimGray)- , ("dodgerblue", DodgerBlue)- , ("dodgerblue1", DodgerBlue1)- , ("dodgerblue2", DodgerBlue2)- , ("dodgerblue3", DodgerBlue3)- , ("dodgerblue4", DodgerBlue4)- , ("firebrick", Firebrick)- , ("firebrick1", Firebrick1)- , ("firebrick2", Firebrick2)- , ("firebrick3", Firebrick3)- , ("firebrick4", Firebrick4)- , ("floralwhite", FloralWhite)- , ("forestgreen", ForestGreen)- , ("gainsboro", Gainsboro)- , ("ghostwhite", GhostWhite)- , ("gold", Gold)- , ("gold1", Gold1)- , ("gold2", Gold2)- , ("gold3", Gold3)- , ("gold4", Gold4)- , ("goldenrod", Goldenrod)- , ("goldenrod1", Goldenrod1)- , ("goldenrod2", Goldenrod2)- , ("goldenrod3", Goldenrod3)- , ("goldenrod4", Goldenrod4)- , ("gray", Gray)- , ("grey", Gray)- , ("gray0", Gray0)- , ("grey0", Gray0)- , ("gray1", Gray1)- , ("grey1", Gray1)- , ("gray2", Gray2)- , ("grey2", Gray2)- , ("gray3", Gray3)- , ("grey3", Gray3)- , ("gray4", Gray4)- , ("grey4", Gray4)- , ("gray5", Gray5)- , ("grey5", Gray5)- , ("gray6", Gray6)- , ("grey6", Gray6)- , ("gray7", Gray7)- , ("grey7", Gray7)- , ("gray8", Gray8)- , ("grey8", Gray8)- , ("gray9", Gray9)- , ("grey9", Gray9)- , ("gray10", Gray10)- , ("grey10", Gray10)- , ("gray11", Gray11)- , ("grey11", Gray11)- , ("gray12", Gray12)- , ("grey12", Gray12)- , ("gray13", Gray13)- , ("grey13", Gray13)- , ("gray14", Gray14)- , ("grey14", Gray14)- , ("gray15", Gray15)- , ("grey15", Gray15)- , ("gray16", Gray16)- , ("grey16", Gray16)- , ("gray17", Gray17)- , ("grey17", Gray17)- , ("gray18", Gray18)- , ("grey18", Gray18)- , ("gray19", Gray19)- , ("grey19", Gray19)- , ("gray20", Gray20)- , ("grey20", Gray20)- , ("gray21", Gray21)- , ("grey21", Gray21)- , ("gray22", Gray22)- , ("grey22", Gray22)- , ("gray23", Gray23)- , ("grey23", Gray23)- , ("gray24", Gray24)- , ("grey24", Gray24)- , ("gray25", Gray25)- , ("grey25", Gray25)- , ("gray26", Gray26)- , ("grey26", Gray26)- , ("gray27", Gray27)- , ("grey27", Gray27)- , ("gray28", Gray28)- , ("grey28", Gray28)- , ("gray29", Gray29)- , ("grey29", Gray29)- , ("gray30", Gray30)- , ("grey30", Gray30)- , ("gray31", Gray31)- , ("grey31", Gray31)- , ("gray32", Gray32)- , ("grey32", Gray32)- , ("gray33", Gray33)- , ("grey33", Gray33)- , ("gray34", Gray34)- , ("grey34", Gray34)- , ("gray35", Gray35)- , ("grey35", Gray35)- , ("gray36", Gray36)- , ("grey36", Gray36)- , ("gray37", Gray37)- , ("grey37", Gray37)- , ("gray38", Gray38)- , ("grey38", Gray38)- , ("gray39", Gray39)- , ("grey39", Gray39)- , ("gray40", Gray40)- , ("grey40", Gray40)- , ("gray41", Gray41)- , ("grey41", Gray41)- , ("gray42", Gray42)- , ("grey42", Gray42)- , ("gray43", Gray43)- , ("grey43", Gray43)- , ("gray44", Gray44)- , ("grey44", Gray44)- , ("gray45", Gray45)- , ("grey45", Gray45)- , ("gray46", Gray46)- , ("grey46", Gray46)- , ("gray47", Gray47)- , ("grey47", Gray47)- , ("gray48", Gray48)- , ("grey48", Gray48)- , ("gray49", Gray49)- , ("grey49", Gray49)- , ("gray50", Gray50)- , ("grey50", Gray50)- , ("gray51", Gray51)- , ("grey51", Gray51)- , ("gray52", Gray52)- , ("grey52", Gray52)- , ("gray53", Gray53)- , ("grey53", Gray53)- , ("gray54", Gray54)- , ("grey54", Gray54)- , ("gray55", Gray55)- , ("grey55", Gray55)- , ("gray56", Gray56)- , ("grey56", Gray56)- , ("gray57", Gray57)- , ("grey57", Gray57)- , ("gray58", Gray58)- , ("grey58", Gray58)- , ("gray59", Gray59)- , ("grey59", Gray59)- , ("gray60", Gray60)- , ("grey60", Gray60)- , ("gray61", Gray61)- , ("grey61", Gray61)- , ("gray62", Gray62)- , ("grey62", Gray62)- , ("gray63", Gray63)- , ("grey63", Gray63)- , ("gray64", Gray64)- , ("grey64", Gray64)- , ("gray65", Gray65)- , ("grey65", Gray65)- , ("gray66", Gray66)- , ("grey66", Gray66)- , ("gray67", Gray67)- , ("grey67", Gray67)- , ("gray68", Gray68)- , ("grey68", Gray68)- , ("gray69", Gray69)- , ("grey69", Gray69)- , ("gray70", Gray70)- , ("grey70", Gray70)- , ("gray71", Gray71)- , ("grey71", Gray71)- , ("gray72", Gray72)- , ("grey72", Gray72)- , ("gray73", Gray73)- , ("grey73", Gray73)- , ("gray74", Gray74)- , ("grey74", Gray74)- , ("gray75", Gray75)- , ("grey75", Gray75)- , ("gray76", Gray76)- , ("grey76", Gray76)- , ("gray77", Gray77)- , ("grey77", Gray77)- , ("gray78", Gray78)- , ("grey78", Gray78)- , ("gray79", Gray79)- , ("grey79", Gray79)- , ("gray80", Gray80)- , ("grey80", Gray80)- , ("gray81", Gray81)- , ("grey81", Gray81)- , ("gray82", Gray82)- , ("grey82", Gray82)- , ("gray83", Gray83)- , ("grey83", Gray83)- , ("gray84", Gray84)- , ("grey84", Gray84)- , ("gray85", Gray85)- , ("grey85", Gray85)- , ("gray86", Gray86)- , ("grey86", Gray86)- , ("gray87", Gray87)- , ("grey87", Gray87)- , ("gray88", Gray88)- , ("grey88", Gray88)- , ("gray89", Gray89)- , ("grey89", Gray89)- , ("gray90", Gray90)- , ("grey90", Gray90)- , ("gray91", Gray91)- , ("grey91", Gray91)- , ("gray92", Gray92)- , ("grey92", Gray92)- , ("gray93", Gray93)- , ("grey93", Gray93)- , ("gray94", Gray94)- , ("grey94", Gray94)- , ("gray95", Gray95)- , ("grey95", Gray95)- , ("gray96", Gray96)- , ("grey96", Gray96)- , ("gray97", Gray97)- , ("grey97", Gray97)- , ("gray98", Gray98)- , ("grey98", Gray98)- , ("gray99", Gray99)- , ("grey99", Gray99)- , ("gray100", Gray100)- , ("grey100", Gray100)- , ("green", Green)- , ("green1", Green1)- , ("green2", Green2)- , ("green3", Green3)- , ("green4", Green4)- , ("greenyellow", GreenYellow)- , ("honeydew", HoneyDew)- , ("honeydew1", HoneyDew1)- , ("honeydew2", HoneyDew2)- , ("honeydew3", HoneyDew3)- , ("honeydew4", HoneyDew4)- , ("hotpink", HotPink)- , ("hotpink1", HotPink1)- , ("hotpink2", HotPink2)- , ("hotpink3", HotPink3)- , ("hotpink4", HotPink4)- , ("indianred", IndianRed)- , ("indianred1", IndianRed1)- , ("indianred2", IndianRed2)- , ("indianred3", IndianRed3)- , ("indianred4", IndianRed4)- , ("indigo", Indigo)- , ("ivory", Ivory)- , ("ivory1", Ivory1)- , ("ivory2", Ivory2)- , ("ivory3", Ivory3)- , ("ivory4", Ivory4)- , ("khaki", Khaki)- , ("khaki1", Khaki1)- , ("khaki2", Khaki2)- , ("khaki3", Khaki3)- , ("khaki4", Khaki4)- , ("lavender", Lavender)- , ("lavenderblush", LavenderBlush)- , ("lavenderblush1", LavenderBlush1)- , ("lavenderblush2", LavenderBlush2)- , ("lavenderblush3", LavenderBlush3)- , ("lavenderblush4", LavenderBlush4)- , ("lawngreen", LawnGreen)- , ("lemonchiffon", LemonChiffon)- , ("lemonchiffon1", LemonChiffon1)- , ("lemonchiffon2", LemonChiffon2)- , ("lemonchiffon3", LemonChiffon3)- , ("lemonchiffon4", LemonChiffon4)- , ("lightblue", LightBlue)- , ("lightblue1", LightBlue1)- , ("lightblue2", LightBlue2)- , ("lightblue3", LightBlue3)- , ("lightblue4", LightBlue4)- , ("lightcoral", LightCoral)- , ("lightcyan", LightCyan)- , ("lightcyan1", LightCyan1)- , ("lightcyan2", LightCyan2)- , ("lightcyan3", LightCyan3)- , ("lightcyan4", LightCyan4)- , ("lightgoldenrod", LightGoldenrod)- , ("lightgoldenrod1", LightGoldenrod1)- , ("lightgoldenrod2", LightGoldenrod2)- , ("lightgoldenrod3", LightGoldenrod3)- , ("lightgoldenrod4", LightGoldenrod4)- , ("lightgoldenrodyellow", LightGoldenrodYellow)- , ("lightgray", LightGray)- , ("lightgrey", LightGray)- , ("lightpink", LightPink)- , ("lightpink1", LightPink1)- , ("lightpink2", LightPink2)- , ("lightpink3", LightPink3)- , ("lightpink4", LightPink4)- , ("lightsalmon", LightSalmon)- , ("lightsalmon1", LightSalmon1)- , ("lightsalmon2", LightSalmon2)- , ("lightsalmon3", LightSalmon3)- , ("lightsalmon4", LightSalmon4)- , ("lightseagreen", LightSeaGreen)- , ("lightskyblue", LightSkyBlue)- , ("lightskyblue1", LightSkyBlue1)- , ("lightskyblue2", LightSkyBlue2)- , ("lightskyblue3", LightSkyBlue3)- , ("lightskyblue4", LightSkyBlue4)- , ("lightslateblue", LightSlateBlue)- , ("lightslategray", LightSlateGray)- , ("lightslategrey", LightSlateGray)- , ("lightsteelblue", LightSteelBlue)- , ("lightsteelblue1", LightSteelBlue1)- , ("lightsteelblue2", LightSteelBlue2)- , ("lightsteelblue3", LightSteelBlue3)- , ("lightsteelblue4", LightSteelBlue4)- , ("lightyellow", LightYellow)- , ("lightyellow1", LightYellow1)- , ("lightyellow2", LightYellow2)- , ("lightyellow3", LightYellow3)- , ("lightyellow4", LightYellow4)- , ("limegreen", LimeGreen)- , ("linen", Linen)- , ("magenta", Magenta)- , ("magenta1", Magenta1)- , ("magenta2", Magenta2)- , ("magenta3", Magenta3)- , ("magenta4", Magenta4)- , ("maroon", Maroon)- , ("maroon1", Maroon1)- , ("maroon2", Maroon2)- , ("maroon3", Maroon3)- , ("maroon4", Maroon4)- , ("mediumaquamarine", MediumAquamarine)- , ("mediumblue", MediumBlue)- , ("mediumorchid", MediumOrchid)- , ("mediumorchid1", MediumOrchid1)- , ("mediumorchid2", MediumOrchid2)- , ("mediumorchid3", MediumOrchid3)- , ("mediumorchid4", MediumOrchid4)- , ("mediumpurple", MediumPurple)- , ("mediumpurple1", MediumPurple1)- , ("mediumpurple2", MediumPurple2)- , ("mediumpurple3", MediumPurple3)- , ("mediumpurple4", MediumPurple4)- , ("mediumseagreen", MediumSeaGreen)- , ("mediumslateblue", MediumSlateBlue)- , ("mediumspringgreen", MediumSpringGreen)- , ("mediumturquoise", MediumTurquoise)- , ("mediumvioletred", MediumVioletRed)- , ("midnightblue", MidnightBlue)- , ("mintcream", MintCream)- , ("mistyrose", MistyRose)- , ("mistyrose1", MistyRose1)- , ("mistyrose2", MistyRose2)- , ("mistyrose3", MistyRose3)- , ("mistyrose4", MistyRose4)- , ("moccasin", Moccasin)- , ("navajowhite", NavajoWhite)- , ("navajowhite1", NavajoWhite1)- , ("navajowhite2", NavajoWhite2)- , ("navajowhite3", NavajoWhite3)- , ("navajowhite4", NavajoWhite4)- , ("navy", Navy)- , ("navyblue", NavyBlue)- , ("oldlace", OldLace)- , ("olivedrab", OliveDrab)- , ("olivedrab1", OliveDrab1)- , ("olivedrab2", OliveDrab2)- , ("olivedrab3", OliveDrab3)- , ("olivedrab4", OliveDrab4)- , ("orange", Orange)- , ("orange1", Orange1)- , ("orange2", Orange2)- , ("orange3", Orange3)- , ("orange4", Orange4)- , ("orangered", OrangeRed)- , ("orangered1", OrangeRed1)- , ("orangered2", OrangeRed2)- , ("orangered3", OrangeRed3)- , ("orangered4", OrangeRed4)- , ("orchid", Orchid)- , ("orchid1", Orchid1)- , ("orchid2", Orchid2)- , ("orchid3", Orchid3)- , ("orchid4", Orchid4)- , ("palegoldenrod", PaleGoldenrod)- , ("palegreen", PaleGreen)- , ("palegreen1", PaleGreen1)- , ("palegreen2", PaleGreen2)- , ("palegreen3", PaleGreen3)- , ("palegreen4", PaleGreen4)- , ("paleturquoise", PaleTurquoise)- , ("paleturquoise1", PaleTurquoise1)- , ("paleturquoise2", PaleTurquoise2)- , ("paleturquoise3", PaleTurquoise3)- , ("paleturquoise4", PaleTurquoise4)- , ("palevioletred", PaleVioletRed)- , ("palevioletred1", PaleVioletRed1)- , ("palevioletred2", PaleVioletRed2)- , ("palevioletred3", PaleVioletRed3)- , ("palevioletred4", PaleVioletRed4)- , ("papayawhip", PapayaWhip)- , ("peachpuff", PeachPuff)- , ("peachpuff1", PeachPuff1)- , ("peachpuff2", PeachPuff2)- , ("peachpuff3", PeachPuff3)- , ("peachpuff4", PeachPuff4)- , ("peru", Peru)- , ("pink", Pink)- , ("pink1", Pink1)- , ("pink2", Pink2)- , ("pink3", Pink3)- , ("pink4", Pink4)- , ("plum", Plum)- , ("plum1", Plum1)- , ("plum2", Plum2)- , ("plum3", Plum3)- , ("plum4", Plum4)- , ("powderblue", PowderBlue)- , ("purple", Purple)- , ("purple1", Purple1)- , ("purple2", Purple2)- , ("purple3", Purple3)- , ("purple4", Purple4)- , ("red", Red)- , ("red1", Red1)- , ("red2", Red2)- , ("red3", Red3)- , ("red4", Red4)- , ("rosybrown", RosyBrown)- , ("rosybrown1", RosyBrown1)- , ("rosybrown2", RosyBrown2)- , ("rosybrown3", RosyBrown3)- , ("rosybrown4", RosyBrown4)- , ("royalblue", RoyalBlue)- , ("royalblue1", RoyalBlue1)- , ("royalblue2", RoyalBlue2)- , ("royalblue3", RoyalBlue3)- , ("royalblue4", RoyalBlue4)- , ("saddlebrown", SaddleBrown)- , ("salmon", Salmon)- , ("salmon1", Salmon1)- , ("salmon2", Salmon2)- , ("salmon3", Salmon3)- , ("salmon4", Salmon4)- , ("sandybrown", SandyBrown)- , ("seagreen", SeaGreen)- , ("seagreen1", SeaGreen1)- , ("seagreen2", SeaGreen2)- , ("seagreen3", SeaGreen3)- , ("seagreen4", SeaGreen4)- , ("seashell", SeaShell)- , ("seashell1", SeaShell1)- , ("seashell2", SeaShell2)- , ("seashell3", SeaShell3)- , ("seashell4", SeaShell4)- , ("sienna", Sienna)- , ("sienna1", Sienna1)- , ("sienna2", Sienna2)- , ("sienna3", Sienna3)- , ("sienna4", Sienna4)- , ("skyblue", SkyBlue)- , ("skyblue1", SkyBlue1)- , ("skyblue2", SkyBlue2)- , ("skyblue3", SkyBlue3)- , ("skyblue4", SkyBlue4)- , ("slateblue", SlateBlue)- , ("slateblue1", SlateBlue1)- , ("slateblue2", SlateBlue2)- , ("slateblue3", SlateBlue3)- , ("slateblue4", SlateBlue4)- , ("slategray", SlateGray)- , ("slategrey", SlateGray)- , ("slategray1", SlateGray1)- , ("slategrey1", SlateGray1)- , ("slategray2", SlateGray2)- , ("slategrey2", SlateGray2)- , ("slategray3", SlateGray3)- , ("slategrey3", SlateGray3)- , ("slategray4", SlateGray4)- , ("slategrey4", SlateGray4)- , ("snow", Snow)- , ("snow1", Snow1)- , ("snow2", Snow2)- , ("snow3", Snow3)- , ("snow4", Snow4)- , ("springgreen", SpringGreen)- , ("springgreen1", SpringGreen1)- , ("springgreen2", SpringGreen2)- , ("springgreen3", SpringGreen3)- , ("springgreen4", SpringGreen4)- , ("steelblue", SteelBlue)- , ("steelblue1", SteelBlue1)- , ("steelblue2", SteelBlue2)- , ("steelblue3", SteelBlue3)- , ("steelblue4", SteelBlue4)- , ("tan", Tan)- , ("tan1", Tan1)- , ("tan2", Tan2)- , ("tan3", Tan3)- , ("tan4", Tan4)- , ("thistle", Thistle)- , ("thistle1", Thistle1)- , ("thistle2", Thistle2)- , ("thistle3", Thistle3)- , ("thistle4", Thistle4)- , ("tomato", Tomato)- , ("tomato1", Tomato1)- , ("tomato2", Tomato2)- , ("tomato3", Tomato3)- , ("tomato4", Tomato4)- , ("transparent", Transparent)- , ("invis", Transparent)- , ("none", Transparent)- , ("turquoise", Turquoise)- , ("turquoise1", Turquoise1)- , ("turquoise2", Turquoise2)- , ("turquoise3", Turquoise3)- , ("turquoise4", Turquoise4)- , ("violet", Violet)- , ("violetred", VioletRed)- , ("violetred1", VioletRed1)- , ("violetred2", VioletRed2)- , ("violetred3", VioletRed3)- , ("violetred4", VioletRed4)- , ("wheat", Wheat)- , ("wheat1", Wheat1)- , ("wheat2", Wheat2)- , ("wheat3", Wheat3)- , ("wheat4", Wheat4)- , ("white", White)- , ("whitesmoke", WhiteSmoke)- , ("yellow", Yellow)- , ("yellow1", Yellow1)- , ("yellow2", Yellow2)- , ("yellow3", Yellow3)- , ("yellow4", Yellow4)- , ("yellowgreen", YellowGreen)- ]---- | Attempt to convert a 'Color' into a 'Colour' value with an alpha--- channel. The use of 'Maybe' is because the RGB values of the--- 'BrewerColor's haven't been stored here (primarily for licensing--- reasons).-toColour :: Color -> Maybe (AlphaColour Double)-toColour (RGB r g b) = Just . opaque $ sRGB24 r g b-toColour (RGBA r g b a) = Just . withOpacity (sRGB24 r g b) $ toOpacity a--- Colour expects the hue to be an angle, so multiply by 360-toColour (HSV h s v) = Just . opaque . uncurryRGB sRGB $ hsv (h*360) s v-toColour (X11Color c) = Just $ x11Colour c-toColour BrewerColor{} = Nothing--toOpacity :: Word8 -> Double-toOpacity a = fromIntegral a / maxWord---- | Convert an 'X11Color' to its equivalent 'Colour' value. Note--- that it uses 'AlphaColour' because of 'Transparent'; all other--- 'X11Color' values are completely opaque.-x11Colour :: X11Color -> AlphaColour Double-x11Colour AliceBlue = opaque $ sRGB24 240 248 255-x11Colour AntiqueWhite = opaque $ sRGB24 250 235 215-x11Colour AntiqueWhite1 = opaque $ sRGB24 255 239 219-x11Colour AntiqueWhite2 = opaque $ sRGB24 238 223 204-x11Colour AntiqueWhite3 = opaque $ sRGB24 205 192 176-x11Colour AntiqueWhite4 = opaque $ sRGB24 139 131 120-x11Colour Aquamarine = opaque $ sRGB24 127 255 212-x11Colour Aquamarine1 = opaque $ sRGB24 127 255 212-x11Colour Aquamarine2 = opaque $ sRGB24 118 238 198-x11Colour Aquamarine3 = opaque $ sRGB24 102 205 170-x11Colour Aquamarine4 = opaque $ sRGB24 69 139 116-x11Colour Azure = opaque $ sRGB24 240 255 255-x11Colour Azure1 = opaque $ sRGB24 240 255 255-x11Colour Azure2 = opaque $ sRGB24 224 238 238-x11Colour Azure3 = opaque $ sRGB24 193 205 205-x11Colour Azure4 = opaque $ sRGB24 131 139 139-x11Colour Beige = opaque $ sRGB24 245 245 220-x11Colour Bisque = opaque $ sRGB24 255 228 196-x11Colour Bisque1 = opaque $ sRGB24 255 228 196-x11Colour Bisque2 = opaque $ sRGB24 238 213 183-x11Colour Bisque3 = opaque $ sRGB24 205 183 158-x11Colour Bisque4 = opaque $ sRGB24 139 125 107-x11Colour Black = opaque $ sRGB24 0 0 0-x11Colour BlanchedAlmond = opaque $ sRGB24 255 235 205-x11Colour Blue = opaque $ sRGB24 0 0 255-x11Colour Blue1 = opaque $ sRGB24 0 0 255-x11Colour Blue2 = opaque $ sRGB24 0 0 238-x11Colour Blue3 = opaque $ sRGB24 0 0 205-x11Colour Blue4 = opaque $ sRGB24 0 0 139-x11Colour BlueViolet = opaque $ sRGB24 138 43 226-x11Colour Brown = opaque $ sRGB24 165 42 42-x11Colour Brown1 = opaque $ sRGB24 255 64 64-x11Colour Brown2 = opaque $ sRGB24 238 59 59-x11Colour Brown3 = opaque $ sRGB24 205 51 51-x11Colour Brown4 = opaque $ sRGB24 139 35 35-x11Colour Burlywood = opaque $ sRGB24 222 184 135-x11Colour Burlywood1 = opaque $ sRGB24 255 211 155-x11Colour Burlywood2 = opaque $ sRGB24 238 197 145-x11Colour Burlywood3 = opaque $ sRGB24 205 170 125-x11Colour Burlywood4 = opaque $ sRGB24 139 115 85-x11Colour CadetBlue = opaque $ sRGB24 95 158 160-x11Colour CadetBlue1 = opaque $ sRGB24 152 245 255-x11Colour CadetBlue2 = opaque $ sRGB24 142 229 238-x11Colour CadetBlue3 = opaque $ sRGB24 122 197 205-x11Colour CadetBlue4 = opaque $ sRGB24 83 134 139-x11Colour Chartreuse = opaque $ sRGB24 127 255 0-x11Colour Chartreuse1 = opaque $ sRGB24 127 255 0-x11Colour Chartreuse2 = opaque $ sRGB24 118 238 0-x11Colour Chartreuse3 = opaque $ sRGB24 102 205 0-x11Colour Chartreuse4 = opaque $ sRGB24 69 139 0-x11Colour Chocolate = opaque $ sRGB24 210 105 30-x11Colour Chocolate1 = opaque $ sRGB24 255 127 36-x11Colour Chocolate2 = opaque $ sRGB24 238 118 33-x11Colour Chocolate3 = opaque $ sRGB24 205 102 29-x11Colour Chocolate4 = opaque $ sRGB24 139 69 19-x11Colour Coral = opaque $ sRGB24 255 127 80-x11Colour Coral1 = opaque $ sRGB24 255 114 86-x11Colour Coral2 = opaque $ sRGB24 238 106 80-x11Colour Coral3 = opaque $ sRGB24 205 91 69-x11Colour Coral4 = opaque $ sRGB24 139 62 47-x11Colour CornFlowerBlue = opaque $ sRGB24 100 149 237-x11Colour CornSilk = opaque $ sRGB24 255 248 220-x11Colour CornSilk1 = opaque $ sRGB24 255 248 220-x11Colour CornSilk2 = opaque $ sRGB24 238 232 205-x11Colour CornSilk3 = opaque $ sRGB24 205 200 177-x11Colour CornSilk4 = opaque $ sRGB24 139 136 120-x11Colour Crimson = opaque $ sRGB24 220 20 60-x11Colour Cyan = opaque $ sRGB24 0 255 255-x11Colour Cyan1 = opaque $ sRGB24 0 255 255-x11Colour Cyan2 = opaque $ sRGB24 0 238 238-x11Colour Cyan3 = opaque $ sRGB24 0 205 205-x11Colour Cyan4 = opaque $ sRGB24 0 139 139-x11Colour DarkGoldenrod = opaque $ sRGB24 184 134 11-x11Colour DarkGoldenrod1 = opaque $ sRGB24 255 185 15-x11Colour DarkGoldenrod2 = opaque $ sRGB24 238 173 14-x11Colour DarkGoldenrod3 = opaque $ sRGB24 205 149 12-x11Colour DarkGoldenrod4 = opaque $ sRGB24 139 101 8-x11Colour DarkGreen = opaque $ sRGB24 0 100 0-x11Colour Darkkhaki = opaque $ sRGB24 189 183 107-x11Colour DarkOliveGreen = opaque $ sRGB24 85 107 47-x11Colour DarkOliveGreen1 = opaque $ sRGB24 202 255 112-x11Colour DarkOliveGreen2 = opaque $ sRGB24 188 238 104-x11Colour DarkOliveGreen3 = opaque $ sRGB24 162 205 90-x11Colour DarkOliveGreen4 = opaque $ sRGB24 110 139 61-x11Colour DarkOrange = opaque $ sRGB24 255 140 0-x11Colour DarkOrange1 = opaque $ sRGB24 255 127 0-x11Colour DarkOrange2 = opaque $ sRGB24 238 118 0-x11Colour DarkOrange3 = opaque $ sRGB24 205 102 0-x11Colour DarkOrange4 = opaque $ sRGB24 139 69 0-x11Colour DarkOrchid = opaque $ sRGB24 153 50 204-x11Colour DarkOrchid1 = opaque $ sRGB24 191 62 255-x11Colour DarkOrchid2 = opaque $ sRGB24 178 58 238-x11Colour DarkOrchid3 = opaque $ sRGB24 154 50 205-x11Colour DarkOrchid4 = opaque $ sRGB24 104 34 139-x11Colour DarkSalmon = opaque $ sRGB24 233 150 122-x11Colour DarkSeaGreen = opaque $ sRGB24 143 188 143-x11Colour DarkSeaGreen1 = opaque $ sRGB24 193 255 193-x11Colour DarkSeaGreen2 = opaque $ sRGB24 180 238 180-x11Colour DarkSeaGreen3 = opaque $ sRGB24 155 205 155-x11Colour DarkSeaGreen4 = opaque $ sRGB24 105 139 105-x11Colour DarkSlateBlue = opaque $ sRGB24 72 61 139-x11Colour DarkSlateGray = opaque $ sRGB24 47 79 79-x11Colour DarkSlateGray1 = opaque $ sRGB24 151 255 255-x11Colour DarkSlateGray2 = opaque $ sRGB24 141 238 238-x11Colour DarkSlateGray3 = opaque $ sRGB24 121 205 205-x11Colour DarkSlateGray4 = opaque $ sRGB24 82 139 139-x11Colour DarkTurquoise = opaque $ sRGB24 0 206 209-x11Colour DarkViolet = opaque $ sRGB24 148 0 211-x11Colour DeepPink = opaque $ sRGB24 255 20 147-x11Colour DeepPink1 = opaque $ sRGB24 255 20 147-x11Colour DeepPink2 = opaque $ sRGB24 238 18 137-x11Colour DeepPink3 = opaque $ sRGB24 205 16 118-x11Colour DeepPink4 = opaque $ sRGB24 139 10 80-x11Colour DeepSkyBlue = opaque $ sRGB24 0 191 255-x11Colour DeepSkyBlue1 = opaque $ sRGB24 0 191 255-x11Colour DeepSkyBlue2 = opaque $ sRGB24 0 178 238-x11Colour DeepSkyBlue3 = opaque $ sRGB24 0 154 205-x11Colour DeepSkyBlue4 = opaque $ sRGB24 0 104 139-x11Colour DimGray = opaque $ sRGB24 105 105 105-x11Colour DodgerBlue = opaque $ sRGB24 30 144 255-x11Colour DodgerBlue1 = opaque $ sRGB24 30 144 255-x11Colour DodgerBlue2 = opaque $ sRGB24 28 134 238-x11Colour DodgerBlue3 = opaque $ sRGB24 24 116 205-x11Colour DodgerBlue4 = opaque $ sRGB24 16 78 139-x11Colour Firebrick = opaque $ sRGB24 178 34 34-x11Colour Firebrick1 = opaque $ sRGB24 255 48 48-x11Colour Firebrick2 = opaque $ sRGB24 238 44 44-x11Colour Firebrick3 = opaque $ sRGB24 205 38 38-x11Colour Firebrick4 = opaque $ sRGB24 139 26 26-x11Colour FloralWhite = opaque $ sRGB24 255 250 240-x11Colour ForestGreen = opaque $ sRGB24 34 139 34-x11Colour Gainsboro = opaque $ sRGB24 220 220 220-x11Colour GhostWhite = opaque $ sRGB24 248 248 255-x11Colour Gold = opaque $ sRGB24 255 215 0-x11Colour Gold1 = opaque $ sRGB24 255 215 0-x11Colour Gold2 = opaque $ sRGB24 238 201 0-x11Colour Gold3 = opaque $ sRGB24 205 173 0-x11Colour Gold4 = opaque $ sRGB24 139 117 0-x11Colour Goldenrod = opaque $ sRGB24 218 165 32-x11Colour Goldenrod1 = opaque $ sRGB24 255 193 37-x11Colour Goldenrod2 = opaque $ sRGB24 238 180 34-x11Colour Goldenrod3 = opaque $ sRGB24 205 155 29-x11Colour Goldenrod4 = opaque $ sRGB24 139 105 20-x11Colour Gray = opaque $ sRGB24 192 192 192-x11Colour Gray0 = opaque $ sRGB24 0 0 0-x11Colour Gray1 = opaque $ sRGB24 3 3 3-x11Colour Gray2 = opaque $ sRGB24 5 5 5-x11Colour Gray3 = opaque $ sRGB24 8 8 8-x11Colour Gray4 = opaque $ sRGB24 10 10 10-x11Colour Gray5 = opaque $ sRGB24 13 13 13-x11Colour Gray6 = opaque $ sRGB24 15 15 15-x11Colour Gray7 = opaque $ sRGB24 18 18 18-x11Colour Gray8 = opaque $ sRGB24 20 20 20-x11Colour Gray9 = opaque $ sRGB24 23 23 23-x11Colour Gray10 = opaque $ sRGB24 26 26 26-x11Colour Gray11 = opaque $ sRGB24 28 28 28-x11Colour Gray12 = opaque $ sRGB24 31 31 31-x11Colour Gray13 = opaque $ sRGB24 33 33 33-x11Colour Gray14 = opaque $ sRGB24 36 36 36-x11Colour Gray15 = opaque $ sRGB24 38 38 38-x11Colour Gray16 = opaque $ sRGB24 41 41 41-x11Colour Gray17 = opaque $ sRGB24 43 43 43-x11Colour Gray18 = opaque $ sRGB24 46 46 46-x11Colour Gray19 = opaque $ sRGB24 48 48 48-x11Colour Gray20 = opaque $ sRGB24 51 51 51-x11Colour Gray21 = opaque $ sRGB24 54 54 54-x11Colour Gray22 = opaque $ sRGB24 56 56 56-x11Colour Gray23 = opaque $ sRGB24 59 59 59-x11Colour Gray24 = opaque $ sRGB24 61 61 61-x11Colour Gray25 = opaque $ sRGB24 64 64 64-x11Colour Gray26 = opaque $ sRGB24 66 66 66-x11Colour Gray27 = opaque $ sRGB24 69 69 69-x11Colour Gray28 = opaque $ sRGB24 71 71 71-x11Colour Gray29 = opaque $ sRGB24 74 74 74-x11Colour Gray30 = opaque $ sRGB24 77 77 77-x11Colour Gray31 = opaque $ sRGB24 79 79 79-x11Colour Gray32 = opaque $ sRGB24 82 82 82-x11Colour Gray33 = opaque $ sRGB24 84 84 84-x11Colour Gray34 = opaque $ sRGB24 87 87 87-x11Colour Gray35 = opaque $ sRGB24 89 89 89-x11Colour Gray36 = opaque $ sRGB24 92 92 92-x11Colour Gray37 = opaque $ sRGB24 94 94 94-x11Colour Gray38 = opaque $ sRGB24 97 97 97-x11Colour Gray39 = opaque $ sRGB24 99 99 99-x11Colour Gray40 = opaque $ sRGB24 102 102 102-x11Colour Gray41 = opaque $ sRGB24 105 105 105-x11Colour Gray42 = opaque $ sRGB24 107 107 107-x11Colour Gray43 = opaque $ sRGB24 110 110 110-x11Colour Gray44 = opaque $ sRGB24 112 112 112-x11Colour Gray45 = opaque $ sRGB24 115 115 115-x11Colour Gray46 = opaque $ sRGB24 117 117 117-x11Colour Gray47 = opaque $ sRGB24 120 120 120-x11Colour Gray48 = opaque $ sRGB24 122 122 122-x11Colour Gray49 = opaque $ sRGB24 125 125 125-x11Colour Gray50 = opaque $ sRGB24 127 127 127-x11Colour Gray51 = opaque $ sRGB24 130 130 130-x11Colour Gray52 = opaque $ sRGB24 133 133 133-x11Colour Gray53 = opaque $ sRGB24 135 135 135-x11Colour Gray54 = opaque $ sRGB24 138 138 138-x11Colour Gray55 = opaque $ sRGB24 140 140 140-x11Colour Gray56 = opaque $ sRGB24 143 143 143-x11Colour Gray57 = opaque $ sRGB24 145 145 145-x11Colour Gray58 = opaque $ sRGB24 148 148 148-x11Colour Gray59 = opaque $ sRGB24 150 150 150-x11Colour Gray60 = opaque $ sRGB24 153 153 153-x11Colour Gray61 = opaque $ sRGB24 156 156 156-x11Colour Gray62 = opaque $ sRGB24 158 158 158-x11Colour Gray63 = opaque $ sRGB24 161 161 161-x11Colour Gray64 = opaque $ sRGB24 163 163 163-x11Colour Gray65 = opaque $ sRGB24 166 166 166-x11Colour Gray66 = opaque $ sRGB24 168 168 168-x11Colour Gray67 = opaque $ sRGB24 171 171 171-x11Colour Gray68 = opaque $ sRGB24 173 173 173-x11Colour Gray69 = opaque $ sRGB24 176 176 176-x11Colour Gray70 = opaque $ sRGB24 179 179 179-x11Colour Gray71 = opaque $ sRGB24 181 181 181-x11Colour Gray72 = opaque $ sRGB24 184 184 184-x11Colour Gray73 = opaque $ sRGB24 186 186 186-x11Colour Gray74 = opaque $ sRGB24 189 189 189-x11Colour Gray75 = opaque $ sRGB24 191 191 191-x11Colour Gray76 = opaque $ sRGB24 194 194 194-x11Colour Gray77 = opaque $ sRGB24 196 196 196-x11Colour Gray78 = opaque $ sRGB24 199 199 199-x11Colour Gray79 = opaque $ sRGB24 201 201 201-x11Colour Gray80 = opaque $ sRGB24 204 204 204-x11Colour Gray81 = opaque $ sRGB24 207 207 207-x11Colour Gray82 = opaque $ sRGB24 209 209 209-x11Colour Gray83 = opaque $ sRGB24 212 212 212-x11Colour Gray84 = opaque $ sRGB24 214 214 214-x11Colour Gray85 = opaque $ sRGB24 217 217 217-x11Colour Gray86 = opaque $ sRGB24 219 219 219-x11Colour Gray87 = opaque $ sRGB24 222 222 222-x11Colour Gray88 = opaque $ sRGB24 224 224 224-x11Colour Gray89 = opaque $ sRGB24 227 227 227-x11Colour Gray90 = opaque $ sRGB24 229 229 229-x11Colour Gray91 = opaque $ sRGB24 232 232 232-x11Colour Gray92 = opaque $ sRGB24 235 235 235-x11Colour Gray93 = opaque $ sRGB24 237 237 237-x11Colour Gray94 = opaque $ sRGB24 240 240 240-x11Colour Gray95 = opaque $ sRGB24 242 242 242-x11Colour Gray96 = opaque $ sRGB24 245 245 245-x11Colour Gray97 = opaque $ sRGB24 247 247 247-x11Colour Gray98 = opaque $ sRGB24 250 250 250-x11Colour Gray99 = opaque $ sRGB24 252 252 252-x11Colour Gray100 = opaque $ sRGB24 255 255 255-x11Colour Green = opaque $ sRGB24 0 255 0-x11Colour Green1 = opaque $ sRGB24 0 255 0-x11Colour Green2 = opaque $ sRGB24 0 238 0-x11Colour Green3 = opaque $ sRGB24 0 205 0-x11Colour Green4 = opaque $ sRGB24 0 139 0-x11Colour GreenYellow = opaque $ sRGB24 173 255 47-x11Colour HoneyDew = opaque $ sRGB24 240 255 240-x11Colour HoneyDew1 = opaque $ sRGB24 240 255 240-x11Colour HoneyDew2 = opaque $ sRGB24 224 238 224-x11Colour HoneyDew3 = opaque $ sRGB24 193 205 193-x11Colour HoneyDew4 = opaque $ sRGB24 131 139 131-x11Colour HotPink = opaque $ sRGB24 255 105 180-x11Colour HotPink1 = opaque $ sRGB24 255 110 180-x11Colour HotPink2 = opaque $ sRGB24 238 106 167-x11Colour HotPink3 = opaque $ sRGB24 205 96 144-x11Colour HotPink4 = opaque $ sRGB24 139 58 98-x11Colour IndianRed = opaque $ sRGB24 205 92 92-x11Colour IndianRed1 = opaque $ sRGB24 255 106 106-x11Colour IndianRed2 = opaque $ sRGB24 238 99 99-x11Colour IndianRed3 = opaque $ sRGB24 205 85 85-x11Colour IndianRed4 = opaque $ sRGB24 139 58 58-x11Colour Indigo = opaque $ sRGB24 75 0 130-x11Colour Ivory = opaque $ sRGB24 255 255 240-x11Colour Ivory1 = opaque $ sRGB24 255 255 240-x11Colour Ivory2 = opaque $ sRGB24 238 238 224-x11Colour Ivory3 = opaque $ sRGB24 205 205 193-x11Colour Ivory4 = opaque $ sRGB24 139 139 131-x11Colour Khaki = opaque $ sRGB24 240 230 140-x11Colour Khaki1 = opaque $ sRGB24 255 246 143-x11Colour Khaki2 = opaque $ sRGB24 238 230 133-x11Colour Khaki3 = opaque $ sRGB24 205 198 115-x11Colour Khaki4 = opaque $ sRGB24 139 134 78-x11Colour Lavender = opaque $ sRGB24 230 230 250-x11Colour LavenderBlush = opaque $ sRGB24 255 240 245-x11Colour LavenderBlush1 = opaque $ sRGB24 255 240 245-x11Colour LavenderBlush2 = opaque $ sRGB24 238 224 229-x11Colour LavenderBlush3 = opaque $ sRGB24 205 193 197-x11Colour LavenderBlush4 = opaque $ sRGB24 139 131 134-x11Colour LawnGreen = opaque $ sRGB24 124 252 0-x11Colour LemonChiffon = opaque $ sRGB24 255 250 205-x11Colour LemonChiffon1 = opaque $ sRGB24 255 250 205-x11Colour LemonChiffon2 = opaque $ sRGB24 238 233 191-x11Colour LemonChiffon3 = opaque $ sRGB24 205 201 165-x11Colour LemonChiffon4 = opaque $ sRGB24 139 137 112-x11Colour LightBlue = opaque $ sRGB24 173 216 230-x11Colour LightBlue1 = opaque $ sRGB24 191 239 255-x11Colour LightBlue2 = opaque $ sRGB24 178 223 238-x11Colour LightBlue3 = opaque $ sRGB24 154 192 205-x11Colour LightBlue4 = opaque $ sRGB24 104 131 139-x11Colour LightCoral = opaque $ sRGB24 240 128 128-x11Colour LightCyan = opaque $ sRGB24 224 255 255-x11Colour LightCyan1 = opaque $ sRGB24 224 255 255-x11Colour LightCyan2 = opaque $ sRGB24 209 238 238-x11Colour LightCyan3 = opaque $ sRGB24 180 205 205-x11Colour LightCyan4 = opaque $ sRGB24 122 139 139-x11Colour LightGoldenrod = opaque $ sRGB24 238 221 130-x11Colour LightGoldenrod1 = opaque $ sRGB24 255 236 139-x11Colour LightGoldenrod2 = opaque $ sRGB24 238 220 130-x11Colour LightGoldenrod3 = opaque $ sRGB24 205 190 112-x11Colour LightGoldenrod4 = opaque $ sRGB24 139 129 76-x11Colour LightGoldenrodYellow = opaque $ sRGB24 250 250 210-x11Colour LightGray = opaque $ sRGB24 211 211 211-x11Colour LightPink = opaque $ sRGB24 255 182 193-x11Colour LightPink1 = opaque $ sRGB24 255 174 185-x11Colour LightPink2 = opaque $ sRGB24 238 162 173-x11Colour LightPink3 = opaque $ sRGB24 205 140 149-x11Colour LightPink4 = opaque $ sRGB24 139 95 101-x11Colour LightSalmon = opaque $ sRGB24 255 160 122-x11Colour LightSalmon1 = opaque $ sRGB24 255 160 122-x11Colour LightSalmon2 = opaque $ sRGB24 238 149 114-x11Colour LightSalmon3 = opaque $ sRGB24 205 129 98-x11Colour LightSalmon4 = opaque $ sRGB24 139 87 66-x11Colour LightSeaGreen = opaque $ sRGB24 32 178 170-x11Colour LightSkyBlue = opaque $ sRGB24 135 206 250-x11Colour LightSkyBlue1 = opaque $ sRGB24 176 226 255-x11Colour LightSkyBlue2 = opaque $ sRGB24 164 211 238-x11Colour LightSkyBlue3 = opaque $ sRGB24 141 182 205-x11Colour LightSkyBlue4 = opaque $ sRGB24 96 123 139-x11Colour LightSlateBlue = opaque $ sRGB24 132 112 255-x11Colour LightSlateGray = opaque $ sRGB24 119 136 153-x11Colour LightSteelBlue = opaque $ sRGB24 176 196 222-x11Colour LightSteelBlue1 = opaque $ sRGB24 202 225 255-x11Colour LightSteelBlue2 = opaque $ sRGB24 188 210 238-x11Colour LightSteelBlue3 = opaque $ sRGB24 162 181 205-x11Colour LightSteelBlue4 = opaque $ sRGB24 110 123 139-x11Colour LightYellow = opaque $ sRGB24 255 255 224-x11Colour LightYellow1 = opaque $ sRGB24 255 255 224-x11Colour LightYellow2 = opaque $ sRGB24 238 238 209-x11Colour LightYellow3 = opaque $ sRGB24 205 205 180-x11Colour LightYellow4 = opaque $ sRGB24 139 139 122-x11Colour LimeGreen = opaque $ sRGB24 50 205 50-x11Colour Linen = opaque $ sRGB24 250 240 230-x11Colour Magenta = opaque $ sRGB24 255 0 255-x11Colour Magenta1 = opaque $ sRGB24 255 0 255-x11Colour Magenta2 = opaque $ sRGB24 238 0 238-x11Colour Magenta3 = opaque $ sRGB24 205 0 205-x11Colour Magenta4 = opaque $ sRGB24 139 0 139-x11Colour Maroon = opaque $ sRGB24 176 48 96-x11Colour Maroon1 = opaque $ sRGB24 255 52 179-x11Colour Maroon2 = opaque $ sRGB24 238 48 167-x11Colour Maroon3 = opaque $ sRGB24 205 41 144-x11Colour Maroon4 = opaque $ sRGB24 139 28 98-x11Colour MediumAquamarine = opaque $ sRGB24 102 205 170-x11Colour MediumBlue = opaque $ sRGB24 0 0 205-x11Colour MediumOrchid = opaque $ sRGB24 186 85 211-x11Colour MediumOrchid1 = opaque $ sRGB24 224 102 255-x11Colour MediumOrchid2 = opaque $ sRGB24 209 95 238-x11Colour MediumOrchid3 = opaque $ sRGB24 180 82 205-x11Colour MediumOrchid4 = opaque $ sRGB24 122 55 139-x11Colour MediumPurple = opaque $ sRGB24 147 112 219-x11Colour MediumPurple1 = opaque $ sRGB24 171 130 255-x11Colour MediumPurple2 = opaque $ sRGB24 159 121 238-x11Colour MediumPurple3 = opaque $ sRGB24 137 104 205-x11Colour MediumPurple4 = opaque $ sRGB24 93 71 139-x11Colour MediumSeaGreen = opaque $ sRGB24 60 179 113-x11Colour MediumSlateBlue = opaque $ sRGB24 123 104 238-x11Colour MediumSpringGreen = opaque $ sRGB24 0 250 154-x11Colour MediumTurquoise = opaque $ sRGB24 72 209 204-x11Colour MediumVioletRed = opaque $ sRGB24 199 21 133-x11Colour MidnightBlue = opaque $ sRGB24 25 25 112-x11Colour MintCream = opaque $ sRGB24 245 255 250-x11Colour MistyRose = opaque $ sRGB24 255 228 225-x11Colour MistyRose1 = opaque $ sRGB24 255 228 225-x11Colour MistyRose2 = opaque $ sRGB24 238 213 210-x11Colour MistyRose3 = opaque $ sRGB24 205 183 181-x11Colour MistyRose4 = opaque $ sRGB24 139 125 123-x11Colour Moccasin = opaque $ sRGB24 255 228 181-x11Colour NavajoWhite = opaque $ sRGB24 255 222 173-x11Colour NavajoWhite1 = opaque $ sRGB24 255 222 173-x11Colour NavajoWhite2 = opaque $ sRGB24 238 207 161-x11Colour NavajoWhite3 = opaque $ sRGB24 205 179 139-x11Colour NavajoWhite4 = opaque $ sRGB24 139 121 94-x11Colour Navy = opaque $ sRGB24 0 0 128-x11Colour NavyBlue = opaque $ sRGB24 0 0 128-x11Colour OldLace = opaque $ sRGB24 253 245 230-x11Colour OliveDrab = opaque $ sRGB24 107 142 35-x11Colour OliveDrab1 = opaque $ sRGB24 192 255 62-x11Colour OliveDrab2 = opaque $ sRGB24 179 238 58-x11Colour OliveDrab3 = opaque $ sRGB24 154 205 50-x11Colour OliveDrab4 = opaque $ sRGB24 105 139 34-x11Colour Orange = opaque $ sRGB24 255 165 0-x11Colour Orange1 = opaque $ sRGB24 255 165 0-x11Colour Orange2 = opaque $ sRGB24 238 154 0-x11Colour Orange3 = opaque $ sRGB24 205 133 0-x11Colour Orange4 = opaque $ sRGB24 139 90 0-x11Colour OrangeRed = opaque $ sRGB24 255 69 0-x11Colour OrangeRed1 = opaque $ sRGB24 255 69 0-x11Colour OrangeRed2 = opaque $ sRGB24 238 64 0-x11Colour OrangeRed3 = opaque $ sRGB24 205 55 0-x11Colour OrangeRed4 = opaque $ sRGB24 139 37 0-x11Colour Orchid = opaque $ sRGB24 218 112 214-x11Colour Orchid1 = opaque $ sRGB24 255 131 250-x11Colour Orchid2 = opaque $ sRGB24 238 122 233-x11Colour Orchid3 = opaque $ sRGB24 205 105 201-x11Colour Orchid4 = opaque $ sRGB24 139 71 137-x11Colour PaleGoldenrod = opaque $ sRGB24 238 232 170-x11Colour PaleGreen = opaque $ sRGB24 152 251 152-x11Colour PaleGreen1 = opaque $ sRGB24 154 255 154-x11Colour PaleGreen2 = opaque $ sRGB24 144 238 144-x11Colour PaleGreen3 = opaque $ sRGB24 124 205 124-x11Colour PaleGreen4 = opaque $ sRGB24 84 139 84-x11Colour PaleTurquoise = opaque $ sRGB24 175 238 238-x11Colour PaleTurquoise1 = opaque $ sRGB24 187 255 255-x11Colour PaleTurquoise2 = opaque $ sRGB24 174 238 238-x11Colour PaleTurquoise3 = opaque $ sRGB24 150 205 205-x11Colour PaleTurquoise4 = opaque $ sRGB24 102 139 139-x11Colour PaleVioletRed = opaque $ sRGB24 219 112 147-x11Colour PaleVioletRed1 = opaque $ sRGB24 255 130 171-x11Colour PaleVioletRed2 = opaque $ sRGB24 238 121 159-x11Colour PaleVioletRed3 = opaque $ sRGB24 205 104 137-x11Colour PaleVioletRed4 = opaque $ sRGB24 139 71 93-x11Colour PapayaWhip = opaque $ sRGB24 255 239 213-x11Colour PeachPuff = opaque $ sRGB24 255 218 185-x11Colour PeachPuff1 = opaque $ sRGB24 255 218 185-x11Colour PeachPuff2 = opaque $ sRGB24 238 203 173-x11Colour PeachPuff3 = opaque $ sRGB24 205 175 149-x11Colour PeachPuff4 = opaque $ sRGB24 139 119 101-x11Colour Peru = opaque $ sRGB24 205 133 63-x11Colour Pink = opaque $ sRGB24 255 192 203-x11Colour Pink1 = opaque $ sRGB24 255 181 197-x11Colour Pink2 = opaque $ sRGB24 238 169 184-x11Colour Pink3 = opaque $ sRGB24 205 145 158-x11Colour Pink4 = opaque $ sRGB24 139 99 108-x11Colour Plum = opaque $ sRGB24 221 160 221-x11Colour Plum1 = opaque $ sRGB24 255 187 255-x11Colour Plum2 = opaque $ sRGB24 238 174 238-x11Colour Plum3 = opaque $ sRGB24 205 150 205-x11Colour Plum4 = opaque $ sRGB24 139 102 139-x11Colour PowderBlue = opaque $ sRGB24 176 224 230-x11Colour Purple = opaque $ sRGB24 160 32 240-x11Colour Purple1 = opaque $ sRGB24 155 48 255-x11Colour Purple2 = opaque $ sRGB24 145 44 238-x11Colour Purple3 = opaque $ sRGB24 125 38 205-x11Colour Purple4 = opaque $ sRGB24 85 26 139-x11Colour Red = opaque $ sRGB24 255 0 0-x11Colour Red1 = opaque $ sRGB24 255 0 0-x11Colour Red2 = opaque $ sRGB24 238 0 0-x11Colour Red3 = opaque $ sRGB24 205 0 0-x11Colour Red4 = opaque $ sRGB24 139 0 0-x11Colour RosyBrown = opaque $ sRGB24 188 143 143-x11Colour RosyBrown1 = opaque $ sRGB24 255 193 193-x11Colour RosyBrown2 = opaque $ sRGB24 238 180 180-x11Colour RosyBrown3 = opaque $ sRGB24 205 155 155-x11Colour RosyBrown4 = opaque $ sRGB24 139 105 105-x11Colour RoyalBlue = opaque $ sRGB24 65 105 225-x11Colour RoyalBlue1 = opaque $ sRGB24 72 118 255-x11Colour RoyalBlue2 = opaque $ sRGB24 67 110 238-x11Colour RoyalBlue3 = opaque $ sRGB24 58 95 205-x11Colour RoyalBlue4 = opaque $ sRGB24 39 64 139-x11Colour SaddleBrown = opaque $ sRGB24 139 69 19-x11Colour Salmon = opaque $ sRGB24 250 128 114-x11Colour Salmon1 = opaque $ sRGB24 255 140 105-x11Colour Salmon2 = opaque $ sRGB24 238 130 98-x11Colour Salmon3 = opaque $ sRGB24 205 112 84-x11Colour Salmon4 = opaque $ sRGB24 139 76 57-x11Colour SandyBrown = opaque $ sRGB24 244 164 96-x11Colour SeaGreen = opaque $ sRGB24 46 139 87-x11Colour SeaGreen1 = opaque $ sRGB24 84 255 159-x11Colour SeaGreen2 = opaque $ sRGB24 78 238 148-x11Colour SeaGreen3 = opaque $ sRGB24 67 205 128-x11Colour SeaGreen4 = opaque $ sRGB24 46 139 87-x11Colour SeaShell = opaque $ sRGB24 255 245 238-x11Colour SeaShell1 = opaque $ sRGB24 255 245 238-x11Colour SeaShell2 = opaque $ sRGB24 238 229 222-x11Colour SeaShell3 = opaque $ sRGB24 205 197 191-x11Colour SeaShell4 = opaque $ sRGB24 139 134 130-x11Colour Sienna = opaque $ sRGB24 160 82 45-x11Colour Sienna1 = opaque $ sRGB24 255 130 71-x11Colour Sienna2 = opaque $ sRGB24 238 121 66-x11Colour Sienna3 = opaque $ sRGB24 205 104 57-x11Colour Sienna4 = opaque $ sRGB24 139 71 38-x11Colour SkyBlue = opaque $ sRGB24 135 206 235-x11Colour SkyBlue1 = opaque $ sRGB24 135 206 255-x11Colour SkyBlue2 = opaque $ sRGB24 126 192 238-x11Colour SkyBlue3 = opaque $ sRGB24 108 166 205-x11Colour SkyBlue4 = opaque $ sRGB24 74 112 139-x11Colour SlateBlue = opaque $ sRGB24 106 90 205-x11Colour SlateBlue1 = opaque $ sRGB24 131 111 255-x11Colour SlateBlue2 = opaque $ sRGB24 122 103 238-x11Colour SlateBlue3 = opaque $ sRGB24 105 89 205-x11Colour SlateBlue4 = opaque $ sRGB24 71 60 139-x11Colour SlateGray = opaque $ sRGB24 112 128 144-x11Colour SlateGray1 = opaque $ sRGB24 198 226 255-x11Colour SlateGray2 = opaque $ sRGB24 185 211 238-x11Colour SlateGray3 = opaque $ sRGB24 159 182 205-x11Colour SlateGray4 = opaque $ sRGB24 108 123 139-x11Colour Snow = opaque $ sRGB24 255 250 250-x11Colour Snow1 = opaque $ sRGB24 255 250 250-x11Colour Snow2 = opaque $ sRGB24 238 233 233-x11Colour Snow3 = opaque $ sRGB24 205 201 201-x11Colour Snow4 = opaque $ sRGB24 139 137 137-x11Colour SpringGreen = opaque $ sRGB24 0 255 127-x11Colour SpringGreen1 = opaque $ sRGB24 0 255 127-x11Colour SpringGreen2 = opaque $ sRGB24 0 238 118-x11Colour SpringGreen3 = opaque $ sRGB24 0 205 102-x11Colour SpringGreen4 = opaque $ sRGB24 0 139 69-x11Colour SteelBlue = opaque $ sRGB24 70 130 180-x11Colour SteelBlue1 = opaque $ sRGB24 99 184 255-x11Colour SteelBlue2 = opaque $ sRGB24 92 172 238-x11Colour SteelBlue3 = opaque $ sRGB24 79 148 205-x11Colour SteelBlue4 = opaque $ sRGB24 54 100 139-x11Colour Tan = opaque $ sRGB24 210 180 140-x11Colour Tan1 = opaque $ sRGB24 255 165 79-x11Colour Tan2 = opaque $ sRGB24 238 154 73-x11Colour Tan3 = opaque $ sRGB24 205 133 63-x11Colour Tan4 = opaque $ sRGB24 139 90 43-x11Colour Thistle = opaque $ sRGB24 216 191 216-x11Colour Thistle1 = opaque $ sRGB24 255 225 255-x11Colour Thistle2 = opaque $ sRGB24 238 210 238-x11Colour Thistle3 = opaque $ sRGB24 205 181 205-x11Colour Thistle4 = opaque $ sRGB24 139 123 139-x11Colour Tomato = opaque $ sRGB24 255 99 71-x11Colour Tomato1 = opaque $ sRGB24 255 99 71-x11Colour Tomato2 = opaque $ sRGB24 238 92 66-x11Colour Tomato3 = opaque $ sRGB24 205 79 57-x11Colour Tomato4 = opaque $ sRGB24 139 54 38-x11Colour Transparent = transparent-x11Colour Turquoise = opaque $ sRGB24 64 224 208-x11Colour Turquoise1 = opaque $ sRGB24 0 245 255-x11Colour Turquoise2 = opaque $ sRGB24 0 229 238-x11Colour Turquoise3 = opaque $ sRGB24 0 197 205-x11Colour Turquoise4 = opaque $ sRGB24 0 134 139-x11Colour Violet = opaque $ sRGB24 238 130 238-x11Colour VioletRed = opaque $ sRGB24 208 32 144-x11Colour VioletRed1 = opaque $ sRGB24 255 62 150-x11Colour VioletRed2 = opaque $ sRGB24 238 58 140-x11Colour VioletRed3 = opaque $ sRGB24 205 50 120-x11Colour VioletRed4 = opaque $ sRGB24 139 34 82-x11Colour Wheat = opaque $ sRGB24 245 222 179-x11Colour Wheat1 = opaque $ sRGB24 255 231 186-x11Colour Wheat2 = opaque $ sRGB24 238 216 174-x11Colour Wheat3 = opaque $ sRGB24 205 186 150-x11Colour Wheat4 = opaque $ sRGB24 139 126 102-x11Colour White = opaque $ sRGB24 255 255 255-x11Colour WhiteSmoke = opaque $ sRGB24 245 245 245-x11Colour Yellow = opaque $ sRGB24 255 255 0-x11Colour Yellow1 = opaque $ sRGB24 255 255 0-x11Colour Yellow2 = opaque $ sRGB24 238 238 0-x11Colour Yellow3 = opaque $ sRGB24 205 205 0-x11Colour Yellow4 = opaque $ sRGB24 139 139 0-x11Colour YellowGreen = opaque $ sRGB24 154 205 50+ -- * Colors+ , Color(..)+ , NamedColor(toColor)+ -- * Conversion to\/from @Colour@.+ , toColour+ , fromColour+ , fromAColour+ ) where++import Data.GraphViz.Parsing+import Data.GraphViz.Printing+import Data.GraphViz.State+import Data.GraphViz.Attributes.ColorScheme(ColorScheme(..))+import Data.GraphViz.Attributes.Colors.X11(X11Color(Transparent), x11Colour)+import Data.GraphViz.Attributes.Colors.SVG(SVGColor, svgColour)+import Data.GraphViz.Attributes.Colors.Brewer(BrewerColor(..))+import Data.GraphViz.Util(bool)+import Data.GraphViz.Exception++import Data.Colour( AlphaColour, opaque, withOpacity+ , over, black, alphaChannel, darken)+import Data.Colour.SRGB(Colour, sRGB, sRGB24, toSRGB24)+import Data.Colour.RGBSpace(uncurryRGB)+import Data.Colour.RGBSpace.HSV(hsv)++import Data.Char(isHexDigit)+import Numeric(showHex, readHex)+import Data.Maybe(isJust)+import Data.Word(Word8)+import qualified Data.Text.Lazy as T+import Control.Monad(liftM)++-- -----------------------------------------------------------------------------++-- | Defining a color for use with Graphviz. Note that named colors+-- have been split up into 'X11Color's and those based upon the+-- Brewer color schemes.+data Color = RGB { red :: Word8+ , green :: Word8+ , blue :: Word8+ }+ | RGBA { red :: Word8+ , green :: Word8+ , blue :: Word8+ , alpha :: Word8+ }+ -- | The 'hue', 'saturation' and 'value' values must all+ -- be @0 <= x <=1@.+ | HSV { hue :: Double+ , saturation :: Double+ , value :: Double+ }+ | X11Color X11Color+ | SVGColor SVGColor+ | BrewerColor BrewerColor+ deriving (Eq, Ord, Show, Read)++instance PrintDot Color where+ unqtDot (RGB r g b) = hexColor [r,g,b]+ unqtDot (RGBA r g b a) = hexColor [r,g,b,a]+ unqtDot (HSV h s v) = hcat . punctuate comma $ mapM unqtDot [h,s,v]+ unqtDot (SVGColor name) = printNC False name+ unqtDot (X11Color name) = printNC False name+ unqtDot (BrewerColor bc) = printNC False bc++ -- Some cases might not need quotes.+ toDot (X11Color name) = printNC True name+ toDot (SVGColor name) = printNC True name+ toDot (BrewerColor bc) = printNC True bc+ toDot c = dquotes $ unqtDot c++ unqtListToDot = hcat . punctuate colon . mapM unqtDot++ -- These three might not need to be quoted if they're on their own.+ listToDot [X11Color name] = printNC True name+ listToDot [SVGColor name] = printNC True name+ listToDot [BrewerColor bc] = printNC True bc+ listToDot cs = dquotes $ unqtListToDot cs++hexColor :: [Word8] -> DotCode+hexColor = (<>) (char '#') . hcat . mapM word8Doc++word8Doc :: Word8 -> DotCode+word8Doc w = text $ padding `T.append` simple+ where+ simple = T.pack $ showHex w ""+ padding = T.replicate count (T.singleton '0')+ count = 2 - findCols 1 w+ findCols c n+ | n < 16 = c+ | otherwise = findCols (c+1) (n `div` 16)++instance ParseDot Color where+ parseUnqt = oneOf [ parseHexBased+ , parseHSV+ -- Have to parse BrewerColor first, as some of them may appear to be X11 colors+ , parseNC (undefined :: BrewerColor) False+ , parseNC (undefined :: SVGColor) False+ , parseX11Color False+ ]+ where+ parseHexBased+ = do character '#'+ cs <- many1 parse2Hex+ return $ case cs of+ [r,g,b] -> RGB r g b+ [r,g,b,a] -> RGBA r g b a+ _ -> throw . NotDotCode+ $ "Not a valid hex Color specification: "+ ++ show cs+ parseHSV = do h <- parse+ parseSep+ s <- parse+ parseSep+ v <- parse+ return $ HSV h s v+ parseSep = oneOf [ string ","+ , whitespace1+ ]+ parse2Hex = do c1 <- satisfy isHexDigit+ c2 <- satisfy isHexDigit+ let [(n, [])] = readHex [c1, c2]+ return n++ parse = quotedParse parseUnqt+ `onFail` -- These three might not need to be quoted+ oneOf [ parseNC (undefined :: BrewerColor) True+ , parseNC (undefined :: SVGColor) True+ , parseX11Color True+ ]++ parseUnqtList = sepBy1 parseUnqt (character ':')++ parseList = liftM (:[])+ -- Unquoted single color+ (oneOf [ parseNC (undefined :: BrewerColor) True+ , parseNC (undefined :: SVGColor) True+ , parseX11Color True+ ]+ )+ `onFail`+ quotedParse parseUnqtList++-- -----------------------------------------------------------------------------++-- | More easily convert named colors to an overall 'Color' value.+class NamedColor nc where+ colorScheme :: nc -> ColorScheme++ toColor :: nc -> Color++ printNC :: Bool -> nc -> DotCode++ parseNC' :: Bool -> Parse nc++-- First value just used for type+parseNC :: (NamedColor nc) => nc -> Bool -> Parse Color+parseNC nc q = fmap (toColor . flip asTypeOf nc)+ $ parseNC' q++instance NamedColor BrewerColor where+ colorScheme (BC bs _) = Brewer bs++ toColor = BrewerColor++ printNC = printNamedColor (\ (BC _ l) -> l)++ parseNC' = parseNamedColor mBCS parseUnqt (const True) BC+ where+ mBCS (Brewer bs) = Just bs+ mBCS _ = Nothing++instance NamedColor X11Color where+ colorScheme = const X11++ toColor = X11Color++ printNC = printNamedColor id++ parseNC' = parseNamedColor mX11 (parseColorScheme False) (isJust . mX11) (const id)+ where+ mX11 X11 = Just X11+ mX11 _ = Nothing++instance NamedColor SVGColor where+ colorScheme = const SVG++ toColor = SVGColor++ printNC = printNamedColor id++ parseNC' = parseNamedColor mSVG (parseColorScheme False) (isJust . mSVG) (const id)+ where+ mSVG SVG = Just SVG+ mSVG _ = Nothing++printNamedColor :: (NamedColor nc, PrintDot lv) => (nc -> lv)+ -> Bool -> nc -> DotCode+printNamedColor fl q c = do currentCS <- getColorScheme+ if cs == currentCS+ then (bool unqtDot toDot q) lv+ else bool id dquotes q+ $ fslash <> printColorScheme False cs+ <> fslash <> unqtDot lv+ where+ cs = colorScheme c+ lv = fl c++parseNamedColor :: (NamedColor nc, ParseDot lv)+ => (ColorScheme -> Maybe cs) -> Parse cs -> (cs -> Bool)+ -> (cs -> lv -> nc) -> Bool -> Parse nc+parseNamedColor gcs parseCS vcs mkC q+ = do Just cs <- gcs `fmap` getColorScheme+ lv <- bool parseUnqt parse q+ `onFail`+ mQts (string "//" *> parseUnqt)+ return $ mkC cs lv+ `onFail`+ mQts ( do character '/'+ cs <- parseCS+ character '/'+ if vcs cs+ then do lv <- parseUnqt+ return $ mkC cs lv+ else fail "Explicit colorscheme not as expected."+ )+ where+ mQts = bool id quotedParse q++-- -----------------------------------------------------------------------------++-- X11 has a special case when parsing: '/yyyy'++parseX11Color :: Bool -> Parse Color+parseX11Color q = fmap X11Color+ $ parseNC' q+ `onFail`+ bool id quotedParse q (character '/' *> parseUnqt)+ `onFail`+ -- Can use X11 colors within brewer colorscheme.+ do cs <- getColorScheme+ case cs of+ Brewer{} -> bool parseUnqt parse q+ _ -> fail "Unable to parse an X11 color within Brewer"++-- -----------------------------------------------------------------------------++-- | Attempt to convert a 'Color' into a 'Colour' value with an alpha+-- channel. The use of 'Maybe' is because the RGB values of the+-- 'BrewerColor's haven't been stored here (primarily for licensing+-- reasons).+toColour :: Color -> Maybe (AlphaColour Double)+toColour (RGB r g b) = Just . opaque $ sRGB24 r g b+toColour (RGBA r g b a) = Just . withOpacity (sRGB24 r g b) $ toOpacity a+-- Colour expects the hue to be an angle, so multiply by 360+toColour (HSV h s v) = Just . opaque . uncurryRGB sRGB $ hsv (h*360) s v+toColour (X11Color c) = Just $ x11Colour c+toColour (SVGColor c) = Just . opaque $ svgColour c+toColour BrewerColor{} = Nothing++toOpacity :: Word8 -> Double+toOpacity a = fromIntegral a / maxWord -- | Convert a 'Colour' value to an 'RGB' 'Color'. fromColour :: Colour Double -> Color
+ Data/GraphViz/Attributes/Colors/Brewer.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Attributes.Colors.Brewer+ Description : Specification of Brewer colors.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ You almost definitely do /not/ want to use this module. It is only+ defined for completeness when parsing existing Dot code.++ Graphviz contains a list of colors known as the /Brewer color+ schemes/.++ These colors are available under an Apache-style license:+ <http://www.graphviz.org/doc/info/colors.html#brewer_license>. As+ such, they are not recommended for general use, and have only been+ included in this package for completeness.++ The complete list of Brewer colors can be found at+ <http://www.graphviz.org/doc/info/colors.html#brewer>.++ -}+module Data.GraphViz.Attributes.Colors.Brewer+ ( BrewerScheme(..)+ , BrewerName(..)+ , BrewerColor(..)+ ) where++{-++ This is a virtual module designed just to re-export the Brewer colors.++ -}++import Data.GraphViz.Attributes.ColorScheme(BrewerScheme(..), BrewerName(..))++-- To get the instances+import Data.GraphViz.Parsing()+import Data.GraphViz.Printing()++import Data.Word(Word8)++-- -----------------------------------------------------------------------------++-- Note: we do /not/ have {Print,Parse}Dot instances for this; it's covered in Color.++-- | This value should be between @1@ and the level of the+-- 'BrewerScheme' being used.+data BrewerColor = BC BrewerScheme Word8+ deriving (Eq, Ord, Show, Read)
+ Data/GraphViz/Attributes/Colors/SVG.hs view
@@ -0,0 +1,609 @@+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Attributes.Colors.SVG+ Description : Specification of SVG colors.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ Graphviz comes with an SVG color scheme:+ <http://www.graphviz.org/doc/info/colors.html#svg>++ However, in general use you probably want to use+ "Data.GraphViz.Attributes.Colors.X11" instead, unless you are only+ generating SVG images.++ -}+module Data.GraphViz.Attributes.Colors.SVG+ ( SVGColor(..)+ , svgColour+ ) where++import Data.GraphViz.Parsing+import Data.GraphViz.Printing++import Data.Colour(Colour)+import Data.Colour.SRGB(sRGB24)++-- -----------------------------------------------------------------------------++-- | The SVG colors that Graphviz uses. Graphviz's list of colors+-- also duplicated all @*Gray*@ colors with @*Grey*@ ones; parsing+-- of an 'SVGColor' which is specified using \"grey\" will succeed.+data SVGColor = AliceBlue+ | AntiqueWhite+ | Aqua+ | Aquamarine+ | Azure+ | Beige+ | Bisque+ | Black+ | BlanchedAlmond+ | Blue+ | BlueViolet+ | Brown+ | Burlywood+ | CadetBlue+ | Chartreuse+ | Chocolate+ | Coral+ | CornflowerBlue+ | Cornsilk+ | Crimson+ | Cyan+ | DarkBlue+ | DarkCyan+ | DarkGoldenrod+ | DarkGray+ | DarkGreen+ | DarkKhaki+ | DarkMagenta+ | DarkOliveGreen+ | DarkOrange+ | DarkOrchid+ | DarkRed+ | DarkSalmon+ | DarkSeaGreen+ | DarkSlateBlue+ | DarkSlateGray+ | DarkTurquoise+ | DarkViolet+ | DeepPink+ | DeepSkyBlue+ | DimGray+ | DodgerBlue+ | Firebrick+ | FloralWhite+ | ForestGreen+ | Fuchsia+ | Gainsboro+ | GhostWhite+ | Gold+ | Goldenrod+ | Gray+ | Green+ | GreenYellow+ | Honeydew+ | HotPink+ | IndianRed+ | Indigo+ | Ivory+ | Khaki+ | Lavender+ | LavenderBlush+ | LawnGreen+ | LemonChiffon+ | LightBlue+ | LightCoral+ | LightCyan+ | LightGoldenrodYellow+ | LightGray+ | LightGreen+ | LightPink+ | LightSalmon+ | LightSeaGreen+ | LightSkyBlue+ | LightSlateGray+ | LightSteelBlue+ | LightYellow+ | Lime+ | LimeGreen+ | Linen+ | Magenta+ | Maroon+ | MediumAquamarine+ | MediumBlue+ | MediumOrchid+ | MediumPurple+ | MediumSeaGreen+ | MediumSlateBlue+ | MediumSpringGreen+ | MediumTurquoise+ | MediumVioletRed+ | MidnightBlue+ | MintCream+ | MistyRose+ | Moccasin+ | NavajoWhite+ | Navy+ | OldLace+ | Olive+ | OliveDrab+ | Orange+ | OrangeRed+ | Orchid+ | PaleGoldenrod+ | PaleGreen+ | PaleTurquoise+ | PaleVioletRed+ | PapayaWhip+ | PeachPuff+ | Peru+ | Pink+ | Plum+ | PowderBlue+ | Purple+ | Red+ | RosyBrown+ | RoyalBlue+ | SaddleBrown+ | Salmon+ | SandyBrown+ | SeaGreen+ | SeaShell+ | Sienna+ | Silver+ | SkyBlue+ | SlateBlue+ | SlateGray+ | Snow+ | SpringGreen+ | SteelBlue+ | Tan+ | Teal+ | Thistle+ | Tomato+ | Turquoise+ | Violet+ | Wheat+ | White+ | WhiteSmoke+ | Yellow+ | YellowGreen+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot SVGColor where+ unqtDot AliceBlue = unqtText "aliceblue"+ unqtDot AntiqueWhite = unqtText "antiquewhite"+ unqtDot Aqua = unqtText "aqua"+ unqtDot Aquamarine = unqtText "aquamarine"+ unqtDot Azure = unqtText "azure"+ unqtDot Beige = unqtText "beige"+ unqtDot Bisque = unqtText "bisque"+ unqtDot Black = unqtText "black"+ unqtDot BlanchedAlmond = unqtText "blanchedalmond"+ unqtDot Blue = unqtText "blue"+ unqtDot BlueViolet = unqtText "blueviolet"+ unqtDot Brown = unqtText "brown"+ unqtDot Burlywood = unqtText "burlywood"+ unqtDot CadetBlue = unqtText "cadetblue"+ unqtDot Chartreuse = unqtText "chartreuse"+ unqtDot Chocolate = unqtText "chocolate"+ unqtDot Coral = unqtText "coral"+ unqtDot CornflowerBlue = unqtText "cornflowerblue"+ unqtDot Cornsilk = unqtText "cornsilk"+ unqtDot Crimson = unqtText "crimson"+ unqtDot Cyan = unqtText "cyan"+ unqtDot DarkBlue = unqtText "darkblue"+ unqtDot DarkCyan = unqtText "darkcyan"+ unqtDot DarkGoldenrod = unqtText "darkgoldenrod"+ unqtDot DarkGray = unqtText "darkgray"+ unqtDot DarkGreen = unqtText "darkgreen"+ unqtDot DarkKhaki = unqtText "darkkhaki"+ unqtDot DarkMagenta = unqtText "darkmagenta"+ unqtDot DarkOliveGreen = unqtText "darkolivegreen"+ unqtDot DarkOrange = unqtText "darkorange"+ unqtDot DarkOrchid = unqtText "darkorchid"+ unqtDot DarkRed = unqtText "darkred"+ unqtDot DarkSalmon = unqtText "darksalmon"+ unqtDot DarkSeaGreen = unqtText "darkseagreen"+ unqtDot DarkSlateBlue = unqtText "darkslateblue"+ unqtDot DarkSlateGray = unqtText "darkslategray"+ unqtDot DarkTurquoise = unqtText "darkturquoise"+ unqtDot DarkViolet = unqtText "darkviolet"+ unqtDot DeepPink = unqtText "deeppink"+ unqtDot DeepSkyBlue = unqtText "deepskyblue"+ unqtDot DimGray = unqtText "dimgray"+ unqtDot DodgerBlue = unqtText "dodgerblue"+ unqtDot Firebrick = unqtText "firebrick"+ unqtDot FloralWhite = unqtText "floralwhite"+ unqtDot ForestGreen = unqtText "forestgreen"+ unqtDot Fuchsia = unqtText "fuchsia"+ unqtDot Gainsboro = unqtText "gainsboro"+ unqtDot GhostWhite = unqtText "ghostwhite"+ unqtDot Gold = unqtText "gold"+ unqtDot Goldenrod = unqtText "goldenrod"+ unqtDot Gray = unqtText "gray"+ unqtDot Green = unqtText "green"+ unqtDot GreenYellow = unqtText "greenyellow"+ unqtDot Honeydew = unqtText "honeydew"+ unqtDot HotPink = unqtText "hotpink"+ unqtDot IndianRed = unqtText "indianred"+ unqtDot Indigo = unqtText "indigo"+ unqtDot Ivory = unqtText "ivory"+ unqtDot Khaki = unqtText "khaki"+ unqtDot Lavender = unqtText "lavender"+ unqtDot LavenderBlush = unqtText "lavenderblush"+ unqtDot LawnGreen = unqtText "lawngreen"+ unqtDot LemonChiffon = unqtText "lemonchiffon"+ unqtDot LightBlue = unqtText "lightblue"+ unqtDot LightCoral = unqtText "lightcoral"+ unqtDot LightCyan = unqtText "lightcyan"+ unqtDot LightGoldenrodYellow = unqtText "lightgoldenrodyellow"+ unqtDot LightGray = unqtText "lightgray"+ unqtDot LightGreen = unqtText "lightgreen"+ unqtDot LightPink = unqtText "lightpink"+ unqtDot LightSalmon = unqtText "lightsalmon"+ unqtDot LightSeaGreen = unqtText "lightseagreen"+ unqtDot LightSkyBlue = unqtText "lightskyblue"+ unqtDot LightSlateGray = unqtText "lightslategray"+ unqtDot LightSteelBlue = unqtText "lightsteelblue"+ unqtDot LightYellow = unqtText "lightyellow"+ unqtDot Lime = unqtText "lime"+ unqtDot LimeGreen = unqtText "limegreen"+ unqtDot Linen = unqtText "linen"+ unqtDot Magenta = unqtText "magenta"+ unqtDot Maroon = unqtText "maroon"+ unqtDot MediumAquamarine = unqtText "mediumaquamarine"+ unqtDot MediumBlue = unqtText "mediumblue"+ unqtDot MediumOrchid = unqtText "mediumorchid"+ unqtDot MediumPurple = unqtText "mediumpurple"+ unqtDot MediumSeaGreen = unqtText "mediumseagreen"+ unqtDot MediumSlateBlue = unqtText "mediumslateblue"+ unqtDot MediumSpringGreen = unqtText "mediumspringgreen"+ unqtDot MediumTurquoise = unqtText "mediumturquoise"+ unqtDot MediumVioletRed = unqtText "mediumvioletred"+ unqtDot MidnightBlue = unqtText "midnightblue"+ unqtDot MintCream = unqtText "mintcream"+ unqtDot MistyRose = unqtText "mistyrose"+ unqtDot Moccasin = unqtText "moccasin"+ unqtDot NavajoWhite = unqtText "navajowhite"+ unqtDot Navy = unqtText "navy"+ unqtDot OldLace = unqtText "oldlace"+ unqtDot Olive = unqtText "olive"+ unqtDot OliveDrab = unqtText "olivedrab"+ unqtDot Orange = unqtText "orange"+ unqtDot OrangeRed = unqtText "orangered"+ unqtDot Orchid = unqtText "orchid"+ unqtDot PaleGoldenrod = unqtText "palegoldenrod"+ unqtDot PaleGreen = unqtText "palegreen"+ unqtDot PaleTurquoise = unqtText "paleturquoise"+ unqtDot PaleVioletRed = unqtText "palevioletred"+ unqtDot PapayaWhip = unqtText "papayawhip"+ unqtDot PeachPuff = unqtText "peachpuff"+ unqtDot Peru = unqtText "peru"+ unqtDot Pink = unqtText "pink"+ unqtDot Plum = unqtText "plum"+ unqtDot PowderBlue = unqtText "powderblue"+ unqtDot Purple = unqtText "purple"+ unqtDot Red = unqtText "red"+ unqtDot RosyBrown = unqtText "rosybrown"+ unqtDot RoyalBlue = unqtText "royalblue"+ unqtDot SaddleBrown = unqtText "saddlebrown"+ unqtDot Salmon = unqtText "salmon"+ unqtDot SandyBrown = unqtText "sandybrown"+ unqtDot SeaGreen = unqtText "seagreen"+ unqtDot SeaShell = unqtText "seashell"+ unqtDot Sienna = unqtText "sienna"+ unqtDot Silver = unqtText "silver"+ unqtDot SkyBlue = unqtText "skyblue"+ unqtDot SlateBlue = unqtText "slateblue"+ unqtDot SlateGray = unqtText "slategray"+ unqtDot Snow = unqtText "snow"+ unqtDot SpringGreen = unqtText "springgreen"+ unqtDot SteelBlue = unqtText "steelblue"+ unqtDot Tan = unqtText "tan"+ unqtDot Teal = unqtText "teal"+ unqtDot Thistle = unqtText "thistle"+ unqtDot Tomato = unqtText "tomato"+ unqtDot Turquoise = unqtText "turquoise"+ unqtDot Violet = unqtText "violet"+ unqtDot Wheat = unqtText "wheat"+ unqtDot White = unqtText "white"+ unqtDot WhiteSmoke = unqtText "whitesmoke"+ unqtDot Yellow = unqtText "yellow"+ unqtDot YellowGreen = unqtText "yellowgreen"++instance ParseDot SVGColor where+ parseUnqt = stringValue [ ("aliceblue", AliceBlue)+ , ("antiquewhite", AntiqueWhite)+ , ("aqua", Aqua)+ , ("aquamarine", Aquamarine)+ , ("azure", Azure)+ , ("beige", Beige)+ , ("bisque", Bisque)+ , ("black", Black)+ , ("blanchedalmond", BlanchedAlmond)+ , ("blue", Blue)+ , ("blueviolet", BlueViolet)+ , ("brown", Brown)+ , ("burlywood", Burlywood)+ , ("cadetblue", CadetBlue)+ , ("chartreuse", Chartreuse)+ , ("chocolate", Chocolate)+ , ("coral", Coral)+ , ("cornflowerblue", CornflowerBlue)+ , ("cornsilk", Cornsilk)+ , ("crimson", Crimson)+ , ("cyan", Cyan)+ , ("darkblue", DarkBlue)+ , ("darkcyan", DarkCyan)+ , ("darkgoldenrod", DarkGoldenrod)+ , ("darkgray", DarkGray)+ , ("darkgrey", DarkGray)+ , ("darkgreen", DarkGreen)+ , ("darkkhaki", DarkKhaki)+ , ("darkmagenta", DarkMagenta)+ , ("darkolivegreen", DarkOliveGreen)+ , ("darkorange", DarkOrange)+ , ("darkorchid", DarkOrchid)+ , ("darkred", DarkRed)+ , ("darksalmon", DarkSalmon)+ , ("darkseagreen", DarkSeaGreen)+ , ("darkslateblue", DarkSlateBlue)+ , ("darkslategray", DarkSlateGray)+ , ("darkslategrey", DarkSlateGray)+ , ("darkturquoise", DarkTurquoise)+ , ("darkviolet", DarkViolet)+ , ("deeppink", DeepPink)+ , ("deepskyblue", DeepSkyBlue)+ , ("dimgray", DimGray)+ , ("dimgrey", DimGray)+ , ("dodgerblue", DodgerBlue)+ , ("firebrick", Firebrick)+ , ("floralwhite", FloralWhite)+ , ("forestgreen", ForestGreen)+ , ("fuchsia", Fuchsia)+ , ("gainsboro", Gainsboro)+ , ("ghostwhite", GhostWhite)+ , ("gold", Gold)+ , ("goldenrod", Goldenrod)+ , ("gray", Gray)+ , ("grey", Gray)+ , ("green", Green)+ , ("greenyellow", GreenYellow)+ , ("honeydew", Honeydew)+ , ("hotpink", HotPink)+ , ("indianred", IndianRed)+ , ("indigo", Indigo)+ , ("ivory", Ivory)+ , ("khaki", Khaki)+ , ("lavender", Lavender)+ , ("lavenderblush", LavenderBlush)+ , ("lawngreen", LawnGreen)+ , ("lemonchiffon", LemonChiffon)+ , ("lightblue", LightBlue)+ , ("lightcoral", LightCoral)+ , ("lightcyan", LightCyan)+ , ("lightgoldenrodyellow", LightGoldenrodYellow)+ , ("lightgray", LightGray)+ , ("lightgrey", LightGray)+ , ("lightgreen", LightGreen)+ , ("lightpink", LightPink)+ , ("lightsalmon", LightSalmon)+ , ("lightseagreen", LightSeaGreen)+ , ("lightskyblue", LightSkyBlue)+ , ("lightslategray", LightSlateGray)+ , ("lightslategrey", LightSlateGray)+ , ("lightsteelblue", LightSteelBlue)+ , ("lightyellow", LightYellow)+ , ("lime", Lime)+ , ("limegreen", LimeGreen)+ , ("linen", Linen)+ , ("magenta", Magenta)+ , ("maroon", Maroon)+ , ("mediumaquamarine", MediumAquamarine)+ , ("mediumblue", MediumBlue)+ , ("mediumorchid", MediumOrchid)+ , ("mediumpurple", MediumPurple)+ , ("mediumseagreen", MediumSeaGreen)+ , ("mediumslateblue", MediumSlateBlue)+ , ("mediumspringgreen", MediumSpringGreen)+ , ("mediumturquoise", MediumTurquoise)+ , ("mediumvioletred", MediumVioletRed)+ , ("midnightblue", MidnightBlue)+ , ("mintcream", MintCream)+ , ("mistyrose", MistyRose)+ , ("moccasin", Moccasin)+ , ("navajowhite", NavajoWhite)+ , ("navy", Navy)+ , ("oldlace", OldLace)+ , ("olive", Olive)+ , ("olivedrab", OliveDrab)+ , ("orange", Orange)+ , ("orangered", OrangeRed)+ , ("orchid", Orchid)+ , ("palegoldenrod", PaleGoldenrod)+ , ("palegreen", PaleGreen)+ , ("paleturquoise", PaleTurquoise)+ , ("palevioletred", PaleVioletRed)+ , ("papayawhip", PapayaWhip)+ , ("peachpuff", PeachPuff)+ , ("peru", Peru)+ , ("pink", Pink)+ , ("plum", Plum)+ , ("powderblue", PowderBlue)+ , ("purple", Purple)+ , ("red", Red)+ , ("rosybrown", RosyBrown)+ , ("royalblue", RoyalBlue)+ , ("saddlebrown", SaddleBrown)+ , ("salmon", Salmon)+ , ("sandybrown", SandyBrown)+ , ("seagreen", SeaGreen)+ , ("seashell", SeaShell)+ , ("sienna", Sienna)+ , ("silver", Silver)+ , ("skyblue", SkyBlue)+ , ("slateblue", SlateBlue)+ , ("slategray", SlateGray)+ , ("slategrey", SlateGray)+ , ("snow", Snow)+ , ("springgreen", SpringGreen)+ , ("steelblue", SteelBlue)+ , ("tan", Tan)+ , ("teal", Teal)+ , ("thistle", Thistle)+ , ("tomato", Tomato)+ , ("turquoise", Turquoise)+ , ("violet", Violet)+ , ("wheat", Wheat)+ , ("white", White)+ , ("whitesmoke", WhiteSmoke)+ , ("yellow", Yellow)+ , ("yellowgreen", YellowGreen)+ ]++-- | Convert an 'SVGColor' to its equivalent 'Colour' value.+svgColour :: SVGColor -> Colour Double+svgColour AliceBlue = sRGB24 240 248 255+svgColour AntiqueWhite = sRGB24 250 235 215+svgColour Aqua = sRGB24 0 255 255+svgColour Aquamarine = sRGB24 127 255 212+svgColour Azure = sRGB24 240 255 255+svgColour Beige = sRGB24 245 245 220+svgColour Bisque = sRGB24 255 228 196+svgColour Black = sRGB24 0 0 0+svgColour BlanchedAlmond = sRGB24 255 235 205+svgColour Blue = sRGB24 0 0 255+svgColour BlueViolet = sRGB24 138 43 226+svgColour Brown = sRGB24 165 42 42+svgColour Burlywood = sRGB24 222 184 135+svgColour CadetBlue = sRGB24 95 158 160+svgColour Chartreuse = sRGB24 127 255 0+svgColour Chocolate = sRGB24 210 105 30+svgColour Coral = sRGB24 255 127 80+svgColour CornflowerBlue = sRGB24 100 149 237+svgColour Cornsilk = sRGB24 255 248 220+svgColour Crimson = sRGB24 220 20 60+svgColour Cyan = sRGB24 0 255 255+svgColour DarkBlue = sRGB24 0 0 139+svgColour DarkCyan = sRGB24 0 139 139+svgColour DarkGoldenrod = sRGB24 184 134 11+svgColour DarkGray = sRGB24 169 169 169+svgColour DarkGreen = sRGB24 0 100 0+svgColour DarkKhaki = sRGB24 189 183 107+svgColour DarkMagenta = sRGB24 139 0 139+svgColour DarkOliveGreen = sRGB24 85 107 47+svgColour DarkOrange = sRGB24 255 140 0+svgColour DarkOrchid = sRGB24 153 50 204+svgColour DarkRed = sRGB24 139 0 0+svgColour DarkSalmon = sRGB24 233 150 122+svgColour DarkSeaGreen = sRGB24 143 188 143+svgColour DarkSlateBlue = sRGB24 72 61 139+svgColour DarkSlateGray = sRGB24 47 79 79+svgColour DarkTurquoise = sRGB24 0 206 209+svgColour DarkViolet = sRGB24 148 0 211+svgColour DeepPink = sRGB24 255 20 147+svgColour DeepSkyBlue = sRGB24 0 191 255+svgColour DimGray = sRGB24 105 105 105+svgColour DodgerBlue = sRGB24 30 144 255+svgColour Firebrick = sRGB24 178 34 34+svgColour FloralWhite = sRGB24 255 250 240+svgColour ForestGreen = sRGB24 34 139 34+svgColour Fuchsia = sRGB24 255 0 255+svgColour Gainsboro = sRGB24 220 220 220+svgColour GhostWhite = sRGB24 248 248 255+svgColour Gold = sRGB24 255 215 0+svgColour Goldenrod = sRGB24 218 165 32+svgColour Gray = sRGB24 128 128 128+svgColour Green = sRGB24 0 128 0+svgColour GreenYellow = sRGB24 173 255 47+svgColour Honeydew = sRGB24 240 255 240+svgColour HotPink = sRGB24 255 105 180+svgColour IndianRed = sRGB24 205 92 92+svgColour Indigo = sRGB24 75 0 130+svgColour Ivory = sRGB24 255 255 240+svgColour Khaki = sRGB24 240 230 140+svgColour Lavender = sRGB24 230 230 250+svgColour LavenderBlush = sRGB24 255 240 245+svgColour LawnGreen = sRGB24 124 252 0+svgColour LemonChiffon = sRGB24 255 250 205+svgColour LightBlue = sRGB24 173 216 230+svgColour LightCoral = sRGB24 240 128 128+svgColour LightCyan = sRGB24 224 255 255+svgColour LightGoldenrodYellow = sRGB24 250 250 210+svgColour LightGray = sRGB24 211 211 211+svgColour LightGreen = sRGB24 144 238 144+svgColour LightPink = sRGB24 255 182 193+svgColour LightSalmon = sRGB24 255 160 122+svgColour LightSeaGreen = sRGB24 32 178 170+svgColour LightSkyBlue = sRGB24 135 206 250+svgColour LightSlateGray = sRGB24 119 136 153+svgColour LightSteelBlue = sRGB24 176 196 222+svgColour LightYellow = sRGB24 255 255 224+svgColour Lime = sRGB24 0 255 0+svgColour LimeGreen = sRGB24 50 205 50+svgColour Linen = sRGB24 250 240 230+svgColour Magenta = sRGB24 255 0 255+svgColour Maroon = sRGB24 128 0 0+svgColour MediumAquamarine = sRGB24 102 205 170+svgColour MediumBlue = sRGB24 0 0 205+svgColour MediumOrchid = sRGB24 186 85 211+svgColour MediumPurple = sRGB24 147 112 219+svgColour MediumSeaGreen = sRGB24 60 179 113+svgColour MediumSlateBlue = sRGB24 123 104 238+svgColour MediumSpringGreen = sRGB24 0 250 154+svgColour MediumTurquoise = sRGB24 72 209 204+svgColour MediumVioletRed = sRGB24 199 21 133+svgColour MidnightBlue = sRGB24 25 25 112+svgColour MintCream = sRGB24 245 255 250+svgColour MistyRose = sRGB24 255 228 225+svgColour Moccasin = sRGB24 255 228 181+svgColour NavajoWhite = sRGB24 255 222 173+svgColour Navy = sRGB24 0 0 128+svgColour OldLace = sRGB24 253 245 230+svgColour Olive = sRGB24 128 128 0+svgColour OliveDrab = sRGB24 107 142 35+svgColour Orange = sRGB24 255 165 0+svgColour OrangeRed = sRGB24 255 69 0+svgColour Orchid = sRGB24 218 112 214+svgColour PaleGoldenrod = sRGB24 238 232 170+svgColour PaleGreen = sRGB24 152 251 152+svgColour PaleTurquoise = sRGB24 175 238 238+svgColour PaleVioletRed = sRGB24 219 112 147+svgColour PapayaWhip = sRGB24 255 239 213+svgColour PeachPuff = sRGB24 255 218 185+svgColour Peru = sRGB24 205 133 63+svgColour Pink = sRGB24 255 192 203+svgColour Plum = sRGB24 221 160 221+svgColour PowderBlue = sRGB24 176 224 230+svgColour Purple = sRGB24 128 0 128+svgColour Red = sRGB24 255 0 0+svgColour RosyBrown = sRGB24 188 143 143+svgColour RoyalBlue = sRGB24 65 105 225+svgColour SaddleBrown = sRGB24 139 69 19+svgColour Salmon = sRGB24 250 128 114+svgColour SandyBrown = sRGB24 244 164 96+svgColour SeaGreen = sRGB24 46 139 87+svgColour SeaShell = sRGB24 255 245 238+svgColour Sienna = sRGB24 160 82 45+svgColour Silver = sRGB24 192 192 192+svgColour SkyBlue = sRGB24 135 206 235+svgColour SlateBlue = sRGB24 106 90 205+svgColour SlateGray = sRGB24 112 128 144+svgColour Snow = sRGB24 255 250 250+svgColour SpringGreen = sRGB24 0 255 127+svgColour SteelBlue = sRGB24 70 130 180+svgColour Tan = sRGB24 210 180 140+svgColour Teal = sRGB24 0 128 128+svgColour Thistle = sRGB24 216 191 216+svgColour Tomato = sRGB24 255 99 71+svgColour Turquoise = sRGB24 64 224 208+svgColour Violet = sRGB24 238 130 238+svgColour Wheat = sRGB24 245 222 179+svgColour White = sRGB24 255 255 255+svgColour WhiteSmoke = sRGB24 245 245 245+svgColour Yellow = sRGB24 255 255 0+svgColour YellowGreen = sRGB24 154 205 50
+ Data/GraphViz/Attributes/Colors/X11.hs view
@@ -0,0 +1,2354 @@+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Attributes.Colors.X11+ Description : Specification of X11 colors.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ Graphviz's definition of X11 colors differs from the \"normal\"+ list installed on many systems at @/usr/share/X11/rgb.txt@. For+ example, @Crimson@ is not a usual X11 color.++ Furthermore, all @Gray*@ colors are duplicated with @Grey*@ names.+ To simplify this, these duplicates have been removed but /all/+ 'X11Color's with \"@Gray@\" (whether they have the duplicate+ spelling or not) in their name are also parseable as if they were+ spelt with \"@grey@\".++ The complete list of X11 colors can be found at+ <http://www.graphviz.org/doc/info/colors.html#x11>.++ -}+module Data.GraphViz.Attributes.Colors.X11+ ( X11Color(..)+ , x11Colour+ ) where++import Data.GraphViz.Parsing+import Data.GraphViz.Printing++import Data.Colour( AlphaColour, opaque, transparent)+import Data.Colour.SRGB(sRGB24)++-- -----------------------------------------------------------------------------++-- | The X11 colors that Graphviz uses. Note that these are slightly+-- different from the \"normal\" X11 colors used (e.g. the inclusion+-- of @Crimson@). Graphviz's list of colors also duplicated almost+-- all @Gray@ colors with @Grey@ ones; parsing of an 'X11Color'+-- which is specified using \"grey\" will succeed, even for those+-- that don't have the duplicate spelling (e.g. @DarkSlateGray1@).+data X11Color = AliceBlue+ | AntiqueWhite+ | AntiqueWhite1+ | AntiqueWhite2+ | AntiqueWhite3+ | AntiqueWhite4+ | Aquamarine+ | Aquamarine1+ | Aquamarine2+ | Aquamarine3+ | Aquamarine4+ | Azure+ | Azure1+ | Azure2+ | Azure3+ | Azure4+ | Beige+ | Bisque+ | Bisque1+ | Bisque2+ | Bisque3+ | Bisque4+ | Black+ | BlanchedAlmond+ | Blue+ | Blue1+ | Blue2+ | Blue3+ | Blue4+ | BlueViolet+ | Brown+ | Brown1+ | Brown2+ | Brown3+ | Brown4+ | Burlywood+ | Burlywood1+ | Burlywood2+ | Burlywood3+ | Burlywood4+ | CadetBlue+ | CadetBlue1+ | CadetBlue2+ | CadetBlue3+ | CadetBlue4+ | Chartreuse+ | Chartreuse1+ | Chartreuse2+ | Chartreuse3+ | Chartreuse4+ | Chocolate+ | Chocolate1+ | Chocolate2+ | Chocolate3+ | Chocolate4+ | Coral+ | Coral1+ | Coral2+ | Coral3+ | Coral4+ | CornFlowerBlue+ | CornSilk+ | CornSilk1+ | CornSilk2+ | CornSilk3+ | CornSilk4+ | Crimson+ | Cyan+ | Cyan1+ | Cyan2+ | Cyan3+ | Cyan4+ | DarkGoldenrod+ | DarkGoldenrod1+ | DarkGoldenrod2+ | DarkGoldenrod3+ | DarkGoldenrod4+ | DarkGreen+ | Darkkhaki+ | DarkOliveGreen+ | DarkOliveGreen1+ | DarkOliveGreen2+ | DarkOliveGreen3+ | DarkOliveGreen4+ | DarkOrange+ | DarkOrange1+ | DarkOrange2+ | DarkOrange3+ | DarkOrange4+ | DarkOrchid+ | DarkOrchid1+ | DarkOrchid2+ | DarkOrchid3+ | DarkOrchid4+ | DarkSalmon+ | DarkSeaGreen+ | DarkSeaGreen1+ | DarkSeaGreen2+ | DarkSeaGreen3+ | DarkSeaGreen4+ | DarkSlateBlue+ | DarkSlateGray+ | DarkSlateGray1+ | DarkSlateGray2+ | DarkSlateGray3+ | DarkSlateGray4+ | DarkTurquoise+ | DarkViolet+ | DeepPink+ | DeepPink1+ | DeepPink2+ | DeepPink3+ | DeepPink4+ | DeepSkyBlue+ | DeepSkyBlue1+ | DeepSkyBlue2+ | DeepSkyBlue3+ | DeepSkyBlue4+ | DimGray+ | DodgerBlue+ | DodgerBlue1+ | DodgerBlue2+ | DodgerBlue3+ | DodgerBlue4+ | Firebrick+ | Firebrick1+ | Firebrick2+ | Firebrick3+ | Firebrick4+ | FloralWhite+ | ForestGreen+ | Gainsboro+ | GhostWhite+ | Gold+ | Gold1+ | Gold2+ | Gold3+ | Gold4+ | Goldenrod+ | Goldenrod1+ | Goldenrod2+ | Goldenrod3+ | Goldenrod4+ | Gray+ | Gray0+ | Gray1+ | Gray2+ | Gray3+ | Gray4+ | Gray5+ | Gray6+ | Gray7+ | Gray8+ | Gray9+ | Gray10+ | Gray11+ | Gray12+ | Gray13+ | Gray14+ | Gray15+ | Gray16+ | Gray17+ | Gray18+ | Gray19+ | Gray20+ | Gray21+ | Gray22+ | Gray23+ | Gray24+ | Gray25+ | Gray26+ | Gray27+ | Gray28+ | Gray29+ | Gray30+ | Gray31+ | Gray32+ | Gray33+ | Gray34+ | Gray35+ | Gray36+ | Gray37+ | Gray38+ | Gray39+ | Gray40+ | Gray41+ | Gray42+ | Gray43+ | Gray44+ | Gray45+ | Gray46+ | Gray47+ | Gray48+ | Gray49+ | Gray50+ | Gray51+ | Gray52+ | Gray53+ | Gray54+ | Gray55+ | Gray56+ | Gray57+ | Gray58+ | Gray59+ | Gray60+ | Gray61+ | Gray62+ | Gray63+ | Gray64+ | Gray65+ | Gray66+ | Gray67+ | Gray68+ | Gray69+ | Gray70+ | Gray71+ | Gray72+ | Gray73+ | Gray74+ | Gray75+ | Gray76+ | Gray77+ | Gray78+ | Gray79+ | Gray80+ | Gray81+ | Gray82+ | Gray83+ | Gray84+ | Gray85+ | Gray86+ | Gray87+ | Gray88+ | Gray89+ | Gray90+ | Gray91+ | Gray92+ | Gray93+ | Gray94+ | Gray95+ | Gray96+ | Gray97+ | Gray98+ | Gray99+ | Gray100+ | Green+ | Green1+ | Green2+ | Green3+ | Green4+ | GreenYellow+ | HoneyDew+ | HoneyDew1+ | HoneyDew2+ | HoneyDew3+ | HoneyDew4+ | HotPink+ | HotPink1+ | HotPink2+ | HotPink3+ | HotPink4+ | IndianRed+ | IndianRed1+ | IndianRed2+ | IndianRed3+ | IndianRed4+ | Indigo+ | Ivory+ | Ivory1+ | Ivory2+ | Ivory3+ | Ivory4+ | Khaki+ | Khaki1+ | Khaki2+ | Khaki3+ | Khaki4+ | Lavender+ | LavenderBlush+ | LavenderBlush1+ | LavenderBlush2+ | LavenderBlush3+ | LavenderBlush4+ | LawnGreen+ | LemonChiffon+ | LemonChiffon1+ | LemonChiffon2+ | LemonChiffon3+ | LemonChiffon4+ | LightBlue+ | LightBlue1+ | LightBlue2+ | LightBlue3+ | LightBlue4+ | LightCoral+ | LightCyan+ | LightCyan1+ | LightCyan2+ | LightCyan3+ | LightCyan4+ | LightGoldenrod+ | LightGoldenrod1+ | LightGoldenrod2+ | LightGoldenrod3+ | LightGoldenrod4+ | LightGoldenrodYellow+ | LightGray+ | LightPink+ | LightPink1+ | LightPink2+ | LightPink3+ | LightPink4+ | LightSalmon+ | LightSalmon1+ | LightSalmon2+ | LightSalmon3+ | LightSalmon4+ | LightSeaGreen+ | LightSkyBlue+ | LightSkyBlue1+ | LightSkyBlue2+ | LightSkyBlue3+ | LightSkyBlue4+ | LightSlateBlue+ | LightSlateGray+ | LightSteelBlue+ | LightSteelBlue1+ | LightSteelBlue2+ | LightSteelBlue3+ | LightSteelBlue4+ | LightYellow+ | LightYellow1+ | LightYellow2+ | LightYellow3+ | LightYellow4+ | LimeGreen+ | Linen+ | Magenta+ | Magenta1+ | Magenta2+ | Magenta3+ | Magenta4+ | Maroon+ | Maroon1+ | Maroon2+ | Maroon3+ | Maroon4+ | MediumAquamarine+ | MediumBlue+ | MediumOrchid+ | MediumOrchid1+ | MediumOrchid2+ | MediumOrchid3+ | MediumOrchid4+ | MediumPurple+ | MediumPurple1+ | MediumPurple2+ | MediumPurple3+ | MediumPurple4+ | MediumSeaGreen+ | MediumSlateBlue+ | MediumSpringGreen+ | MediumTurquoise+ | MediumVioletRed+ | MidnightBlue+ | MintCream+ | MistyRose+ | MistyRose1+ | MistyRose2+ | MistyRose3+ | MistyRose4+ | Moccasin+ | NavajoWhite+ | NavajoWhite1+ | NavajoWhite2+ | NavajoWhite3+ | NavajoWhite4+ | Navy+ | NavyBlue+ | OldLace+ | OliveDrab+ | OliveDrab1+ | OliveDrab2+ | OliveDrab3+ | OliveDrab4+ | Orange+ | Orange1+ | Orange2+ | Orange3+ | Orange4+ | OrangeRed+ | OrangeRed1+ | OrangeRed2+ | OrangeRed3+ | OrangeRed4+ | Orchid+ | Orchid1+ | Orchid2+ | Orchid3+ | Orchid4+ | PaleGoldenrod+ | PaleGreen+ | PaleGreen1+ | PaleGreen2+ | PaleGreen3+ | PaleGreen4+ | PaleTurquoise+ | PaleTurquoise1+ | PaleTurquoise2+ | PaleTurquoise3+ | PaleTurquoise4+ | PaleVioletRed+ | PaleVioletRed1+ | PaleVioletRed2+ | PaleVioletRed3+ | PaleVioletRed4+ | PapayaWhip+ | PeachPuff+ | PeachPuff1+ | PeachPuff2+ | PeachPuff3+ | PeachPuff4+ | Peru+ | Pink+ | Pink1+ | Pink2+ | Pink3+ | Pink4+ | Plum+ | Plum1+ | Plum2+ | Plum3+ | Plum4+ | PowderBlue+ | Purple+ | Purple1+ | Purple2+ | Purple3+ | Purple4+ | Red+ | Red1+ | Red2+ | Red3+ | Red4+ | RosyBrown+ | RosyBrown1+ | RosyBrown2+ | RosyBrown3+ | RosyBrown4+ | RoyalBlue+ | RoyalBlue1+ | RoyalBlue2+ | RoyalBlue3+ | RoyalBlue4+ | SaddleBrown+ | Salmon+ | Salmon1+ | Salmon2+ | Salmon3+ | Salmon4+ | SandyBrown+ | SeaGreen+ | SeaGreen1+ | SeaGreen2+ | SeaGreen3+ | SeaGreen4+ | SeaShell+ | SeaShell1+ | SeaShell2+ | SeaShell3+ | SeaShell4+ | Sienna+ | Sienna1+ | Sienna2+ | Sienna3+ | Sienna4+ | SkyBlue+ | SkyBlue1+ | SkyBlue2+ | SkyBlue3+ | SkyBlue4+ | SlateBlue+ | SlateBlue1+ | SlateBlue2+ | SlateBlue3+ | SlateBlue4+ | SlateGray+ | SlateGray1+ | SlateGray2+ | SlateGray3+ | SlateGray4+ | Snow+ | Snow1+ | Snow2+ | Snow3+ | Snow4+ | SpringGreen+ | SpringGreen1+ | SpringGreen2+ | SpringGreen3+ | SpringGreen4+ | SteelBlue+ | SteelBlue1+ | SteelBlue2+ | SteelBlue3+ | SteelBlue4+ | Tan+ | Tan1+ | Tan2+ | Tan3+ | Tan4+ | Thistle+ | Thistle1+ | Thistle2+ | Thistle3+ | Thistle4+ | Tomato+ | Tomato1+ | Tomato2+ | Tomato3+ | Tomato4+ | Transparent -- ^ Equivalent to setting @Style [SItem Invisible []]@.+ | Turquoise+ | Turquoise1+ | Turquoise2+ | Turquoise3+ | Turquoise4+ | Violet+ | VioletRed+ | VioletRed1+ | VioletRed2+ | VioletRed3+ | VioletRed4+ | Wheat+ | Wheat1+ | Wheat2+ | Wheat3+ | Wheat4+ | White+ | WhiteSmoke+ | Yellow+ | Yellow1+ | Yellow2+ | Yellow3+ | Yellow4+ | YellowGreen+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot X11Color where+ unqtDot AliceBlue = unqtText "aliceblue"+ unqtDot AntiqueWhite = unqtText "antiquewhite"+ unqtDot AntiqueWhite1 = unqtText "antiquewhite1"+ unqtDot AntiqueWhite2 = unqtText "antiquewhite2"+ unqtDot AntiqueWhite3 = unqtText "antiquewhite3"+ unqtDot AntiqueWhite4 = unqtText "antiquewhite4"+ unqtDot Aquamarine = unqtText "aquamarine"+ unqtDot Aquamarine1 = unqtText "aquamarine1"+ unqtDot Aquamarine2 = unqtText "aquamarine2"+ unqtDot Aquamarine3 = unqtText "aquamarine3"+ unqtDot Aquamarine4 = unqtText "aquamarine4"+ unqtDot Azure = unqtText "azure"+ unqtDot Azure1 = unqtText "azure1"+ unqtDot Azure2 = unqtText "azure2"+ unqtDot Azure3 = unqtText "azure3"+ unqtDot Azure4 = unqtText "azure4"+ unqtDot Beige = unqtText "beige"+ unqtDot Bisque = unqtText "bisque"+ unqtDot Bisque1 = unqtText "bisque1"+ unqtDot Bisque2 = unqtText "bisque2"+ unqtDot Bisque3 = unqtText "bisque3"+ unqtDot Bisque4 = unqtText "bisque4"+ unqtDot Black = unqtText "black"+ unqtDot BlanchedAlmond = unqtText "blanchedalmond"+ unqtDot Blue = unqtText "blue"+ unqtDot Blue1 = unqtText "blue1"+ unqtDot Blue2 = unqtText "blue2"+ unqtDot Blue3 = unqtText "blue3"+ unqtDot Blue4 = unqtText "blue4"+ unqtDot BlueViolet = unqtText "blueviolet"+ unqtDot Brown = unqtText "brown"+ unqtDot Brown1 = unqtText "brown1"+ unqtDot Brown2 = unqtText "brown2"+ unqtDot Brown3 = unqtText "brown3"+ unqtDot Brown4 = unqtText "brown4"+ unqtDot Burlywood = unqtText "burlywood"+ unqtDot Burlywood1 = unqtText "burlywood1"+ unqtDot Burlywood2 = unqtText "burlywood2"+ unqtDot Burlywood3 = unqtText "burlywood3"+ unqtDot Burlywood4 = unqtText "burlywood4"+ unqtDot CadetBlue = unqtText "cadetblue"+ unqtDot CadetBlue1 = unqtText "cadetblue1"+ unqtDot CadetBlue2 = unqtText "cadetblue2"+ unqtDot CadetBlue3 = unqtText "cadetblue3"+ unqtDot CadetBlue4 = unqtText "cadetblue4"+ unqtDot Chartreuse = unqtText "chartreuse"+ unqtDot Chartreuse1 = unqtText "chartreuse1"+ unqtDot Chartreuse2 = unqtText "chartreuse2"+ unqtDot Chartreuse3 = unqtText "chartreuse3"+ unqtDot Chartreuse4 = unqtText "chartreuse4"+ unqtDot Chocolate = unqtText "chocolate"+ unqtDot Chocolate1 = unqtText "chocolate1"+ unqtDot Chocolate2 = unqtText "chocolate2"+ unqtDot Chocolate3 = unqtText "chocolate3"+ unqtDot Chocolate4 = unqtText "chocolate4"+ unqtDot Coral = unqtText "coral"+ unqtDot Coral1 = unqtText "coral1"+ unqtDot Coral2 = unqtText "coral2"+ unqtDot Coral3 = unqtText "coral3"+ unqtDot Coral4 = unqtText "coral4"+ unqtDot CornFlowerBlue = unqtText "cornflowerblue"+ unqtDot CornSilk = unqtText "cornsilk"+ unqtDot CornSilk1 = unqtText "cornsilk1"+ unqtDot CornSilk2 = unqtText "cornsilk2"+ unqtDot CornSilk3 = unqtText "cornsilk3"+ unqtDot CornSilk4 = unqtText "cornsilk4"+ unqtDot Crimson = unqtText "crimson"+ unqtDot Cyan = unqtText "cyan"+ unqtDot Cyan1 = unqtText "cyan1"+ unqtDot Cyan2 = unqtText "cyan2"+ unqtDot Cyan3 = unqtText "cyan3"+ unqtDot Cyan4 = unqtText "cyan4"+ unqtDot DarkGoldenrod = unqtText "darkgoldenrod"+ unqtDot DarkGoldenrod1 = unqtText "darkgoldenrod1"+ unqtDot DarkGoldenrod2 = unqtText "darkgoldenrod2"+ unqtDot DarkGoldenrod3 = unqtText "darkgoldenrod3"+ unqtDot DarkGoldenrod4 = unqtText "darkgoldenrod4"+ unqtDot DarkGreen = unqtText "darkgreen"+ unqtDot Darkkhaki = unqtText "darkkhaki"+ unqtDot DarkOliveGreen = unqtText "darkolivegreen"+ unqtDot DarkOliveGreen1 = unqtText "darkolivegreen1"+ unqtDot DarkOliveGreen2 = unqtText "darkolivegreen2"+ unqtDot DarkOliveGreen3 = unqtText "darkolivegreen3"+ unqtDot DarkOliveGreen4 = unqtText "darkolivegreen4"+ unqtDot DarkOrange = unqtText "darkorange"+ unqtDot DarkOrange1 = unqtText "darkorange1"+ unqtDot DarkOrange2 = unqtText "darkorange2"+ unqtDot DarkOrange3 = unqtText "darkorange3"+ unqtDot DarkOrange4 = unqtText "darkorange4"+ unqtDot DarkOrchid = unqtText "darkorchid"+ unqtDot DarkOrchid1 = unqtText "darkorchid1"+ unqtDot DarkOrchid2 = unqtText "darkorchid2"+ unqtDot DarkOrchid3 = unqtText "darkorchid3"+ unqtDot DarkOrchid4 = unqtText "darkorchid4"+ unqtDot DarkSalmon = unqtText "darksalmon"+ unqtDot DarkSeaGreen = unqtText "darkseagreen"+ unqtDot DarkSeaGreen1 = unqtText "darkseagreen1"+ unqtDot DarkSeaGreen2 = unqtText "darkseagreen2"+ unqtDot DarkSeaGreen3 = unqtText "darkseagreen3"+ unqtDot DarkSeaGreen4 = unqtText "darkseagreen4"+ unqtDot DarkSlateBlue = unqtText "darkslateblue"+ unqtDot DarkSlateGray = unqtText "darkslategray"+ unqtDot DarkSlateGray1 = unqtText "darkslategray1"+ unqtDot DarkSlateGray2 = unqtText "darkslategray2"+ unqtDot DarkSlateGray3 = unqtText "darkslategray3"+ unqtDot DarkSlateGray4 = unqtText "darkslategray4"+ unqtDot DarkTurquoise = unqtText "darkturquoise"+ unqtDot DarkViolet = unqtText "darkviolet"+ unqtDot DeepPink = unqtText "deeppink"+ unqtDot DeepPink1 = unqtText "deeppink1"+ unqtDot DeepPink2 = unqtText "deeppink2"+ unqtDot DeepPink3 = unqtText "deeppink3"+ unqtDot DeepPink4 = unqtText "deeppink4"+ unqtDot DeepSkyBlue = unqtText "deepskyblue"+ unqtDot DeepSkyBlue1 = unqtText "deepskyblue1"+ unqtDot DeepSkyBlue2 = unqtText "deepskyblue2"+ unqtDot DeepSkyBlue3 = unqtText "deepskyblue3"+ unqtDot DeepSkyBlue4 = unqtText "deepskyblue4"+ unqtDot DimGray = unqtText "dimgray"+ unqtDot DodgerBlue = unqtText "dodgerblue"+ unqtDot DodgerBlue1 = unqtText "dodgerblue1"+ unqtDot DodgerBlue2 = unqtText "dodgerblue2"+ unqtDot DodgerBlue3 = unqtText "dodgerblue3"+ unqtDot DodgerBlue4 = unqtText "dodgerblue4"+ unqtDot Firebrick = unqtText "firebrick"+ unqtDot Firebrick1 = unqtText "firebrick1"+ unqtDot Firebrick2 = unqtText "firebrick2"+ unqtDot Firebrick3 = unqtText "firebrick3"+ unqtDot Firebrick4 = unqtText "firebrick4"+ unqtDot FloralWhite = unqtText "floralwhite"+ unqtDot ForestGreen = unqtText "forestgreen"+ unqtDot Gainsboro = unqtText "gainsboro"+ unqtDot GhostWhite = unqtText "ghostwhite"+ unqtDot Gold = unqtText "gold"+ unqtDot Gold1 = unqtText "gold1"+ unqtDot Gold2 = unqtText "gold2"+ unqtDot Gold3 = unqtText "gold3"+ unqtDot Gold4 = unqtText "gold4"+ unqtDot Goldenrod = unqtText "goldenrod"+ unqtDot Goldenrod1 = unqtText "goldenrod1"+ unqtDot Goldenrod2 = unqtText "goldenrod2"+ unqtDot Goldenrod3 = unqtText "goldenrod3"+ unqtDot Goldenrod4 = unqtText "goldenrod4"+ unqtDot Gray = unqtText "gray"+ unqtDot Gray0 = unqtText "gray0"+ unqtDot Gray1 = unqtText "gray1"+ unqtDot Gray2 = unqtText "gray2"+ unqtDot Gray3 = unqtText "gray3"+ unqtDot Gray4 = unqtText "gray4"+ unqtDot Gray5 = unqtText "gray5"+ unqtDot Gray6 = unqtText "gray6"+ unqtDot Gray7 = unqtText "gray7"+ unqtDot Gray8 = unqtText "gray8"+ unqtDot Gray9 = unqtText "gray9"+ unqtDot Gray10 = unqtText "gray10"+ unqtDot Gray11 = unqtText "gray11"+ unqtDot Gray12 = unqtText "gray12"+ unqtDot Gray13 = unqtText "gray13"+ unqtDot Gray14 = unqtText "gray14"+ unqtDot Gray15 = unqtText "gray15"+ unqtDot Gray16 = unqtText "gray16"+ unqtDot Gray17 = unqtText "gray17"+ unqtDot Gray18 = unqtText "gray18"+ unqtDot Gray19 = unqtText "gray19"+ unqtDot Gray20 = unqtText "gray20"+ unqtDot Gray21 = unqtText "gray21"+ unqtDot Gray22 = unqtText "gray22"+ unqtDot Gray23 = unqtText "gray23"+ unqtDot Gray24 = unqtText "gray24"+ unqtDot Gray25 = unqtText "gray25"+ unqtDot Gray26 = unqtText "gray26"+ unqtDot Gray27 = unqtText "gray27"+ unqtDot Gray28 = unqtText "gray28"+ unqtDot Gray29 = unqtText "gray29"+ unqtDot Gray30 = unqtText "gray30"+ unqtDot Gray31 = unqtText "gray31"+ unqtDot Gray32 = unqtText "gray32"+ unqtDot Gray33 = unqtText "gray33"+ unqtDot Gray34 = unqtText "gray34"+ unqtDot Gray35 = unqtText "gray35"+ unqtDot Gray36 = unqtText "gray36"+ unqtDot Gray37 = unqtText "gray37"+ unqtDot Gray38 = unqtText "gray38"+ unqtDot Gray39 = unqtText "gray39"+ unqtDot Gray40 = unqtText "gray40"+ unqtDot Gray41 = unqtText "gray41"+ unqtDot Gray42 = unqtText "gray42"+ unqtDot Gray43 = unqtText "gray43"+ unqtDot Gray44 = unqtText "gray44"+ unqtDot Gray45 = unqtText "gray45"+ unqtDot Gray46 = unqtText "gray46"+ unqtDot Gray47 = unqtText "gray47"+ unqtDot Gray48 = unqtText "gray48"+ unqtDot Gray49 = unqtText "gray49"+ unqtDot Gray50 = unqtText "gray50"+ unqtDot Gray51 = unqtText "gray51"+ unqtDot Gray52 = unqtText "gray52"+ unqtDot Gray53 = unqtText "gray53"+ unqtDot Gray54 = unqtText "gray54"+ unqtDot Gray55 = unqtText "gray55"+ unqtDot Gray56 = unqtText "gray56"+ unqtDot Gray57 = unqtText "gray57"+ unqtDot Gray58 = unqtText "gray58"+ unqtDot Gray59 = unqtText "gray59"+ unqtDot Gray60 = unqtText "gray60"+ unqtDot Gray61 = unqtText "gray61"+ unqtDot Gray62 = unqtText "gray62"+ unqtDot Gray63 = unqtText "gray63"+ unqtDot Gray64 = unqtText "gray64"+ unqtDot Gray65 = unqtText "gray65"+ unqtDot Gray66 = unqtText "gray66"+ unqtDot Gray67 = unqtText "gray67"+ unqtDot Gray68 = unqtText "gray68"+ unqtDot Gray69 = unqtText "gray69"+ unqtDot Gray70 = unqtText "gray70"+ unqtDot Gray71 = unqtText "gray71"+ unqtDot Gray72 = unqtText "gray72"+ unqtDot Gray73 = unqtText "gray73"+ unqtDot Gray74 = unqtText "gray74"+ unqtDot Gray75 = unqtText "gray75"+ unqtDot Gray76 = unqtText "gray76"+ unqtDot Gray77 = unqtText "gray77"+ unqtDot Gray78 = unqtText "gray78"+ unqtDot Gray79 = unqtText "gray79"+ unqtDot Gray80 = unqtText "gray80"+ unqtDot Gray81 = unqtText "gray81"+ unqtDot Gray82 = unqtText "gray82"+ unqtDot Gray83 = unqtText "gray83"+ unqtDot Gray84 = unqtText "gray84"+ unqtDot Gray85 = unqtText "gray85"+ unqtDot Gray86 = unqtText "gray86"+ unqtDot Gray87 = unqtText "gray87"+ unqtDot Gray88 = unqtText "gray88"+ unqtDot Gray89 = unqtText "gray89"+ unqtDot Gray90 = unqtText "gray90"+ unqtDot Gray91 = unqtText "gray91"+ unqtDot Gray92 = unqtText "gray92"+ unqtDot Gray93 = unqtText "gray93"+ unqtDot Gray94 = unqtText "gray94"+ unqtDot Gray95 = unqtText "gray95"+ unqtDot Gray96 = unqtText "gray96"+ unqtDot Gray97 = unqtText "gray97"+ unqtDot Gray98 = unqtText "gray98"+ unqtDot Gray99 = unqtText "gray99"+ unqtDot Gray100 = unqtText "gray100"+ unqtDot Green = unqtText "green"+ unqtDot Green1 = unqtText "green1"+ unqtDot Green2 = unqtText "green2"+ unqtDot Green3 = unqtText "green3"+ unqtDot Green4 = unqtText "green4"+ unqtDot GreenYellow = unqtText "greenyellow"+ unqtDot HoneyDew = unqtText "honeydew"+ unqtDot HoneyDew1 = unqtText "honeydew1"+ unqtDot HoneyDew2 = unqtText "honeydew2"+ unqtDot HoneyDew3 = unqtText "honeydew3"+ unqtDot HoneyDew4 = unqtText "honeydew4"+ unqtDot HotPink = unqtText "hotpink"+ unqtDot HotPink1 = unqtText "hotpink1"+ unqtDot HotPink2 = unqtText "hotpink2"+ unqtDot HotPink3 = unqtText "hotpink3"+ unqtDot HotPink4 = unqtText "hotpink4"+ unqtDot IndianRed = unqtText "indianred"+ unqtDot IndianRed1 = unqtText "indianred1"+ unqtDot IndianRed2 = unqtText "indianred2"+ unqtDot IndianRed3 = unqtText "indianred3"+ unqtDot IndianRed4 = unqtText "indianred4"+ unqtDot Indigo = unqtText "indigo"+ unqtDot Ivory = unqtText "ivory"+ unqtDot Ivory1 = unqtText "ivory1"+ unqtDot Ivory2 = unqtText "ivory2"+ unqtDot Ivory3 = unqtText "ivory3"+ unqtDot Ivory4 = unqtText "ivory4"+ unqtDot Khaki = unqtText "khaki"+ unqtDot Khaki1 = unqtText "khaki1"+ unqtDot Khaki2 = unqtText "khaki2"+ unqtDot Khaki3 = unqtText "khaki3"+ unqtDot Khaki4 = unqtText "khaki4"+ unqtDot Lavender = unqtText "lavender"+ unqtDot LavenderBlush = unqtText "lavenderblush"+ unqtDot LavenderBlush1 = unqtText "lavenderblush1"+ unqtDot LavenderBlush2 = unqtText "lavenderblush2"+ unqtDot LavenderBlush3 = unqtText "lavenderblush3"+ unqtDot LavenderBlush4 = unqtText "lavenderblush4"+ unqtDot LawnGreen = unqtText "lawngreen"+ unqtDot LemonChiffon = unqtText "lemonchiffon"+ unqtDot LemonChiffon1 = unqtText "lemonchiffon1"+ unqtDot LemonChiffon2 = unqtText "lemonchiffon2"+ unqtDot LemonChiffon3 = unqtText "lemonchiffon3"+ unqtDot LemonChiffon4 = unqtText "lemonchiffon4"+ unqtDot LightBlue = unqtText "lightblue"+ unqtDot LightBlue1 = unqtText "lightblue1"+ unqtDot LightBlue2 = unqtText "lightblue2"+ unqtDot LightBlue3 = unqtText "lightblue3"+ unqtDot LightBlue4 = unqtText "lightblue4"+ unqtDot LightCoral = unqtText "lightcoral"+ unqtDot LightCyan = unqtText "lightcyan"+ unqtDot LightCyan1 = unqtText "lightcyan1"+ unqtDot LightCyan2 = unqtText "lightcyan2"+ unqtDot LightCyan3 = unqtText "lightcyan3"+ unqtDot LightCyan4 = unqtText "lightcyan4"+ unqtDot LightGoldenrod = unqtText "lightgoldenrod"+ unqtDot LightGoldenrod1 = unqtText "lightgoldenrod1"+ unqtDot LightGoldenrod2 = unqtText "lightgoldenrod2"+ unqtDot LightGoldenrod3 = unqtText "lightgoldenrod3"+ unqtDot LightGoldenrod4 = unqtText "lightgoldenrod4"+ unqtDot LightGoldenrodYellow = unqtText "lightgoldenrodyellow"+ unqtDot LightGray = unqtText "lightgray"+ unqtDot LightPink = unqtText "lightpink"+ unqtDot LightPink1 = unqtText "lightpink1"+ unqtDot LightPink2 = unqtText "lightpink2"+ unqtDot LightPink3 = unqtText "lightpink3"+ unqtDot LightPink4 = unqtText "lightpink4"+ unqtDot LightSalmon = unqtText "lightsalmon"+ unqtDot LightSalmon1 = unqtText "lightsalmon1"+ unqtDot LightSalmon2 = unqtText "lightsalmon2"+ unqtDot LightSalmon3 = unqtText "lightsalmon3"+ unqtDot LightSalmon4 = unqtText "lightsalmon4"+ unqtDot LightSeaGreen = unqtText "lightseagreen"+ unqtDot LightSkyBlue = unqtText "lightskyblue"+ unqtDot LightSkyBlue1 = unqtText "lightskyblue1"+ unqtDot LightSkyBlue2 = unqtText "lightskyblue2"+ unqtDot LightSkyBlue3 = unqtText "lightskyblue3"+ unqtDot LightSkyBlue4 = unqtText "lightskyblue4"+ unqtDot LightSlateBlue = unqtText "lightslateblue"+ unqtDot LightSlateGray = unqtText "lightslategray"+ unqtDot LightSteelBlue = unqtText "lightsteelblue"+ unqtDot LightSteelBlue1 = unqtText "lightsteelblue1"+ unqtDot LightSteelBlue2 = unqtText "lightsteelblue2"+ unqtDot LightSteelBlue3 = unqtText "lightsteelblue3"+ unqtDot LightSteelBlue4 = unqtText "lightsteelblue4"+ unqtDot LightYellow = unqtText "lightyellow"+ unqtDot LightYellow1 = unqtText "lightyellow1"+ unqtDot LightYellow2 = unqtText "lightyellow2"+ unqtDot LightYellow3 = unqtText "lightyellow3"+ unqtDot LightYellow4 = unqtText "lightyellow4"+ unqtDot LimeGreen = unqtText "limegreen"+ unqtDot Linen = unqtText "linen"+ unqtDot Magenta = unqtText "magenta"+ unqtDot Magenta1 = unqtText "magenta1"+ unqtDot Magenta2 = unqtText "magenta2"+ unqtDot Magenta3 = unqtText "magenta3"+ unqtDot Magenta4 = unqtText "magenta4"+ unqtDot Maroon = unqtText "maroon"+ unqtDot Maroon1 = unqtText "maroon1"+ unqtDot Maroon2 = unqtText "maroon2"+ unqtDot Maroon3 = unqtText "maroon3"+ unqtDot Maroon4 = unqtText "maroon4"+ unqtDot MediumAquamarine = unqtText "mediumaquamarine"+ unqtDot MediumBlue = unqtText "mediumblue"+ unqtDot MediumOrchid = unqtText "mediumorchid"+ unqtDot MediumOrchid1 = unqtText "mediumorchid1"+ unqtDot MediumOrchid2 = unqtText "mediumorchid2"+ unqtDot MediumOrchid3 = unqtText "mediumorchid3"+ unqtDot MediumOrchid4 = unqtText "mediumorchid4"+ unqtDot MediumPurple = unqtText "mediumpurple"+ unqtDot MediumPurple1 = unqtText "mediumpurple1"+ unqtDot MediumPurple2 = unqtText "mediumpurple2"+ unqtDot MediumPurple3 = unqtText "mediumpurple3"+ unqtDot MediumPurple4 = unqtText "mediumpurple4"+ unqtDot MediumSeaGreen = unqtText "mediumseagreen"+ unqtDot MediumSlateBlue = unqtText "mediumslateblue"+ unqtDot MediumSpringGreen = unqtText "mediumspringgreen"+ unqtDot MediumTurquoise = unqtText "mediumturquoise"+ unqtDot MediumVioletRed = unqtText "mediumvioletred"+ unqtDot MidnightBlue = unqtText "midnightblue"+ unqtDot MintCream = unqtText "mintcream"+ unqtDot MistyRose = unqtText "mistyrose"+ unqtDot MistyRose1 = unqtText "mistyrose1"+ unqtDot MistyRose2 = unqtText "mistyrose2"+ unqtDot MistyRose3 = unqtText "mistyrose3"+ unqtDot MistyRose4 = unqtText "mistyrose4"+ unqtDot Moccasin = unqtText "moccasin"+ unqtDot NavajoWhite = unqtText "navajowhite"+ unqtDot NavajoWhite1 = unqtText "navajowhite1"+ unqtDot NavajoWhite2 = unqtText "navajowhite2"+ unqtDot NavajoWhite3 = unqtText "navajowhite3"+ unqtDot NavajoWhite4 = unqtText "navajowhite4"+ unqtDot Navy = unqtText "navy"+ unqtDot NavyBlue = unqtText "navyblue"+ unqtDot OldLace = unqtText "oldlace"+ unqtDot OliveDrab = unqtText "olivedrab"+ unqtDot OliveDrab1 = unqtText "olivedrab1"+ unqtDot OliveDrab2 = unqtText "olivedrab2"+ unqtDot OliveDrab3 = unqtText "olivedrab3"+ unqtDot OliveDrab4 = unqtText "olivedrab4"+ unqtDot Orange = unqtText "orange"+ unqtDot Orange1 = unqtText "orange1"+ unqtDot Orange2 = unqtText "orange2"+ unqtDot Orange3 = unqtText "orange3"+ unqtDot Orange4 = unqtText "orange4"+ unqtDot OrangeRed = unqtText "orangered"+ unqtDot OrangeRed1 = unqtText "orangered1"+ unqtDot OrangeRed2 = unqtText "orangered2"+ unqtDot OrangeRed3 = unqtText "orangered3"+ unqtDot OrangeRed4 = unqtText "orangered4"+ unqtDot Orchid = unqtText "orchid"+ unqtDot Orchid1 = unqtText "orchid1"+ unqtDot Orchid2 = unqtText "orchid2"+ unqtDot Orchid3 = unqtText "orchid3"+ unqtDot Orchid4 = unqtText "orchid4"+ unqtDot PaleGoldenrod = unqtText "palegoldenrod"+ unqtDot PaleGreen = unqtText "palegreen"+ unqtDot PaleGreen1 = unqtText "palegreen1"+ unqtDot PaleGreen2 = unqtText "palegreen2"+ unqtDot PaleGreen3 = unqtText "palegreen3"+ unqtDot PaleGreen4 = unqtText "palegreen4"+ unqtDot PaleTurquoise = unqtText "paleturquoise"+ unqtDot PaleTurquoise1 = unqtText "paleturquoise1"+ unqtDot PaleTurquoise2 = unqtText "paleturquoise2"+ unqtDot PaleTurquoise3 = unqtText "paleturquoise3"+ unqtDot PaleTurquoise4 = unqtText "paleturquoise4"+ unqtDot PaleVioletRed = unqtText "palevioletred"+ unqtDot PaleVioletRed1 = unqtText "palevioletred1"+ unqtDot PaleVioletRed2 = unqtText "palevioletred2"+ unqtDot PaleVioletRed3 = unqtText "palevioletred3"+ unqtDot PaleVioletRed4 = unqtText "palevioletred4"+ unqtDot PapayaWhip = unqtText "papayawhip"+ unqtDot PeachPuff = unqtText "peachpuff"+ unqtDot PeachPuff1 = unqtText "peachpuff1"+ unqtDot PeachPuff2 = unqtText "peachpuff2"+ unqtDot PeachPuff3 = unqtText "peachpuff3"+ unqtDot PeachPuff4 = unqtText "peachpuff4"+ unqtDot Peru = unqtText "peru"+ unqtDot Pink = unqtText "pink"+ unqtDot Pink1 = unqtText "pink1"+ unqtDot Pink2 = unqtText "pink2"+ unqtDot Pink3 = unqtText "pink3"+ unqtDot Pink4 = unqtText "pink4"+ unqtDot Plum = unqtText "plum"+ unqtDot Plum1 = unqtText "plum1"+ unqtDot Plum2 = unqtText "plum2"+ unqtDot Plum3 = unqtText "plum3"+ unqtDot Plum4 = unqtText "plum4"+ unqtDot PowderBlue = unqtText "powderblue"+ unqtDot Purple = unqtText "purple"+ unqtDot Purple1 = unqtText "purple1"+ unqtDot Purple2 = unqtText "purple2"+ unqtDot Purple3 = unqtText "purple3"+ unqtDot Purple4 = unqtText "purple4"+ unqtDot Red = unqtText "red"+ unqtDot Red1 = unqtText "red1"+ unqtDot Red2 = unqtText "red2"+ unqtDot Red3 = unqtText "red3"+ unqtDot Red4 = unqtText "red4"+ unqtDot RosyBrown = unqtText "rosybrown"+ unqtDot RosyBrown1 = unqtText "rosybrown1"+ unqtDot RosyBrown2 = unqtText "rosybrown2"+ unqtDot RosyBrown3 = unqtText "rosybrown3"+ unqtDot RosyBrown4 = unqtText "rosybrown4"+ unqtDot RoyalBlue = unqtText "royalblue"+ unqtDot RoyalBlue1 = unqtText "royalblue1"+ unqtDot RoyalBlue2 = unqtText "royalblue2"+ unqtDot RoyalBlue3 = unqtText "royalblue3"+ unqtDot RoyalBlue4 = unqtText "royalblue4"+ unqtDot SaddleBrown = unqtText "saddlebrown"+ unqtDot Salmon = unqtText "salmon"+ unqtDot Salmon1 = unqtText "salmon1"+ unqtDot Salmon2 = unqtText "salmon2"+ unqtDot Salmon3 = unqtText "salmon3"+ unqtDot Salmon4 = unqtText "salmon4"+ unqtDot SandyBrown = unqtText "sandybrown"+ unqtDot SeaGreen = unqtText "seagreen"+ unqtDot SeaGreen1 = unqtText "seagreen1"+ unqtDot SeaGreen2 = unqtText "seagreen2"+ unqtDot SeaGreen3 = unqtText "seagreen3"+ unqtDot SeaGreen4 = unqtText "seagreen4"+ unqtDot SeaShell = unqtText "seashell"+ unqtDot SeaShell1 = unqtText "seashell1"+ unqtDot SeaShell2 = unqtText "seashell2"+ unqtDot SeaShell3 = unqtText "seashell3"+ unqtDot SeaShell4 = unqtText "seashell4"+ unqtDot Sienna = unqtText "sienna"+ unqtDot Sienna1 = unqtText "sienna1"+ unqtDot Sienna2 = unqtText "sienna2"+ unqtDot Sienna3 = unqtText "sienna3"+ unqtDot Sienna4 = unqtText "sienna4"+ unqtDot SkyBlue = unqtText "skyblue"+ unqtDot SkyBlue1 = unqtText "skyblue1"+ unqtDot SkyBlue2 = unqtText "skyblue2"+ unqtDot SkyBlue3 = unqtText "skyblue3"+ unqtDot SkyBlue4 = unqtText "skyblue4"+ unqtDot SlateBlue = unqtText "slateblue"+ unqtDot SlateBlue1 = unqtText "slateblue1"+ unqtDot SlateBlue2 = unqtText "slateblue2"+ unqtDot SlateBlue3 = unqtText "slateblue3"+ unqtDot SlateBlue4 = unqtText "slateblue4"+ unqtDot SlateGray = unqtText "slategray"+ unqtDot SlateGray1 = unqtText "slategray1"+ unqtDot SlateGray2 = unqtText "slategray2"+ unqtDot SlateGray3 = unqtText "slategray3"+ unqtDot SlateGray4 = unqtText "slategray4"+ unqtDot Snow = unqtText "snow"+ unqtDot Snow1 = unqtText "snow1"+ unqtDot Snow2 = unqtText "snow2"+ unqtDot Snow3 = unqtText "snow3"+ unqtDot Snow4 = unqtText "snow4"+ unqtDot SpringGreen = unqtText "springgreen"+ unqtDot SpringGreen1 = unqtText "springgreen1"+ unqtDot SpringGreen2 = unqtText "springgreen2"+ unqtDot SpringGreen3 = unqtText "springgreen3"+ unqtDot SpringGreen4 = unqtText "springgreen4"+ unqtDot SteelBlue = unqtText "steelblue"+ unqtDot SteelBlue1 = unqtText "steelblue1"+ unqtDot SteelBlue2 = unqtText "steelblue2"+ unqtDot SteelBlue3 = unqtText "steelblue3"+ unqtDot SteelBlue4 = unqtText "steelblue4"+ unqtDot Tan = unqtText "tan"+ unqtDot Tan1 = unqtText "tan1"+ unqtDot Tan2 = unqtText "tan2"+ unqtDot Tan3 = unqtText "tan3"+ unqtDot Tan4 = unqtText "tan4"+ unqtDot Thistle = unqtText "thistle"+ unqtDot Thistle1 = unqtText "thistle1"+ unqtDot Thistle2 = unqtText "thistle2"+ unqtDot Thistle3 = unqtText "thistle3"+ unqtDot Thistle4 = unqtText "thistle4"+ unqtDot Tomato = unqtText "tomato"+ unqtDot Tomato1 = unqtText "tomato1"+ unqtDot Tomato2 = unqtText "tomato2"+ unqtDot Tomato3 = unqtText "tomato3"+ unqtDot Tomato4 = unqtText "tomato4"+ unqtDot Transparent = unqtText "transparent"+ unqtDot Turquoise = unqtText "turquoise"+ unqtDot Turquoise1 = unqtText "turquoise1"+ unqtDot Turquoise2 = unqtText "turquoise2"+ unqtDot Turquoise3 = unqtText "turquoise3"+ unqtDot Turquoise4 = unqtText "turquoise4"+ unqtDot Violet = unqtText "violet"+ unqtDot VioletRed = unqtText "violetred"+ unqtDot VioletRed1 = unqtText "violetred1"+ unqtDot VioletRed2 = unqtText "violetred2"+ unqtDot VioletRed3 = unqtText "violetred3"+ unqtDot VioletRed4 = unqtText "violetred4"+ unqtDot Wheat = unqtText "wheat"+ unqtDot Wheat1 = unqtText "wheat1"+ unqtDot Wheat2 = unqtText "wheat2"+ unqtDot Wheat3 = unqtText "wheat3"+ unqtDot Wheat4 = unqtText "wheat4"+ unqtDot White = unqtText "white"+ unqtDot WhiteSmoke = unqtText "whitesmoke"+ unqtDot Yellow = unqtText "yellow"+ unqtDot Yellow1 = unqtText "yellow1"+ unqtDot Yellow2 = unqtText "yellow2"+ unqtDot Yellow3 = unqtText "yellow3"+ unqtDot Yellow4 = unqtText "yellow4"+ unqtDot YellowGreen = unqtText "yellowgreen"++instance ParseDot X11Color where+ parseUnqt = stringValue [ ("aliceblue", AliceBlue)+ , ("antiquewhite", AntiqueWhite)+ , ("antiquewhite1", AntiqueWhite1)+ , ("antiquewhite2", AntiqueWhite2)+ , ("antiquewhite3", AntiqueWhite3)+ , ("antiquewhite4", AntiqueWhite4)+ , ("aquamarine", Aquamarine)+ , ("aquamarine1", Aquamarine1)+ , ("aquamarine2", Aquamarine2)+ , ("aquamarine3", Aquamarine3)+ , ("aquamarine4", Aquamarine4)+ , ("azure", Azure)+ , ("azure1", Azure1)+ , ("azure2", Azure2)+ , ("azure3", Azure3)+ , ("azure4", Azure4)+ , ("beige", Beige)+ , ("bisque", Bisque)+ , ("bisque1", Bisque1)+ , ("bisque2", Bisque2)+ , ("bisque3", Bisque3)+ , ("bisque4", Bisque4)+ , ("black", Black)+ , ("blanchedalmond", BlanchedAlmond)+ , ("blue", Blue)+ , ("blue1", Blue1)+ , ("blue2", Blue2)+ , ("blue3", Blue3)+ , ("blue4", Blue4)+ , ("blueviolet", BlueViolet)+ , ("brown", Brown)+ , ("brown1", Brown1)+ , ("brown2", Brown2)+ , ("brown3", Brown3)+ , ("brown4", Brown4)+ , ("burlywood", Burlywood)+ , ("burlywood1", Burlywood1)+ , ("burlywood2", Burlywood2)+ , ("burlywood3", Burlywood3)+ , ("burlywood4", Burlywood4)+ , ("cadetblue", CadetBlue)+ , ("cadetblue1", CadetBlue1)+ , ("cadetblue2", CadetBlue2)+ , ("cadetblue3", CadetBlue3)+ , ("cadetblue4", CadetBlue4)+ , ("chartreuse", Chartreuse)+ , ("chartreuse1", Chartreuse1)+ , ("chartreuse2", Chartreuse2)+ , ("chartreuse3", Chartreuse3)+ , ("chartreuse4", Chartreuse4)+ , ("chocolate", Chocolate)+ , ("chocolate1", Chocolate1)+ , ("chocolate2", Chocolate2)+ , ("chocolate3", Chocolate3)+ , ("chocolate4", Chocolate4)+ , ("coral", Coral)+ , ("coral1", Coral1)+ , ("coral2", Coral2)+ , ("coral3", Coral3)+ , ("coral4", Coral4)+ , ("cornflowerblue", CornFlowerBlue)+ , ("cornsilk", CornSilk)+ , ("cornsilk1", CornSilk1)+ , ("cornsilk2", CornSilk2)+ , ("cornsilk3", CornSilk3)+ , ("cornsilk4", CornSilk4)+ , ("crimson", Crimson)+ , ("cyan", Cyan)+ , ("cyan1", Cyan1)+ , ("cyan2", Cyan2)+ , ("cyan3", Cyan3)+ , ("cyan4", Cyan4)+ , ("darkgoldenrod", DarkGoldenrod)+ , ("darkgoldenrod1", DarkGoldenrod1)+ , ("darkgoldenrod2", DarkGoldenrod2)+ , ("darkgoldenrod3", DarkGoldenrod3)+ , ("darkgoldenrod4", DarkGoldenrod4)+ , ("darkgreen", DarkGreen)+ , ("darkkhaki", Darkkhaki)+ , ("darkolivegreen", DarkOliveGreen)+ , ("darkolivegreen1", DarkOliveGreen1)+ , ("darkolivegreen2", DarkOliveGreen2)+ , ("darkolivegreen3", DarkOliveGreen3)+ , ("darkolivegreen4", DarkOliveGreen4)+ , ("darkorange", DarkOrange)+ , ("darkorange1", DarkOrange1)+ , ("darkorange2", DarkOrange2)+ , ("darkorange3", DarkOrange3)+ , ("darkorange4", DarkOrange4)+ , ("darkorchid", DarkOrchid)+ , ("darkorchid1", DarkOrchid1)+ , ("darkorchid2", DarkOrchid2)+ , ("darkorchid3", DarkOrchid3)+ , ("darkorchid4", DarkOrchid4)+ , ("darksalmon", DarkSalmon)+ , ("darkseagreen", DarkSeaGreen)+ , ("darkseagreen1", DarkSeaGreen1)+ , ("darkseagreen2", DarkSeaGreen2)+ , ("darkseagreen3", DarkSeaGreen3)+ , ("darkseagreen4", DarkSeaGreen4)+ , ("darkslateblue", DarkSlateBlue)+ , ("darkslategray", DarkSlateGray)+ , ("darkslategrey", DarkSlateGray)+ , ("darkslategray1", DarkSlateGray1)+ , ("darkslategrey1", DarkSlateGray1)+ , ("darkslategray2", DarkSlateGray2)+ , ("darkslategrey2", DarkSlateGray2)+ , ("darkslategray3", DarkSlateGray3)+ , ("darkslategrey3", DarkSlateGray3)+ , ("darkslategray4", DarkSlateGray4)+ , ("darkslategrey4", DarkSlateGray4)+ , ("darkturquoise", DarkTurquoise)+ , ("darkviolet", DarkViolet)+ , ("deeppink", DeepPink)+ , ("deeppink1", DeepPink1)+ , ("deeppink2", DeepPink2)+ , ("deeppink3", DeepPink3)+ , ("deeppink4", DeepPink4)+ , ("deepskyblue", DeepSkyBlue)+ , ("deepskyblue1", DeepSkyBlue1)+ , ("deepskyblue2", DeepSkyBlue2)+ , ("deepskyblue3", DeepSkyBlue3)+ , ("deepskyblue4", DeepSkyBlue4)+ , ("dimgray", DimGray)+ , ("dimgrey", DimGray)+ , ("dodgerblue", DodgerBlue)+ , ("dodgerblue1", DodgerBlue1)+ , ("dodgerblue2", DodgerBlue2)+ , ("dodgerblue3", DodgerBlue3)+ , ("dodgerblue4", DodgerBlue4)+ , ("firebrick", Firebrick)+ , ("firebrick1", Firebrick1)+ , ("firebrick2", Firebrick2)+ , ("firebrick3", Firebrick3)+ , ("firebrick4", Firebrick4)+ , ("floralwhite", FloralWhite)+ , ("forestgreen", ForestGreen)+ , ("gainsboro", Gainsboro)+ , ("ghostwhite", GhostWhite)+ , ("gold", Gold)+ , ("gold1", Gold1)+ , ("gold2", Gold2)+ , ("gold3", Gold3)+ , ("gold4", Gold4)+ , ("goldenrod", Goldenrod)+ , ("goldenrod1", Goldenrod1)+ , ("goldenrod2", Goldenrod2)+ , ("goldenrod3", Goldenrod3)+ , ("goldenrod4", Goldenrod4)+ , ("gray", Gray)+ , ("grey", Gray)+ , ("gray0", Gray0)+ , ("grey0", Gray0)+ , ("gray1", Gray1)+ , ("grey1", Gray1)+ , ("gray2", Gray2)+ , ("grey2", Gray2)+ , ("gray3", Gray3)+ , ("grey3", Gray3)+ , ("gray4", Gray4)+ , ("grey4", Gray4)+ , ("gray5", Gray5)+ , ("grey5", Gray5)+ , ("gray6", Gray6)+ , ("grey6", Gray6)+ , ("gray7", Gray7)+ , ("grey7", Gray7)+ , ("gray8", Gray8)+ , ("grey8", Gray8)+ , ("gray9", Gray9)+ , ("grey9", Gray9)+ , ("gray10", Gray10)+ , ("grey10", Gray10)+ , ("gray11", Gray11)+ , ("grey11", Gray11)+ , ("gray12", Gray12)+ , ("grey12", Gray12)+ , ("gray13", Gray13)+ , ("grey13", Gray13)+ , ("gray14", Gray14)+ , ("grey14", Gray14)+ , ("gray15", Gray15)+ , ("grey15", Gray15)+ , ("gray16", Gray16)+ , ("grey16", Gray16)+ , ("gray17", Gray17)+ , ("grey17", Gray17)+ , ("gray18", Gray18)+ , ("grey18", Gray18)+ , ("gray19", Gray19)+ , ("grey19", Gray19)+ , ("gray20", Gray20)+ , ("grey20", Gray20)+ , ("gray21", Gray21)+ , ("grey21", Gray21)+ , ("gray22", Gray22)+ , ("grey22", Gray22)+ , ("gray23", Gray23)+ , ("grey23", Gray23)+ , ("gray24", Gray24)+ , ("grey24", Gray24)+ , ("gray25", Gray25)+ , ("grey25", Gray25)+ , ("gray26", Gray26)+ , ("grey26", Gray26)+ , ("gray27", Gray27)+ , ("grey27", Gray27)+ , ("gray28", Gray28)+ , ("grey28", Gray28)+ , ("gray29", Gray29)+ , ("grey29", Gray29)+ , ("gray30", Gray30)+ , ("grey30", Gray30)+ , ("gray31", Gray31)+ , ("grey31", Gray31)+ , ("gray32", Gray32)+ , ("grey32", Gray32)+ , ("gray33", Gray33)+ , ("grey33", Gray33)+ , ("gray34", Gray34)+ , ("grey34", Gray34)+ , ("gray35", Gray35)+ , ("grey35", Gray35)+ , ("gray36", Gray36)+ , ("grey36", Gray36)+ , ("gray37", Gray37)+ , ("grey37", Gray37)+ , ("gray38", Gray38)+ , ("grey38", Gray38)+ , ("gray39", Gray39)+ , ("grey39", Gray39)+ , ("gray40", Gray40)+ , ("grey40", Gray40)+ , ("gray41", Gray41)+ , ("grey41", Gray41)+ , ("gray42", Gray42)+ , ("grey42", Gray42)+ , ("gray43", Gray43)+ , ("grey43", Gray43)+ , ("gray44", Gray44)+ , ("grey44", Gray44)+ , ("gray45", Gray45)+ , ("grey45", Gray45)+ , ("gray46", Gray46)+ , ("grey46", Gray46)+ , ("gray47", Gray47)+ , ("grey47", Gray47)+ , ("gray48", Gray48)+ , ("grey48", Gray48)+ , ("gray49", Gray49)+ , ("grey49", Gray49)+ , ("gray50", Gray50)+ , ("grey50", Gray50)+ , ("gray51", Gray51)+ , ("grey51", Gray51)+ , ("gray52", Gray52)+ , ("grey52", Gray52)+ , ("gray53", Gray53)+ , ("grey53", Gray53)+ , ("gray54", Gray54)+ , ("grey54", Gray54)+ , ("gray55", Gray55)+ , ("grey55", Gray55)+ , ("gray56", Gray56)+ , ("grey56", Gray56)+ , ("gray57", Gray57)+ , ("grey57", Gray57)+ , ("gray58", Gray58)+ , ("grey58", Gray58)+ , ("gray59", Gray59)+ , ("grey59", Gray59)+ , ("gray60", Gray60)+ , ("grey60", Gray60)+ , ("gray61", Gray61)+ , ("grey61", Gray61)+ , ("gray62", Gray62)+ , ("grey62", Gray62)+ , ("gray63", Gray63)+ , ("grey63", Gray63)+ , ("gray64", Gray64)+ , ("grey64", Gray64)+ , ("gray65", Gray65)+ , ("grey65", Gray65)+ , ("gray66", Gray66)+ , ("grey66", Gray66)+ , ("gray67", Gray67)+ , ("grey67", Gray67)+ , ("gray68", Gray68)+ , ("grey68", Gray68)+ , ("gray69", Gray69)+ , ("grey69", Gray69)+ , ("gray70", Gray70)+ , ("grey70", Gray70)+ , ("gray71", Gray71)+ , ("grey71", Gray71)+ , ("gray72", Gray72)+ , ("grey72", Gray72)+ , ("gray73", Gray73)+ , ("grey73", Gray73)+ , ("gray74", Gray74)+ , ("grey74", Gray74)+ , ("gray75", Gray75)+ , ("grey75", Gray75)+ , ("gray76", Gray76)+ , ("grey76", Gray76)+ , ("gray77", Gray77)+ , ("grey77", Gray77)+ , ("gray78", Gray78)+ , ("grey78", Gray78)+ , ("gray79", Gray79)+ , ("grey79", Gray79)+ , ("gray80", Gray80)+ , ("grey80", Gray80)+ , ("gray81", Gray81)+ , ("grey81", Gray81)+ , ("gray82", Gray82)+ , ("grey82", Gray82)+ , ("gray83", Gray83)+ , ("grey83", Gray83)+ , ("gray84", Gray84)+ , ("grey84", Gray84)+ , ("gray85", Gray85)+ , ("grey85", Gray85)+ , ("gray86", Gray86)+ , ("grey86", Gray86)+ , ("gray87", Gray87)+ , ("grey87", Gray87)+ , ("gray88", Gray88)+ , ("grey88", Gray88)+ , ("gray89", Gray89)+ , ("grey89", Gray89)+ , ("gray90", Gray90)+ , ("grey90", Gray90)+ , ("gray91", Gray91)+ , ("grey91", Gray91)+ , ("gray92", Gray92)+ , ("grey92", Gray92)+ , ("gray93", Gray93)+ , ("grey93", Gray93)+ , ("gray94", Gray94)+ , ("grey94", Gray94)+ , ("gray95", Gray95)+ , ("grey95", Gray95)+ , ("gray96", Gray96)+ , ("grey96", Gray96)+ , ("gray97", Gray97)+ , ("grey97", Gray97)+ , ("gray98", Gray98)+ , ("grey98", Gray98)+ , ("gray99", Gray99)+ , ("grey99", Gray99)+ , ("gray100", Gray100)+ , ("grey100", Gray100)+ , ("green", Green)+ , ("green1", Green1)+ , ("green2", Green2)+ , ("green3", Green3)+ , ("green4", Green4)+ , ("greenyellow", GreenYellow)+ , ("honeydew", HoneyDew)+ , ("honeydew1", HoneyDew1)+ , ("honeydew2", HoneyDew2)+ , ("honeydew3", HoneyDew3)+ , ("honeydew4", HoneyDew4)+ , ("hotpink", HotPink)+ , ("hotpink1", HotPink1)+ , ("hotpink2", HotPink2)+ , ("hotpink3", HotPink3)+ , ("hotpink4", HotPink4)+ , ("indianred", IndianRed)+ , ("indianred1", IndianRed1)+ , ("indianred2", IndianRed2)+ , ("indianred3", IndianRed3)+ , ("indianred4", IndianRed4)+ , ("indigo", Indigo)+ , ("ivory", Ivory)+ , ("ivory1", Ivory1)+ , ("ivory2", Ivory2)+ , ("ivory3", Ivory3)+ , ("ivory4", Ivory4)+ , ("khaki", Khaki)+ , ("khaki1", Khaki1)+ , ("khaki2", Khaki2)+ , ("khaki3", Khaki3)+ , ("khaki4", Khaki4)+ , ("lavender", Lavender)+ , ("lavenderblush", LavenderBlush)+ , ("lavenderblush1", LavenderBlush1)+ , ("lavenderblush2", LavenderBlush2)+ , ("lavenderblush3", LavenderBlush3)+ , ("lavenderblush4", LavenderBlush4)+ , ("lawngreen", LawnGreen)+ , ("lemonchiffon", LemonChiffon)+ , ("lemonchiffon1", LemonChiffon1)+ , ("lemonchiffon2", LemonChiffon2)+ , ("lemonchiffon3", LemonChiffon3)+ , ("lemonchiffon4", LemonChiffon4)+ , ("lightblue", LightBlue)+ , ("lightblue1", LightBlue1)+ , ("lightblue2", LightBlue2)+ , ("lightblue3", LightBlue3)+ , ("lightblue4", LightBlue4)+ , ("lightcoral", LightCoral)+ , ("lightcyan", LightCyan)+ , ("lightcyan1", LightCyan1)+ , ("lightcyan2", LightCyan2)+ , ("lightcyan3", LightCyan3)+ , ("lightcyan4", LightCyan4)+ , ("lightgoldenrod", LightGoldenrod)+ , ("lightgoldenrod1", LightGoldenrod1)+ , ("lightgoldenrod2", LightGoldenrod2)+ , ("lightgoldenrod3", LightGoldenrod3)+ , ("lightgoldenrod4", LightGoldenrod4)+ , ("lightgoldenrodyellow", LightGoldenrodYellow)+ , ("lightgray", LightGray)+ , ("lightgrey", LightGray)+ , ("lightpink", LightPink)+ , ("lightpink1", LightPink1)+ , ("lightpink2", LightPink2)+ , ("lightpink3", LightPink3)+ , ("lightpink4", LightPink4)+ , ("lightsalmon", LightSalmon)+ , ("lightsalmon1", LightSalmon1)+ , ("lightsalmon2", LightSalmon2)+ , ("lightsalmon3", LightSalmon3)+ , ("lightsalmon4", LightSalmon4)+ , ("lightseagreen", LightSeaGreen)+ , ("lightskyblue", LightSkyBlue)+ , ("lightskyblue1", LightSkyBlue1)+ , ("lightskyblue2", LightSkyBlue2)+ , ("lightskyblue3", LightSkyBlue3)+ , ("lightskyblue4", LightSkyBlue4)+ , ("lightslateblue", LightSlateBlue)+ , ("lightslategray", LightSlateGray)+ , ("lightslategrey", LightSlateGray)+ , ("lightsteelblue", LightSteelBlue)+ , ("lightsteelblue1", LightSteelBlue1)+ , ("lightsteelblue2", LightSteelBlue2)+ , ("lightsteelblue3", LightSteelBlue3)+ , ("lightsteelblue4", LightSteelBlue4)+ , ("lightyellow", LightYellow)+ , ("lightyellow1", LightYellow1)+ , ("lightyellow2", LightYellow2)+ , ("lightyellow3", LightYellow3)+ , ("lightyellow4", LightYellow4)+ , ("limegreen", LimeGreen)+ , ("linen", Linen)+ , ("magenta", Magenta)+ , ("magenta1", Magenta1)+ , ("magenta2", Magenta2)+ , ("magenta3", Magenta3)+ , ("magenta4", Magenta4)+ , ("maroon", Maroon)+ , ("maroon1", Maroon1)+ , ("maroon2", Maroon2)+ , ("maroon3", Maroon3)+ , ("maroon4", Maroon4)+ , ("mediumaquamarine", MediumAquamarine)+ , ("mediumblue", MediumBlue)+ , ("mediumorchid", MediumOrchid)+ , ("mediumorchid1", MediumOrchid1)+ , ("mediumorchid2", MediumOrchid2)+ , ("mediumorchid3", MediumOrchid3)+ , ("mediumorchid4", MediumOrchid4)+ , ("mediumpurple", MediumPurple)+ , ("mediumpurple1", MediumPurple1)+ , ("mediumpurple2", MediumPurple2)+ , ("mediumpurple3", MediumPurple3)+ , ("mediumpurple4", MediumPurple4)+ , ("mediumseagreen", MediumSeaGreen)+ , ("mediumslateblue", MediumSlateBlue)+ , ("mediumspringgreen", MediumSpringGreen)+ , ("mediumturquoise", MediumTurquoise)+ , ("mediumvioletred", MediumVioletRed)+ , ("midnightblue", MidnightBlue)+ , ("mintcream", MintCream)+ , ("mistyrose", MistyRose)+ , ("mistyrose1", MistyRose1)+ , ("mistyrose2", MistyRose2)+ , ("mistyrose3", MistyRose3)+ , ("mistyrose4", MistyRose4)+ , ("moccasin", Moccasin)+ , ("navajowhite", NavajoWhite)+ , ("navajowhite1", NavajoWhite1)+ , ("navajowhite2", NavajoWhite2)+ , ("navajowhite3", NavajoWhite3)+ , ("navajowhite4", NavajoWhite4)+ , ("navy", Navy)+ , ("navyblue", NavyBlue)+ , ("oldlace", OldLace)+ , ("olivedrab", OliveDrab)+ , ("olivedrab1", OliveDrab1)+ , ("olivedrab2", OliveDrab2)+ , ("olivedrab3", OliveDrab3)+ , ("olivedrab4", OliveDrab4)+ , ("orange", Orange)+ , ("orange1", Orange1)+ , ("orange2", Orange2)+ , ("orange3", Orange3)+ , ("orange4", Orange4)+ , ("orangered", OrangeRed)+ , ("orangered1", OrangeRed1)+ , ("orangered2", OrangeRed2)+ , ("orangered3", OrangeRed3)+ , ("orangered4", OrangeRed4)+ , ("orchid", Orchid)+ , ("orchid1", Orchid1)+ , ("orchid2", Orchid2)+ , ("orchid3", Orchid3)+ , ("orchid4", Orchid4)+ , ("palegoldenrod", PaleGoldenrod)+ , ("palegreen", PaleGreen)+ , ("palegreen1", PaleGreen1)+ , ("palegreen2", PaleGreen2)+ , ("palegreen3", PaleGreen3)+ , ("palegreen4", PaleGreen4)+ , ("paleturquoise", PaleTurquoise)+ , ("paleturquoise1", PaleTurquoise1)+ , ("paleturquoise2", PaleTurquoise2)+ , ("paleturquoise3", PaleTurquoise3)+ , ("paleturquoise4", PaleTurquoise4)+ , ("palevioletred", PaleVioletRed)+ , ("palevioletred1", PaleVioletRed1)+ , ("palevioletred2", PaleVioletRed2)+ , ("palevioletred3", PaleVioletRed3)+ , ("palevioletred4", PaleVioletRed4)+ , ("papayawhip", PapayaWhip)+ , ("peachpuff", PeachPuff)+ , ("peachpuff1", PeachPuff1)+ , ("peachpuff2", PeachPuff2)+ , ("peachpuff3", PeachPuff3)+ , ("peachpuff4", PeachPuff4)+ , ("peru", Peru)+ , ("pink", Pink)+ , ("pink1", Pink1)+ , ("pink2", Pink2)+ , ("pink3", Pink3)+ , ("pink4", Pink4)+ , ("plum", Plum)+ , ("plum1", Plum1)+ , ("plum2", Plum2)+ , ("plum3", Plum3)+ , ("plum4", Plum4)+ , ("powderblue", PowderBlue)+ , ("purple", Purple)+ , ("purple1", Purple1)+ , ("purple2", Purple2)+ , ("purple3", Purple3)+ , ("purple4", Purple4)+ , ("red", Red)+ , ("red1", Red1)+ , ("red2", Red2)+ , ("red3", Red3)+ , ("red4", Red4)+ , ("rosybrown", RosyBrown)+ , ("rosybrown1", RosyBrown1)+ , ("rosybrown2", RosyBrown2)+ , ("rosybrown3", RosyBrown3)+ , ("rosybrown4", RosyBrown4)+ , ("royalblue", RoyalBlue)+ , ("royalblue1", RoyalBlue1)+ , ("royalblue2", RoyalBlue2)+ , ("royalblue3", RoyalBlue3)+ , ("royalblue4", RoyalBlue4)+ , ("saddlebrown", SaddleBrown)+ , ("salmon", Salmon)+ , ("salmon1", Salmon1)+ , ("salmon2", Salmon2)+ , ("salmon3", Salmon3)+ , ("salmon4", Salmon4)+ , ("sandybrown", SandyBrown)+ , ("seagreen", SeaGreen)+ , ("seagreen1", SeaGreen1)+ , ("seagreen2", SeaGreen2)+ , ("seagreen3", SeaGreen3)+ , ("seagreen4", SeaGreen4)+ , ("seashell", SeaShell)+ , ("seashell1", SeaShell1)+ , ("seashell2", SeaShell2)+ , ("seashell3", SeaShell3)+ , ("seashell4", SeaShell4)+ , ("sienna", Sienna)+ , ("sienna1", Sienna1)+ , ("sienna2", Sienna2)+ , ("sienna3", Sienna3)+ , ("sienna4", Sienna4)+ , ("skyblue", SkyBlue)+ , ("skyblue1", SkyBlue1)+ , ("skyblue2", SkyBlue2)+ , ("skyblue3", SkyBlue3)+ , ("skyblue4", SkyBlue4)+ , ("slateblue", SlateBlue)+ , ("slateblue1", SlateBlue1)+ , ("slateblue2", SlateBlue2)+ , ("slateblue3", SlateBlue3)+ , ("slateblue4", SlateBlue4)+ , ("slategray", SlateGray)+ , ("slategrey", SlateGray)+ , ("slategray1", SlateGray1)+ , ("slategrey1", SlateGray1)+ , ("slategray2", SlateGray2)+ , ("slategrey2", SlateGray2)+ , ("slategray3", SlateGray3)+ , ("slategrey3", SlateGray3)+ , ("slategray4", SlateGray4)+ , ("slategrey4", SlateGray4)+ , ("snow", Snow)+ , ("snow1", Snow1)+ , ("snow2", Snow2)+ , ("snow3", Snow3)+ , ("snow4", Snow4)+ , ("springgreen", SpringGreen)+ , ("springgreen1", SpringGreen1)+ , ("springgreen2", SpringGreen2)+ , ("springgreen3", SpringGreen3)+ , ("springgreen4", SpringGreen4)+ , ("steelblue", SteelBlue)+ , ("steelblue1", SteelBlue1)+ , ("steelblue2", SteelBlue2)+ , ("steelblue3", SteelBlue3)+ , ("steelblue4", SteelBlue4)+ , ("tan", Tan)+ , ("tan1", Tan1)+ , ("tan2", Tan2)+ , ("tan3", Tan3)+ , ("tan4", Tan4)+ , ("thistle", Thistle)+ , ("thistle1", Thistle1)+ , ("thistle2", Thistle2)+ , ("thistle3", Thistle3)+ , ("thistle4", Thistle4)+ , ("tomato", Tomato)+ , ("tomato1", Tomato1)+ , ("tomato2", Tomato2)+ , ("tomato3", Tomato3)+ , ("tomato4", Tomato4)+ , ("transparent", Transparent)+ , ("invis", Transparent)+ , ("none", Transparent)+ , ("turquoise", Turquoise)+ , ("turquoise1", Turquoise1)+ , ("turquoise2", Turquoise2)+ , ("turquoise3", Turquoise3)+ , ("turquoise4", Turquoise4)+ , ("violet", Violet)+ , ("violetred", VioletRed)+ , ("violetred1", VioletRed1)+ , ("violetred2", VioletRed2)+ , ("violetred3", VioletRed3)+ , ("violetred4", VioletRed4)+ , ("wheat", Wheat)+ , ("wheat1", Wheat1)+ , ("wheat2", Wheat2)+ , ("wheat3", Wheat3)+ , ("wheat4", Wheat4)+ , ("white", White)+ , ("whitesmoke", WhiteSmoke)+ , ("yellow", Yellow)+ , ("yellow1", Yellow1)+ , ("yellow2", Yellow2)+ , ("yellow3", Yellow3)+ , ("yellow4", Yellow4)+ , ("yellowgreen", YellowGreen)+ ]++-- | Convert an 'X11Color' to its equivalent 'Colour' value. Note+-- that it uses 'AlphaColour' because of 'Transparent'; all other+-- 'X11Color' values are completely opaque.+x11Colour :: X11Color -> AlphaColour Double+x11Colour AliceBlue = opaque $ sRGB24 240 248 255+x11Colour AntiqueWhite = opaque $ sRGB24 250 235 215+x11Colour AntiqueWhite1 = opaque $ sRGB24 255 239 219+x11Colour AntiqueWhite2 = opaque $ sRGB24 238 223 204+x11Colour AntiqueWhite3 = opaque $ sRGB24 205 192 176+x11Colour AntiqueWhite4 = opaque $ sRGB24 139 131 120+x11Colour Aquamarine = opaque $ sRGB24 127 255 212+x11Colour Aquamarine1 = opaque $ sRGB24 127 255 212+x11Colour Aquamarine2 = opaque $ sRGB24 118 238 198+x11Colour Aquamarine3 = opaque $ sRGB24 102 205 170+x11Colour Aquamarine4 = opaque $ sRGB24 69 139 116+x11Colour Azure = opaque $ sRGB24 240 255 255+x11Colour Azure1 = opaque $ sRGB24 240 255 255+x11Colour Azure2 = opaque $ sRGB24 224 238 238+x11Colour Azure3 = opaque $ sRGB24 193 205 205+x11Colour Azure4 = opaque $ sRGB24 131 139 139+x11Colour Beige = opaque $ sRGB24 245 245 220+x11Colour Bisque = opaque $ sRGB24 255 228 196+x11Colour Bisque1 = opaque $ sRGB24 255 228 196+x11Colour Bisque2 = opaque $ sRGB24 238 213 183+x11Colour Bisque3 = opaque $ sRGB24 205 183 158+x11Colour Bisque4 = opaque $ sRGB24 139 125 107+x11Colour Black = opaque $ sRGB24 0 0 0+x11Colour BlanchedAlmond = opaque $ sRGB24 255 235 205+x11Colour Blue = opaque $ sRGB24 0 0 255+x11Colour Blue1 = opaque $ sRGB24 0 0 255+x11Colour Blue2 = opaque $ sRGB24 0 0 238+x11Colour Blue3 = opaque $ sRGB24 0 0 205+x11Colour Blue4 = opaque $ sRGB24 0 0 139+x11Colour BlueViolet = opaque $ sRGB24 138 43 226+x11Colour Brown = opaque $ sRGB24 165 42 42+x11Colour Brown1 = opaque $ sRGB24 255 64 64+x11Colour Brown2 = opaque $ sRGB24 238 59 59+x11Colour Brown3 = opaque $ sRGB24 205 51 51+x11Colour Brown4 = opaque $ sRGB24 139 35 35+x11Colour Burlywood = opaque $ sRGB24 222 184 135+x11Colour Burlywood1 = opaque $ sRGB24 255 211 155+x11Colour Burlywood2 = opaque $ sRGB24 238 197 145+x11Colour Burlywood3 = opaque $ sRGB24 205 170 125+x11Colour Burlywood4 = opaque $ sRGB24 139 115 85+x11Colour CadetBlue = opaque $ sRGB24 95 158 160+x11Colour CadetBlue1 = opaque $ sRGB24 152 245 255+x11Colour CadetBlue2 = opaque $ sRGB24 142 229 238+x11Colour CadetBlue3 = opaque $ sRGB24 122 197 205+x11Colour CadetBlue4 = opaque $ sRGB24 83 134 139+x11Colour Chartreuse = opaque $ sRGB24 127 255 0+x11Colour Chartreuse1 = opaque $ sRGB24 127 255 0+x11Colour Chartreuse2 = opaque $ sRGB24 118 238 0+x11Colour Chartreuse3 = opaque $ sRGB24 102 205 0+x11Colour Chartreuse4 = opaque $ sRGB24 69 139 0+x11Colour Chocolate = opaque $ sRGB24 210 105 30+x11Colour Chocolate1 = opaque $ sRGB24 255 127 36+x11Colour Chocolate2 = opaque $ sRGB24 238 118 33+x11Colour Chocolate3 = opaque $ sRGB24 205 102 29+x11Colour Chocolate4 = opaque $ sRGB24 139 69 19+x11Colour Coral = opaque $ sRGB24 255 127 80+x11Colour Coral1 = opaque $ sRGB24 255 114 86+x11Colour Coral2 = opaque $ sRGB24 238 106 80+x11Colour Coral3 = opaque $ sRGB24 205 91 69+x11Colour Coral4 = opaque $ sRGB24 139 62 47+x11Colour CornFlowerBlue = opaque $ sRGB24 100 149 237+x11Colour CornSilk = opaque $ sRGB24 255 248 220+x11Colour CornSilk1 = opaque $ sRGB24 255 248 220+x11Colour CornSilk2 = opaque $ sRGB24 238 232 205+x11Colour CornSilk3 = opaque $ sRGB24 205 200 177+x11Colour CornSilk4 = opaque $ sRGB24 139 136 120+x11Colour Crimson = opaque $ sRGB24 220 20 60+x11Colour Cyan = opaque $ sRGB24 0 255 255+x11Colour Cyan1 = opaque $ sRGB24 0 255 255+x11Colour Cyan2 = opaque $ sRGB24 0 238 238+x11Colour Cyan3 = opaque $ sRGB24 0 205 205+x11Colour Cyan4 = opaque $ sRGB24 0 139 139+x11Colour DarkGoldenrod = opaque $ sRGB24 184 134 11+x11Colour DarkGoldenrod1 = opaque $ sRGB24 255 185 15+x11Colour DarkGoldenrod2 = opaque $ sRGB24 238 173 14+x11Colour DarkGoldenrod3 = opaque $ sRGB24 205 149 12+x11Colour DarkGoldenrod4 = opaque $ sRGB24 139 101 8+x11Colour DarkGreen = opaque $ sRGB24 0 100 0+x11Colour Darkkhaki = opaque $ sRGB24 189 183 107+x11Colour DarkOliveGreen = opaque $ sRGB24 85 107 47+x11Colour DarkOliveGreen1 = opaque $ sRGB24 202 255 112+x11Colour DarkOliveGreen2 = opaque $ sRGB24 188 238 104+x11Colour DarkOliveGreen3 = opaque $ sRGB24 162 205 90+x11Colour DarkOliveGreen4 = opaque $ sRGB24 110 139 61+x11Colour DarkOrange = opaque $ sRGB24 255 140 0+x11Colour DarkOrange1 = opaque $ sRGB24 255 127 0+x11Colour DarkOrange2 = opaque $ sRGB24 238 118 0+x11Colour DarkOrange3 = opaque $ sRGB24 205 102 0+x11Colour DarkOrange4 = opaque $ sRGB24 139 69 0+x11Colour DarkOrchid = opaque $ sRGB24 153 50 204+x11Colour DarkOrchid1 = opaque $ sRGB24 191 62 255+x11Colour DarkOrchid2 = opaque $ sRGB24 178 58 238+x11Colour DarkOrchid3 = opaque $ sRGB24 154 50 205+x11Colour DarkOrchid4 = opaque $ sRGB24 104 34 139+x11Colour DarkSalmon = opaque $ sRGB24 233 150 122+x11Colour DarkSeaGreen = opaque $ sRGB24 143 188 143+x11Colour DarkSeaGreen1 = opaque $ sRGB24 193 255 193+x11Colour DarkSeaGreen2 = opaque $ sRGB24 180 238 180+x11Colour DarkSeaGreen3 = opaque $ sRGB24 155 205 155+x11Colour DarkSeaGreen4 = opaque $ sRGB24 105 139 105+x11Colour DarkSlateBlue = opaque $ sRGB24 72 61 139+x11Colour DarkSlateGray = opaque $ sRGB24 47 79 79+x11Colour DarkSlateGray1 = opaque $ sRGB24 151 255 255+x11Colour DarkSlateGray2 = opaque $ sRGB24 141 238 238+x11Colour DarkSlateGray3 = opaque $ sRGB24 121 205 205+x11Colour DarkSlateGray4 = opaque $ sRGB24 82 139 139+x11Colour DarkTurquoise = opaque $ sRGB24 0 206 209+x11Colour DarkViolet = opaque $ sRGB24 148 0 211+x11Colour DeepPink = opaque $ sRGB24 255 20 147+x11Colour DeepPink1 = opaque $ sRGB24 255 20 147+x11Colour DeepPink2 = opaque $ sRGB24 238 18 137+x11Colour DeepPink3 = opaque $ sRGB24 205 16 118+x11Colour DeepPink4 = opaque $ sRGB24 139 10 80+x11Colour DeepSkyBlue = opaque $ sRGB24 0 191 255+x11Colour DeepSkyBlue1 = opaque $ sRGB24 0 191 255+x11Colour DeepSkyBlue2 = opaque $ sRGB24 0 178 238+x11Colour DeepSkyBlue3 = opaque $ sRGB24 0 154 205+x11Colour DeepSkyBlue4 = opaque $ sRGB24 0 104 139+x11Colour DimGray = opaque $ sRGB24 105 105 105+x11Colour DodgerBlue = opaque $ sRGB24 30 144 255+x11Colour DodgerBlue1 = opaque $ sRGB24 30 144 255+x11Colour DodgerBlue2 = opaque $ sRGB24 28 134 238+x11Colour DodgerBlue3 = opaque $ sRGB24 24 116 205+x11Colour DodgerBlue4 = opaque $ sRGB24 16 78 139+x11Colour Firebrick = opaque $ sRGB24 178 34 34+x11Colour Firebrick1 = opaque $ sRGB24 255 48 48+x11Colour Firebrick2 = opaque $ sRGB24 238 44 44+x11Colour Firebrick3 = opaque $ sRGB24 205 38 38+x11Colour Firebrick4 = opaque $ sRGB24 139 26 26+x11Colour FloralWhite = opaque $ sRGB24 255 250 240+x11Colour ForestGreen = opaque $ sRGB24 34 139 34+x11Colour Gainsboro = opaque $ sRGB24 220 220 220+x11Colour GhostWhite = opaque $ sRGB24 248 248 255+x11Colour Gold = opaque $ sRGB24 255 215 0+x11Colour Gold1 = opaque $ sRGB24 255 215 0+x11Colour Gold2 = opaque $ sRGB24 238 201 0+x11Colour Gold3 = opaque $ sRGB24 205 173 0+x11Colour Gold4 = opaque $ sRGB24 139 117 0+x11Colour Goldenrod = opaque $ sRGB24 218 165 32+x11Colour Goldenrod1 = opaque $ sRGB24 255 193 37+x11Colour Goldenrod2 = opaque $ sRGB24 238 180 34+x11Colour Goldenrod3 = opaque $ sRGB24 205 155 29+x11Colour Goldenrod4 = opaque $ sRGB24 139 105 20+x11Colour Gray = opaque $ sRGB24 192 192 192+x11Colour Gray0 = opaque $ sRGB24 0 0 0+x11Colour Gray1 = opaque $ sRGB24 3 3 3+x11Colour Gray2 = opaque $ sRGB24 5 5 5+x11Colour Gray3 = opaque $ sRGB24 8 8 8+x11Colour Gray4 = opaque $ sRGB24 10 10 10+x11Colour Gray5 = opaque $ sRGB24 13 13 13+x11Colour Gray6 = opaque $ sRGB24 15 15 15+x11Colour Gray7 = opaque $ sRGB24 18 18 18+x11Colour Gray8 = opaque $ sRGB24 20 20 20+x11Colour Gray9 = opaque $ sRGB24 23 23 23+x11Colour Gray10 = opaque $ sRGB24 26 26 26+x11Colour Gray11 = opaque $ sRGB24 28 28 28+x11Colour Gray12 = opaque $ sRGB24 31 31 31+x11Colour Gray13 = opaque $ sRGB24 33 33 33+x11Colour Gray14 = opaque $ sRGB24 36 36 36+x11Colour Gray15 = opaque $ sRGB24 38 38 38+x11Colour Gray16 = opaque $ sRGB24 41 41 41+x11Colour Gray17 = opaque $ sRGB24 43 43 43+x11Colour Gray18 = opaque $ sRGB24 46 46 46+x11Colour Gray19 = opaque $ sRGB24 48 48 48+x11Colour Gray20 = opaque $ sRGB24 51 51 51+x11Colour Gray21 = opaque $ sRGB24 54 54 54+x11Colour Gray22 = opaque $ sRGB24 56 56 56+x11Colour Gray23 = opaque $ sRGB24 59 59 59+x11Colour Gray24 = opaque $ sRGB24 61 61 61+x11Colour Gray25 = opaque $ sRGB24 64 64 64+x11Colour Gray26 = opaque $ sRGB24 66 66 66+x11Colour Gray27 = opaque $ sRGB24 69 69 69+x11Colour Gray28 = opaque $ sRGB24 71 71 71+x11Colour Gray29 = opaque $ sRGB24 74 74 74+x11Colour Gray30 = opaque $ sRGB24 77 77 77+x11Colour Gray31 = opaque $ sRGB24 79 79 79+x11Colour Gray32 = opaque $ sRGB24 82 82 82+x11Colour Gray33 = opaque $ sRGB24 84 84 84+x11Colour Gray34 = opaque $ sRGB24 87 87 87+x11Colour Gray35 = opaque $ sRGB24 89 89 89+x11Colour Gray36 = opaque $ sRGB24 92 92 92+x11Colour Gray37 = opaque $ sRGB24 94 94 94+x11Colour Gray38 = opaque $ sRGB24 97 97 97+x11Colour Gray39 = opaque $ sRGB24 99 99 99+x11Colour Gray40 = opaque $ sRGB24 102 102 102+x11Colour Gray41 = opaque $ sRGB24 105 105 105+x11Colour Gray42 = opaque $ sRGB24 107 107 107+x11Colour Gray43 = opaque $ sRGB24 110 110 110+x11Colour Gray44 = opaque $ sRGB24 112 112 112+x11Colour Gray45 = opaque $ sRGB24 115 115 115+x11Colour Gray46 = opaque $ sRGB24 117 117 117+x11Colour Gray47 = opaque $ sRGB24 120 120 120+x11Colour Gray48 = opaque $ sRGB24 122 122 122+x11Colour Gray49 = opaque $ sRGB24 125 125 125+x11Colour Gray50 = opaque $ sRGB24 127 127 127+x11Colour Gray51 = opaque $ sRGB24 130 130 130+x11Colour Gray52 = opaque $ sRGB24 133 133 133+x11Colour Gray53 = opaque $ sRGB24 135 135 135+x11Colour Gray54 = opaque $ sRGB24 138 138 138+x11Colour Gray55 = opaque $ sRGB24 140 140 140+x11Colour Gray56 = opaque $ sRGB24 143 143 143+x11Colour Gray57 = opaque $ sRGB24 145 145 145+x11Colour Gray58 = opaque $ sRGB24 148 148 148+x11Colour Gray59 = opaque $ sRGB24 150 150 150+x11Colour Gray60 = opaque $ sRGB24 153 153 153+x11Colour Gray61 = opaque $ sRGB24 156 156 156+x11Colour Gray62 = opaque $ sRGB24 158 158 158+x11Colour Gray63 = opaque $ sRGB24 161 161 161+x11Colour Gray64 = opaque $ sRGB24 163 163 163+x11Colour Gray65 = opaque $ sRGB24 166 166 166+x11Colour Gray66 = opaque $ sRGB24 168 168 168+x11Colour Gray67 = opaque $ sRGB24 171 171 171+x11Colour Gray68 = opaque $ sRGB24 173 173 173+x11Colour Gray69 = opaque $ sRGB24 176 176 176+x11Colour Gray70 = opaque $ sRGB24 179 179 179+x11Colour Gray71 = opaque $ sRGB24 181 181 181+x11Colour Gray72 = opaque $ sRGB24 184 184 184+x11Colour Gray73 = opaque $ sRGB24 186 186 186+x11Colour Gray74 = opaque $ sRGB24 189 189 189+x11Colour Gray75 = opaque $ sRGB24 191 191 191+x11Colour Gray76 = opaque $ sRGB24 194 194 194+x11Colour Gray77 = opaque $ sRGB24 196 196 196+x11Colour Gray78 = opaque $ sRGB24 199 199 199+x11Colour Gray79 = opaque $ sRGB24 201 201 201+x11Colour Gray80 = opaque $ sRGB24 204 204 204+x11Colour Gray81 = opaque $ sRGB24 207 207 207+x11Colour Gray82 = opaque $ sRGB24 209 209 209+x11Colour Gray83 = opaque $ sRGB24 212 212 212+x11Colour Gray84 = opaque $ sRGB24 214 214 214+x11Colour Gray85 = opaque $ sRGB24 217 217 217+x11Colour Gray86 = opaque $ sRGB24 219 219 219+x11Colour Gray87 = opaque $ sRGB24 222 222 222+x11Colour Gray88 = opaque $ sRGB24 224 224 224+x11Colour Gray89 = opaque $ sRGB24 227 227 227+x11Colour Gray90 = opaque $ sRGB24 229 229 229+x11Colour Gray91 = opaque $ sRGB24 232 232 232+x11Colour Gray92 = opaque $ sRGB24 235 235 235+x11Colour Gray93 = opaque $ sRGB24 237 237 237+x11Colour Gray94 = opaque $ sRGB24 240 240 240+x11Colour Gray95 = opaque $ sRGB24 242 242 242+x11Colour Gray96 = opaque $ sRGB24 245 245 245+x11Colour Gray97 = opaque $ sRGB24 247 247 247+x11Colour Gray98 = opaque $ sRGB24 250 250 250+x11Colour Gray99 = opaque $ sRGB24 252 252 252+x11Colour Gray100 = opaque $ sRGB24 255 255 255+x11Colour Green = opaque $ sRGB24 0 255 0+x11Colour Green1 = opaque $ sRGB24 0 255 0+x11Colour Green2 = opaque $ sRGB24 0 238 0+x11Colour Green3 = opaque $ sRGB24 0 205 0+x11Colour Green4 = opaque $ sRGB24 0 139 0+x11Colour GreenYellow = opaque $ sRGB24 173 255 47+x11Colour HoneyDew = opaque $ sRGB24 240 255 240+x11Colour HoneyDew1 = opaque $ sRGB24 240 255 240+x11Colour HoneyDew2 = opaque $ sRGB24 224 238 224+x11Colour HoneyDew3 = opaque $ sRGB24 193 205 193+x11Colour HoneyDew4 = opaque $ sRGB24 131 139 131+x11Colour HotPink = opaque $ sRGB24 255 105 180+x11Colour HotPink1 = opaque $ sRGB24 255 110 180+x11Colour HotPink2 = opaque $ sRGB24 238 106 167+x11Colour HotPink3 = opaque $ sRGB24 205 96 144+x11Colour HotPink4 = opaque $ sRGB24 139 58 98+x11Colour IndianRed = opaque $ sRGB24 205 92 92+x11Colour IndianRed1 = opaque $ sRGB24 255 106 106+x11Colour IndianRed2 = opaque $ sRGB24 238 99 99+x11Colour IndianRed3 = opaque $ sRGB24 205 85 85+x11Colour IndianRed4 = opaque $ sRGB24 139 58 58+x11Colour Indigo = opaque $ sRGB24 75 0 130+x11Colour Ivory = opaque $ sRGB24 255 255 240+x11Colour Ivory1 = opaque $ sRGB24 255 255 240+x11Colour Ivory2 = opaque $ sRGB24 238 238 224+x11Colour Ivory3 = opaque $ sRGB24 205 205 193+x11Colour Ivory4 = opaque $ sRGB24 139 139 131+x11Colour Khaki = opaque $ sRGB24 240 230 140+x11Colour Khaki1 = opaque $ sRGB24 255 246 143+x11Colour Khaki2 = opaque $ sRGB24 238 230 133+x11Colour Khaki3 = opaque $ sRGB24 205 198 115+x11Colour Khaki4 = opaque $ sRGB24 139 134 78+x11Colour Lavender = opaque $ sRGB24 230 230 250+x11Colour LavenderBlush = opaque $ sRGB24 255 240 245+x11Colour LavenderBlush1 = opaque $ sRGB24 255 240 245+x11Colour LavenderBlush2 = opaque $ sRGB24 238 224 229+x11Colour LavenderBlush3 = opaque $ sRGB24 205 193 197+x11Colour LavenderBlush4 = opaque $ sRGB24 139 131 134+x11Colour LawnGreen = opaque $ sRGB24 124 252 0+x11Colour LemonChiffon = opaque $ sRGB24 255 250 205+x11Colour LemonChiffon1 = opaque $ sRGB24 255 250 205+x11Colour LemonChiffon2 = opaque $ sRGB24 238 233 191+x11Colour LemonChiffon3 = opaque $ sRGB24 205 201 165+x11Colour LemonChiffon4 = opaque $ sRGB24 139 137 112+x11Colour LightBlue = opaque $ sRGB24 173 216 230+x11Colour LightBlue1 = opaque $ sRGB24 191 239 255+x11Colour LightBlue2 = opaque $ sRGB24 178 223 238+x11Colour LightBlue3 = opaque $ sRGB24 154 192 205+x11Colour LightBlue4 = opaque $ sRGB24 104 131 139+x11Colour LightCoral = opaque $ sRGB24 240 128 128+x11Colour LightCyan = opaque $ sRGB24 224 255 255+x11Colour LightCyan1 = opaque $ sRGB24 224 255 255+x11Colour LightCyan2 = opaque $ sRGB24 209 238 238+x11Colour LightCyan3 = opaque $ sRGB24 180 205 205+x11Colour LightCyan4 = opaque $ sRGB24 122 139 139+x11Colour LightGoldenrod = opaque $ sRGB24 238 221 130+x11Colour LightGoldenrod1 = opaque $ sRGB24 255 236 139+x11Colour LightGoldenrod2 = opaque $ sRGB24 238 220 130+x11Colour LightGoldenrod3 = opaque $ sRGB24 205 190 112+x11Colour LightGoldenrod4 = opaque $ sRGB24 139 129 76+x11Colour LightGoldenrodYellow = opaque $ sRGB24 250 250 210+x11Colour LightGray = opaque $ sRGB24 211 211 211+x11Colour LightPink = opaque $ sRGB24 255 182 193+x11Colour LightPink1 = opaque $ sRGB24 255 174 185+x11Colour LightPink2 = opaque $ sRGB24 238 162 173+x11Colour LightPink3 = opaque $ sRGB24 205 140 149+x11Colour LightPink4 = opaque $ sRGB24 139 95 101+x11Colour LightSalmon = opaque $ sRGB24 255 160 122+x11Colour LightSalmon1 = opaque $ sRGB24 255 160 122+x11Colour LightSalmon2 = opaque $ sRGB24 238 149 114+x11Colour LightSalmon3 = opaque $ sRGB24 205 129 98+x11Colour LightSalmon4 = opaque $ sRGB24 139 87 66+x11Colour LightSeaGreen = opaque $ sRGB24 32 178 170+x11Colour LightSkyBlue = opaque $ sRGB24 135 206 250+x11Colour LightSkyBlue1 = opaque $ sRGB24 176 226 255+x11Colour LightSkyBlue2 = opaque $ sRGB24 164 211 238+x11Colour LightSkyBlue3 = opaque $ sRGB24 141 182 205+x11Colour LightSkyBlue4 = opaque $ sRGB24 96 123 139+x11Colour LightSlateBlue = opaque $ sRGB24 132 112 255+x11Colour LightSlateGray = opaque $ sRGB24 119 136 153+x11Colour LightSteelBlue = opaque $ sRGB24 176 196 222+x11Colour LightSteelBlue1 = opaque $ sRGB24 202 225 255+x11Colour LightSteelBlue2 = opaque $ sRGB24 188 210 238+x11Colour LightSteelBlue3 = opaque $ sRGB24 162 181 205+x11Colour LightSteelBlue4 = opaque $ sRGB24 110 123 139+x11Colour LightYellow = opaque $ sRGB24 255 255 224+x11Colour LightYellow1 = opaque $ sRGB24 255 255 224+x11Colour LightYellow2 = opaque $ sRGB24 238 238 209+x11Colour LightYellow3 = opaque $ sRGB24 205 205 180+x11Colour LightYellow4 = opaque $ sRGB24 139 139 122+x11Colour LimeGreen = opaque $ sRGB24 50 205 50+x11Colour Linen = opaque $ sRGB24 250 240 230+x11Colour Magenta = opaque $ sRGB24 255 0 255+x11Colour Magenta1 = opaque $ sRGB24 255 0 255+x11Colour Magenta2 = opaque $ sRGB24 238 0 238+x11Colour Magenta3 = opaque $ sRGB24 205 0 205+x11Colour Magenta4 = opaque $ sRGB24 139 0 139+x11Colour Maroon = opaque $ sRGB24 176 48 96+x11Colour Maroon1 = opaque $ sRGB24 255 52 179+x11Colour Maroon2 = opaque $ sRGB24 238 48 167+x11Colour Maroon3 = opaque $ sRGB24 205 41 144+x11Colour Maroon4 = opaque $ sRGB24 139 28 98+x11Colour MediumAquamarine = opaque $ sRGB24 102 205 170+x11Colour MediumBlue = opaque $ sRGB24 0 0 205+x11Colour MediumOrchid = opaque $ sRGB24 186 85 211+x11Colour MediumOrchid1 = opaque $ sRGB24 224 102 255+x11Colour MediumOrchid2 = opaque $ sRGB24 209 95 238+x11Colour MediumOrchid3 = opaque $ sRGB24 180 82 205+x11Colour MediumOrchid4 = opaque $ sRGB24 122 55 139+x11Colour MediumPurple = opaque $ sRGB24 147 112 219+x11Colour MediumPurple1 = opaque $ sRGB24 171 130 255+x11Colour MediumPurple2 = opaque $ sRGB24 159 121 238+x11Colour MediumPurple3 = opaque $ sRGB24 137 104 205+x11Colour MediumPurple4 = opaque $ sRGB24 93 71 139+x11Colour MediumSeaGreen = opaque $ sRGB24 60 179 113+x11Colour MediumSlateBlue = opaque $ sRGB24 123 104 238+x11Colour MediumSpringGreen = opaque $ sRGB24 0 250 154+x11Colour MediumTurquoise = opaque $ sRGB24 72 209 204+x11Colour MediumVioletRed = opaque $ sRGB24 199 21 133+x11Colour MidnightBlue = opaque $ sRGB24 25 25 112+x11Colour MintCream = opaque $ sRGB24 245 255 250+x11Colour MistyRose = opaque $ sRGB24 255 228 225+x11Colour MistyRose1 = opaque $ sRGB24 255 228 225+x11Colour MistyRose2 = opaque $ sRGB24 238 213 210+x11Colour MistyRose3 = opaque $ sRGB24 205 183 181+x11Colour MistyRose4 = opaque $ sRGB24 139 125 123+x11Colour Moccasin = opaque $ sRGB24 255 228 181+x11Colour NavajoWhite = opaque $ sRGB24 255 222 173+x11Colour NavajoWhite1 = opaque $ sRGB24 255 222 173+x11Colour NavajoWhite2 = opaque $ sRGB24 238 207 161+x11Colour NavajoWhite3 = opaque $ sRGB24 205 179 139+x11Colour NavajoWhite4 = opaque $ sRGB24 139 121 94+x11Colour Navy = opaque $ sRGB24 0 0 128+x11Colour NavyBlue = opaque $ sRGB24 0 0 128+x11Colour OldLace = opaque $ sRGB24 253 245 230+x11Colour OliveDrab = opaque $ sRGB24 107 142 35+x11Colour OliveDrab1 = opaque $ sRGB24 192 255 62+x11Colour OliveDrab2 = opaque $ sRGB24 179 238 58+x11Colour OliveDrab3 = opaque $ sRGB24 154 205 50+x11Colour OliveDrab4 = opaque $ sRGB24 105 139 34+x11Colour Orange = opaque $ sRGB24 255 165 0+x11Colour Orange1 = opaque $ sRGB24 255 165 0+x11Colour Orange2 = opaque $ sRGB24 238 154 0+x11Colour Orange3 = opaque $ sRGB24 205 133 0+x11Colour Orange4 = opaque $ sRGB24 139 90 0+x11Colour OrangeRed = opaque $ sRGB24 255 69 0+x11Colour OrangeRed1 = opaque $ sRGB24 255 69 0+x11Colour OrangeRed2 = opaque $ sRGB24 238 64 0+x11Colour OrangeRed3 = opaque $ sRGB24 205 55 0+x11Colour OrangeRed4 = opaque $ sRGB24 139 37 0+x11Colour Orchid = opaque $ sRGB24 218 112 214+x11Colour Orchid1 = opaque $ sRGB24 255 131 250+x11Colour Orchid2 = opaque $ sRGB24 238 122 233+x11Colour Orchid3 = opaque $ sRGB24 205 105 201+x11Colour Orchid4 = opaque $ sRGB24 139 71 137+x11Colour PaleGoldenrod = opaque $ sRGB24 238 232 170+x11Colour PaleGreen = opaque $ sRGB24 152 251 152+x11Colour PaleGreen1 = opaque $ sRGB24 154 255 154+x11Colour PaleGreen2 = opaque $ sRGB24 144 238 144+x11Colour PaleGreen3 = opaque $ sRGB24 124 205 124+x11Colour PaleGreen4 = opaque $ sRGB24 84 139 84+x11Colour PaleTurquoise = opaque $ sRGB24 175 238 238+x11Colour PaleTurquoise1 = opaque $ sRGB24 187 255 255+x11Colour PaleTurquoise2 = opaque $ sRGB24 174 238 238+x11Colour PaleTurquoise3 = opaque $ sRGB24 150 205 205+x11Colour PaleTurquoise4 = opaque $ sRGB24 102 139 139+x11Colour PaleVioletRed = opaque $ sRGB24 219 112 147+x11Colour PaleVioletRed1 = opaque $ sRGB24 255 130 171+x11Colour PaleVioletRed2 = opaque $ sRGB24 238 121 159+x11Colour PaleVioletRed3 = opaque $ sRGB24 205 104 137+x11Colour PaleVioletRed4 = opaque $ sRGB24 139 71 93+x11Colour PapayaWhip = opaque $ sRGB24 255 239 213+x11Colour PeachPuff = opaque $ sRGB24 255 218 185+x11Colour PeachPuff1 = opaque $ sRGB24 255 218 185+x11Colour PeachPuff2 = opaque $ sRGB24 238 203 173+x11Colour PeachPuff3 = opaque $ sRGB24 205 175 149+x11Colour PeachPuff4 = opaque $ sRGB24 139 119 101+x11Colour Peru = opaque $ sRGB24 205 133 63+x11Colour Pink = opaque $ sRGB24 255 192 203+x11Colour Pink1 = opaque $ sRGB24 255 181 197+x11Colour Pink2 = opaque $ sRGB24 238 169 184+x11Colour Pink3 = opaque $ sRGB24 205 145 158+x11Colour Pink4 = opaque $ sRGB24 139 99 108+x11Colour Plum = opaque $ sRGB24 221 160 221+x11Colour Plum1 = opaque $ sRGB24 255 187 255+x11Colour Plum2 = opaque $ sRGB24 238 174 238+x11Colour Plum3 = opaque $ sRGB24 205 150 205+x11Colour Plum4 = opaque $ sRGB24 139 102 139+x11Colour PowderBlue = opaque $ sRGB24 176 224 230+x11Colour Purple = opaque $ sRGB24 160 32 240+x11Colour Purple1 = opaque $ sRGB24 155 48 255+x11Colour Purple2 = opaque $ sRGB24 145 44 238+x11Colour Purple3 = opaque $ sRGB24 125 38 205+x11Colour Purple4 = opaque $ sRGB24 85 26 139+x11Colour Red = opaque $ sRGB24 255 0 0+x11Colour Red1 = opaque $ sRGB24 255 0 0+x11Colour Red2 = opaque $ sRGB24 238 0 0+x11Colour Red3 = opaque $ sRGB24 205 0 0+x11Colour Red4 = opaque $ sRGB24 139 0 0+x11Colour RosyBrown = opaque $ sRGB24 188 143 143+x11Colour RosyBrown1 = opaque $ sRGB24 255 193 193+x11Colour RosyBrown2 = opaque $ sRGB24 238 180 180+x11Colour RosyBrown3 = opaque $ sRGB24 205 155 155+x11Colour RosyBrown4 = opaque $ sRGB24 139 105 105+x11Colour RoyalBlue = opaque $ sRGB24 65 105 225+x11Colour RoyalBlue1 = opaque $ sRGB24 72 118 255+x11Colour RoyalBlue2 = opaque $ sRGB24 67 110 238+x11Colour RoyalBlue3 = opaque $ sRGB24 58 95 205+x11Colour RoyalBlue4 = opaque $ sRGB24 39 64 139+x11Colour SaddleBrown = opaque $ sRGB24 139 69 19+x11Colour Salmon = opaque $ sRGB24 250 128 114+x11Colour Salmon1 = opaque $ sRGB24 255 140 105+x11Colour Salmon2 = opaque $ sRGB24 238 130 98+x11Colour Salmon3 = opaque $ sRGB24 205 112 84+x11Colour Salmon4 = opaque $ sRGB24 139 76 57+x11Colour SandyBrown = opaque $ sRGB24 244 164 96+x11Colour SeaGreen = opaque $ sRGB24 46 139 87+x11Colour SeaGreen1 = opaque $ sRGB24 84 255 159+x11Colour SeaGreen2 = opaque $ sRGB24 78 238 148+x11Colour SeaGreen3 = opaque $ sRGB24 67 205 128+x11Colour SeaGreen4 = opaque $ sRGB24 46 139 87+x11Colour SeaShell = opaque $ sRGB24 255 245 238+x11Colour SeaShell1 = opaque $ sRGB24 255 245 238+x11Colour SeaShell2 = opaque $ sRGB24 238 229 222+x11Colour SeaShell3 = opaque $ sRGB24 205 197 191+x11Colour SeaShell4 = opaque $ sRGB24 139 134 130+x11Colour Sienna = opaque $ sRGB24 160 82 45+x11Colour Sienna1 = opaque $ sRGB24 255 130 71+x11Colour Sienna2 = opaque $ sRGB24 238 121 66+x11Colour Sienna3 = opaque $ sRGB24 205 104 57+x11Colour Sienna4 = opaque $ sRGB24 139 71 38+x11Colour SkyBlue = opaque $ sRGB24 135 206 235+x11Colour SkyBlue1 = opaque $ sRGB24 135 206 255+x11Colour SkyBlue2 = opaque $ sRGB24 126 192 238+x11Colour SkyBlue3 = opaque $ sRGB24 108 166 205+x11Colour SkyBlue4 = opaque $ sRGB24 74 112 139+x11Colour SlateBlue = opaque $ sRGB24 106 90 205+x11Colour SlateBlue1 = opaque $ sRGB24 131 111 255+x11Colour SlateBlue2 = opaque $ sRGB24 122 103 238+x11Colour SlateBlue3 = opaque $ sRGB24 105 89 205+x11Colour SlateBlue4 = opaque $ sRGB24 71 60 139+x11Colour SlateGray = opaque $ sRGB24 112 128 144+x11Colour SlateGray1 = opaque $ sRGB24 198 226 255+x11Colour SlateGray2 = opaque $ sRGB24 185 211 238+x11Colour SlateGray3 = opaque $ sRGB24 159 182 205+x11Colour SlateGray4 = opaque $ sRGB24 108 123 139+x11Colour Snow = opaque $ sRGB24 255 250 250+x11Colour Snow1 = opaque $ sRGB24 255 250 250+x11Colour Snow2 = opaque $ sRGB24 238 233 233+x11Colour Snow3 = opaque $ sRGB24 205 201 201+x11Colour Snow4 = opaque $ sRGB24 139 137 137+x11Colour SpringGreen = opaque $ sRGB24 0 255 127+x11Colour SpringGreen1 = opaque $ sRGB24 0 255 127+x11Colour SpringGreen2 = opaque $ sRGB24 0 238 118+x11Colour SpringGreen3 = opaque $ sRGB24 0 205 102+x11Colour SpringGreen4 = opaque $ sRGB24 0 139 69+x11Colour SteelBlue = opaque $ sRGB24 70 130 180+x11Colour SteelBlue1 = opaque $ sRGB24 99 184 255+x11Colour SteelBlue2 = opaque $ sRGB24 92 172 238+x11Colour SteelBlue3 = opaque $ sRGB24 79 148 205+x11Colour SteelBlue4 = opaque $ sRGB24 54 100 139+x11Colour Tan = opaque $ sRGB24 210 180 140+x11Colour Tan1 = opaque $ sRGB24 255 165 79+x11Colour Tan2 = opaque $ sRGB24 238 154 73+x11Colour Tan3 = opaque $ sRGB24 205 133 63+x11Colour Tan4 = opaque $ sRGB24 139 90 43+x11Colour Thistle = opaque $ sRGB24 216 191 216+x11Colour Thistle1 = opaque $ sRGB24 255 225 255+x11Colour Thistle2 = opaque $ sRGB24 238 210 238+x11Colour Thistle3 = opaque $ sRGB24 205 181 205+x11Colour Thistle4 = opaque $ sRGB24 139 123 139+x11Colour Tomato = opaque $ sRGB24 255 99 71+x11Colour Tomato1 = opaque $ sRGB24 255 99 71+x11Colour Tomato2 = opaque $ sRGB24 238 92 66+x11Colour Tomato3 = opaque $ sRGB24 205 79 57+x11Colour Tomato4 = opaque $ sRGB24 139 54 38+x11Colour Transparent = transparent+x11Colour Turquoise = opaque $ sRGB24 64 224 208+x11Colour Turquoise1 = opaque $ sRGB24 0 245 255+x11Colour Turquoise2 = opaque $ sRGB24 0 229 238+x11Colour Turquoise3 = opaque $ sRGB24 0 197 205+x11Colour Turquoise4 = opaque $ sRGB24 0 134 139+x11Colour Violet = opaque $ sRGB24 238 130 238+x11Colour VioletRed = opaque $ sRGB24 208 32 144+x11Colour VioletRed1 = opaque $ sRGB24 255 62 150+x11Colour VioletRed2 = opaque $ sRGB24 238 58 140+x11Colour VioletRed3 = opaque $ sRGB24 205 50 120+x11Colour VioletRed4 = opaque $ sRGB24 139 34 82+x11Colour Wheat = opaque $ sRGB24 245 222 179+x11Colour Wheat1 = opaque $ sRGB24 255 231 186+x11Colour Wheat2 = opaque $ sRGB24 238 216 174+x11Colour Wheat3 = opaque $ sRGB24 205 186 150+x11Colour Wheat4 = opaque $ sRGB24 139 126 102+x11Colour White = opaque $ sRGB24 255 255 255+x11Colour WhiteSmoke = opaque $ sRGB24 245 245 245+x11Colour Yellow = opaque $ sRGB24 255 255 0+x11Colour Yellow1 = opaque $ sRGB24 255 255 0+x11Colour Yellow2 = opaque $ sRGB24 238 238 0+x11Colour Yellow3 = opaque $ sRGB24 205 205 0+x11Colour Yellow4 = opaque $ sRGB24 139 139 0+x11Colour YellowGreen = opaque $ sRGB24 154 205 50
Data/GraphViz/Attributes/Complete.hs view
@@ -26,12 +26,14 @@ * @ColorList@, @DoubleList@ and @PointfList@ are defined as actual lists (@'LayerList'@ needs a newtype for other reasons). All of these- are assumed to be non-empty lists. Note that for the @Color@- 'Attribute' for node values, only a single Color is valid; edges are- allowed multiple colors with one spline/arrow per color in the list- (but you must have at least one 'Color' in the list). This might be- changed in future.+ are assumed to be non-empty lists. + * For the various @*Color@ attributes that take in a list of+ 'Color' values, usually only one color is used. The @Color@+ attribute for edges allows multiple values; for other attributes,+ two values are supported for gradient fills in Graphviz >=+ 2.29.0.+ * Style is implemented as a list of 'StyleItem' values; note that empty lists are not allowed. @@ -65,6 +67,12 @@ supports UTF-8 encoding (as it is not currently feasible nor needed to also support Latin1 encoding). + * In Graphviz, when a node or edge has a list of attributes, the+ colorscheme which is used to identify a color can be set /after/+ that color (e.g. @[colorscheme=x11,color=grey,colorscheme=svg]@+ uses the svg colorscheme's definition of grey, which is different+ from the x11 one. Instead, graphviz parses them in order.+ -} module Data.GraphViz.Attributes.Complete ( -- * The actual /Dot/ attributes.@@ -101,7 +109,7 @@ , EscString , Label(..) , VerticalPlacement(..)- , module Data.GraphViz.Attributes.HTML+ , LabelScheme(..) -- *** Types representing the Dot grammar for records. , RecordFields , RecordField(..)@@ -110,6 +118,7 @@ -- ** Nodes , Shape(..)+ , Paths(..) , ScaleType(..) -- ** Edges@@ -142,6 +151,7 @@ , Model(..) , Overlap(..) , Root(..)+ , Order(..) , OutputMode(..) , Pack(..) , PackMode(..)@@ -172,7 +182,8 @@ ) where import Data.GraphViz.Attributes.Colors-import Data.GraphViz.Attributes.HTML+import Data.GraphViz.Attributes.Colors.X11(X11Color(Transparent, Black))+import qualified Data.GraphViz.Attributes.HTML as Html import Data.GraphViz.Attributes.Internal import Data.GraphViz.Util import Data.GraphViz.Parsing@@ -180,13 +191,14 @@ import Data.GraphViz.State(getLayerSep, setLayerSep) import Data.GraphViz.Exception(GraphvizException(NotCustomAttr), throw) -import Data.List(partition)+import Data.List(partition, intercalate) import Data.Maybe(isJust) import Data.Word(Word16) import qualified Data.Set as S import qualified Data.Text.Lazy as T import Data.Text.Lazy(Text) import Control.Monad(liftM, liftM2)+import System.FilePath(searchPathSeparator, splitSearchPath) -- ----------------------------------------------------------------------------- @@ -236,20 +248,20 @@ | ArrowSize Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@ | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@ | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only- | Bb Rect -- ^ /Valid for/: G; /Notes/: write only- | BgColor Color -- ^ /Valid for/: GC; /Default/: @'X11Color' 'Transparent'@+ | BoundingBox Rect -- ^ /Valid for/: G; /Notes/: write only+ | ColorScheme ColorScheme -- ^ /Valid for/: ENCG; /Default/: @'X11'@+ | BgColor [Color] -- ^ /Valid for/: GC; /Default/: @['X11Color' 'Transparent']@ | Center Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True' | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: @'Local'@; /Notes/: dot only- | ColorScheme ColorScheme -- ^ /Valid for/: ENCG; /Default/: @'X11'@ | Color [Color] -- ^ /Valid for/: ENC; /Default/: @['X11Color' 'Black']@ | Comment Text -- ^ /Valid for/: ENG; /Default/: @\"\"@ | Compound Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only | Concentrate Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True' | Constraint Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'; /Notes/: dot only | Decorate Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'- | DefaultDist Double -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only- | Dimen Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+ | DefaultDist Double -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only, only if @'Pack' 'DontPack' | Dim Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+ | Dimen Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only | Dir DirType -- ^ /Valid for/: E; /Default/: @'Forward'@ (directed), @'NoDir'@ (undirected) | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: @'NoConstraints'@; /Parsing Default/: 'EdgeConstraints'; /Notes/: neato only | Distortion Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@@@ -259,13 +271,15 @@ | EdgeTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only | Epsilon Double -- ^ /Valid for/: G; /Default/: @.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@); /Notes/: neato only | ESep DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 3@; /Notes/: not dot- | FillColor Color -- ^ /Valid for/: NC; /Default/: @'X11Color' 'LightGray'@ (nodes), @'X11Color' 'Black'@ (clusters)+ | FillColor [Color] -- ^ /Valid for/: NEC; /Default/: @['X11Color' 'LightGray']@ (nodes), @['X11Color' 'Black']@ (clusters) | FixedSize Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True' | FontColor Color -- ^ /Valid for/: ENGC; /Default/: @'X11Color' 'Black'@ | FontName Text -- ^ /Valid for/: ENGC; /Default/: @\"Times-Roman\"@ | FontNames Text -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only | FontPath Text -- ^ /Valid for/: G; /Default/: system dependent | FontSize Double -- ^ /Valid for/: ENGC; /Default/: @14.0@; /Minimum/: @1.0@+ | ForceLabels Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: Only for 'XLabel' attributes, requires Graphviz >= 2.29.0+ | GradientAngle Int -- ^ /Valid for/: NCG; /Default/: 0; /Notes/: requires Graphviz >= 2.29.0 | Group Text -- ^ /Valid for/: N; /Default/: @\"\"@; /Notes/: dot only | HeadURL EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only | HeadClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'@@ -274,10 +288,13 @@ | HeadTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only | HeadTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only | Height Double -- ^ /Valid for/: N; /Default/: @0.5@; /Minimum/: @0.02@- | ID Label -- ^ /Valid for/: GNE; /Default/: @'StrLabel' \"\"@; /Notes/: svg, postscript, map only+ | ID EscString -- ^ /Valid for/: GNE; /Default/: @\"\"; /Notes/: svg, postscript, map only | Image Text -- ^ /Valid for/: N; /Default/: @\"\"@+ | ImagePath Paths -- ^ /Valid for/: G; /Default/: @'Paths' []@; /Notes/: Printing and parsing is OS-specific, requires Graphviz >= 2.29.0 | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: @'NoScale'@; /Parsing Default/: 'UniformScale'+ | Label Label -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise) | LabelURL EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+ | LabelScheme LabelScheme -- ^ /Valid for/: G; /Default/: @'NotEdgeLabel'@; /Notes/: sfdp only, requires Graphviz >= 2.28.0 | LabelAngle Double -- ^ /Valid for/: E; /Default/: @-25.0@; /Minimum/: @-180.0@ | LabelDistance Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@ | LabelFloat Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'@@ -288,41 +305,42 @@ | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: @'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes) | LabelTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only | LabelTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only- | Label Label -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise) | Landscape Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'- | LayerSep LayerSep -- ^ /Valid for/: G; /Default/: @'LSep' \" :\t\"@- | Layers LayerList -- ^ /Valid for/: G; /Default/: @'LL' []@ | Layer LayerRange -- ^ /Valid for/: EN+ | Layers LayerList -- ^ /Valid for/: G; /Default/: @'LL' []@+ | LayerSep LayerSep -- ^ /Valid for/: G; /Default/: @'LSep' \" :\t\"@ | Layout Text -- ^ /Valid for/: G; /Default/: @\"\"@ | Len Double -- ^ /Valid for/: E; /Default/: @1.0@ (neato), @0.3@ (fdp); /Notes/: fdp, neato only | LevelsGap Double -- ^ /Valid for/: G; /Default/: @0.0@; /Notes/: neato only | Levels Int -- ^ /Valid for/: G; /Default/: @'maxBound'@; /Minimum/: @0@; /Notes/: sfdp only | LHead Text -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | LHeight Double -- ^ /Valid for/: GC; /Notes/: write only, requires Graphviz >= 2.28.0 | LPos Point -- ^ /Valid for/: EGC; /Notes/: write only | LTail Text -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | LWidth Double -- ^ /Valid for/: GC; /Notes/: write only, requires Graphviz >= 2.28.0 | Margin DPoint -- ^ /Valid for/: NG; /Default/: device dependent | MaxIter Int -- ^ /Valid for/: G; /Default/: @100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp); /Notes/: fdp, neato only | MCLimit Double -- ^ /Valid for/: G; /Default/: @1.0@; /Notes/: dot only | MinDist Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: circo only | MinLen Int -- ^ /Valid for/: E; /Default/: @1@; /Minimum/: @0@; /Notes/: dot only- | Model Model -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only | Mode ModeType -- ^ /Valid for/: G; /Default/: @'Major'@; /Notes/: neato only+ | Model Model -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only | Mosek Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: neato only; requires the Mosek software | NodeSep Double -- ^ /Valid for/: G; /Default/: @0.25@; /Minimum/: @0.02@; /Notes/: dot only | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: @'False'@; /Parsing Default/: 'True' | Normalize Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: not dot- | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only- | Ordering Text -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: dot only+ | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only+ | Ordering Order -- ^ /Valid for/: GN; /Default/: none; /Notes/: dot only | Orientation Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @360.0@ | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: @'BreadthFirst'@- | OverlapScaling Double -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only | Overlap Overlap -- ^ /Valid for/: G; /Default/: @'KeepOverlaps'@; /Parsing Default/: 'KeepOverlaps'; /Notes/: not dot- | PackMode PackMode -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot+ | OverlapScaling Double -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only | Pack Pack -- ^ /Valid for/: G; /Default/: @'DontPack'@; /Parsing Default/: 'DoPack'; /Notes/: not dot+ | PackMode PackMode -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot | Pad DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 0.0555@ (4 points)- | PageDir PageDir -- ^ /Valid for/: G; /Default/: @'Bl'@ | Page Point -- ^ /Valid for/: G+ | PageDir PageDir -- ^ /Valid for/: G; /Default/: @'Bl'@ | PenColor Color -- ^ /Valid for/: C; /Default/: @'X11Color' 'Black'@ | PenWidth Double -- ^ /Valid for/: CNE; /Default/: @1.0@; /Minimum/: @0.0@ | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default (nodes), @1@ (clusters); /Minimum/: 0@@ -330,9 +348,9 @@ | Pos Pos -- ^ /Valid for/: EN | QuadTree QuadType -- ^ /Valid for/: G; /Default/: @'NormalQT'@; /Parsing Default/: 'NormalQT'; /Notes/: sfdp only | Quantum Double -- ^ /Valid for/: G; /Default/: @0.0@; /Minimum/: @0.0@+ | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only | RankDir RankDir -- ^ /Valid for/: G; /Default/: @'FromTop'@; /Notes/: dot only | RankSep [Double] -- ^ /Valid for/: G; /Default/: @[0.5]@ (dot), @[1.0]@ (twopi); /Minimum/: [0.02]; /Notes/: twopi, dot only- | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only | Ratio Ratios -- ^ /Valid for/: G | Rects [Rect] -- ^ /Valid for/: N; /Notes/: write only | Regular Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'@@ -340,13 +358,15 @@ | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: sfdp only | Root Root -- ^ /Valid for/: GN; /Default/: @'NodeName' \"\"@ (graphs), @'NotCentral'@ (nodes); /Parsing Default/: 'IsCentral'; /Notes/: circo, twopi only | Rotate Int -- ^ /Valid for/: G; /Default/: @0@+ | Rotation Double -- ^ /Valid for/: G; /Default/: @0@; /Notes/: sfdp only, requires Graphviz >= 2.28.0 | SameHead Text -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only | SameTail Text -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only | SamplePoints Int -- ^ /Valid for/: N; /Default/: @8@ (output), @20@ (overlap and image maps)+ | Scale DPoint -- ^ /Valid for/: G; /Notes/: twopi only, requires Graphviz >= 2.28.0 | SearchSize Int -- ^ /Valid for/: G; /Default/: @30@; /Notes/: dot only | Sep DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 4@; /Notes/: not dot- | ShapeFile Text -- ^ /Valid for/: N; /Default/: @\"\"@ | Shape Shape -- ^ /Valid for/: N; /Default/: @'Ellipse'@+ | ShapeFile Text -- ^ /Valid for/: N; /Default/: @\"\"@ | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: @0@; /Minimum/: @0@; /Notes/: dot only | Sides Int -- ^ /Valid for/: N; /Default/: @4@; /Minimum/: @0@ | Size Point -- ^ /Valid for/: G@@ -355,8 +375,8 @@ | SortV Word16 -- ^ /Valid for/: GCN; /Default/: @0@; /Minimum/: @0@ | Splines EdgeType -- ^ /Valid for/: G; /Parsing Default/: 'SplineEdges' | Start StartType -- ^ /Valid for/: G; /Notes/: fdp, neato only- | StyleSheet Text -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only | Style [StyleItem] -- ^ /Valid for/: ENC+ | StyleSheet Text -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only | TailURL EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only | TailClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True' | TailLabel Label -- ^ /Valid for/: E; /Default/: @'StrLabel' \"\"@@@ -371,6 +391,7 @@ | VoroMargin Double -- ^ /Valid for/: G; /Default/: @0.05@; /Minimum/: @0.0@; /Notes/: not dot | Weight Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0@ (dot), @1@ (neato,fdp,sfdp) | Width Double -- ^ /Valid for/: N; /Default/: @0.75@; /Minimum/: @0.01@+ | XLabel Label -- ^ /Valid for/: EN; /Default/: @'StrLabel' \"\"@; /Notes/: requires Graphviz >= 2.29.0 | Z Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-MAXFLOAT@, @-1000@ | UnknownAttribute AttributeName Text -- ^ /Valid for/: Assumed valid for all; the fields are 'Attribute' name and value respectively. deriving (Eq, Ord, Show, Read)@@ -388,11 +409,11 @@ unqtDot (ArrowSize v) = printField "arrowsize" v unqtDot (ArrowTail v) = printField "arrowtail" v unqtDot (Aspect v) = printField "aspect" v- unqtDot (Bb v) = printField "bb" v+ unqtDot (BoundingBox v) = printField "bb" v+ unqtDot (ColorScheme v) = printField "colorscheme" v unqtDot (BgColor v) = printField "bgcolor" v unqtDot (Center v) = printField "center" v unqtDot (ClusterRank v) = printField "clusterrank" v- unqtDot (ColorScheme v) = printField "colorscheme" v unqtDot (Color v) = printField "color" v unqtDot (Comment v) = printField "comment" v unqtDot (Compound v) = printField "compound" v@@ -400,8 +421,8 @@ unqtDot (Constraint v) = printField "constraint" v unqtDot (Decorate v) = printField "decorate" v unqtDot (DefaultDist v) = printField "defaultdist" v- unqtDot (Dimen v) = printField "dimen" v unqtDot (Dim v) = printField "dim" v+ unqtDot (Dimen v) = printField "dimen" v unqtDot (Dir v) = printField "dir" v unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v unqtDot (Distortion v) = printField "distortion" v@@ -418,6 +439,8 @@ unqtDot (FontNames v) = printField "fontnames" v unqtDot (FontPath v) = printField "fontpath" v unqtDot (FontSize v) = printField "fontsize" v+ unqtDot (ForceLabels v) = printField "forcelabels" v+ unqtDot (GradientAngle v) = printField "gradientangle" v unqtDot (Group v) = printField "group" v unqtDot (HeadURL v) = printField "headURL" v unqtDot (HeadClip v) = printField "headclip" v@@ -428,8 +451,11 @@ unqtDot (Height v) = printField "height" v unqtDot (ID v) = printField "id" v unqtDot (Image v) = printField "image" v+ unqtDot (ImagePath v) = printField "imagepath" v unqtDot (ImageScale v) = printField "imagescale" v+ unqtDot (Label v) = printField "label" v unqtDot (LabelURL v) = printField "labelURL" v+ unqtDot (LabelScheme v) = printField "label_scheme" v unqtDot (LabelAngle v) = printField "labelangle" v unqtDot (LabelDistance v) = printField "labeldistance" v unqtDot (LabelFloat v) = printField "labelfloat" v@@ -440,41 +466,42 @@ unqtDot (LabelLoc v) = printField "labelloc" v unqtDot (LabelTarget v) = printField "labeltarget" v unqtDot (LabelTooltip v) = printField "labeltooltip" v- unqtDot (Label v) = printField "label" v unqtDot (Landscape v) = printField "landscape" v- unqtDot (LayerSep v) = printField "layersep" v- unqtDot (Layers v) = printField "layers" v unqtDot (Layer v) = printField "layer" v+ unqtDot (Layers v) = printField "layers" v+ unqtDot (LayerSep v) = printField "layersep" v unqtDot (Layout v) = printField "layout" v unqtDot (Len v) = printField "len" v unqtDot (LevelsGap v) = printField "levelsgap" v unqtDot (Levels v) = printField "levels" v unqtDot (LHead v) = printField "lhead" v+ unqtDot (LHeight v) = printField "LHeight" v unqtDot (LPos v) = printField "lp" v unqtDot (LTail v) = printField "ltail" v+ unqtDot (LWidth v) = printField "lwidth" v unqtDot (Margin v) = printField "margin" v unqtDot (MaxIter v) = printField "maxiter" v unqtDot (MCLimit v) = printField "mclimit" v unqtDot (MinDist v) = printField "mindist" v unqtDot (MinLen v) = printField "minlen" v- unqtDot (Model v) = printField "model" v unqtDot (Mode v) = printField "mode" v+ unqtDot (Model v) = printField "model" v unqtDot (Mosek v) = printField "mosek" v unqtDot (NodeSep v) = printField "nodesep" v unqtDot (NoJustify v) = printField "nojustify" v unqtDot (Normalize v) = printField "normalize" v- unqtDot (Nslimit1 v) = printField "nslimit1" v unqtDot (Nslimit v) = printField "nslimit" v+ unqtDot (Nslimit1 v) = printField "nslimit1" v unqtDot (Ordering v) = printField "ordering" v unqtDot (Orientation v) = printField "orientation" v unqtDot (OutputOrder v) = printField "outputorder" v- unqtDot (OverlapScaling v) = printField "overlap_scaling" v unqtDot (Overlap v) = printField "overlap" v- unqtDot (PackMode v) = printField "packmode" v+ unqtDot (OverlapScaling v) = printField "overlap_scaling" v unqtDot (Pack v) = printField "pack" v+ unqtDot (PackMode v) = printField "packmode" v unqtDot (Pad v) = printField "pad" v- unqtDot (PageDir v) = printField "pagedir" v unqtDot (Page v) = printField "page" v+ unqtDot (PageDir v) = printField "pagedir" v unqtDot (PenColor v) = printField "pencolor" v unqtDot (PenWidth v) = printField "penwidth" v unqtDot (Peripheries v) = printField "peripheries" v@@ -482,9 +509,9 @@ unqtDot (Pos v) = printField "pos" v unqtDot (QuadTree v) = printField "quadtree" v unqtDot (Quantum v) = printField "quantum" v+ unqtDot (Rank v) = printField "rank" v unqtDot (RankDir v) = printField "rankdir" v unqtDot (RankSep v) = printField "ranksep" v- unqtDot (Rank v) = printField "rank" v unqtDot (Ratio v) = printField "ratio" v unqtDot (Rects v) = printField "rects" v unqtDot (Regular v) = printField "regular" v@@ -492,13 +519,15 @@ unqtDot (RepulsiveForce v) = printField "repulsiveforce" v unqtDot (Root v) = printField "root" v unqtDot (Rotate v) = printField "rotate" v+ unqtDot (Rotation v) = printField "rotation" v unqtDot (SameHead v) = printField "samehead" v unqtDot (SameTail v) = printField "sametail" v unqtDot (SamplePoints v) = printField "samplepoints" v+ unqtDot (Scale v) = printField "scale" v unqtDot (SearchSize v) = printField "searchsize" v unqtDot (Sep v) = printField "sep" v- unqtDot (ShapeFile v) = printField "shapefile" v unqtDot (Shape v) = printField "shape" v+ unqtDot (ShapeFile v) = printField "shapefile" v unqtDot (ShowBoxes v) = printField "showboxes" v unqtDot (Sides v) = printField "sides" v unqtDot (Size v) = printField "size" v@@ -507,8 +536,8 @@ unqtDot (SortV v) = printField "sortv" v unqtDot (Splines v) = printField "splines" v unqtDot (Start v) = printField "start" v- unqtDot (StyleSheet v) = printField "stylesheet" v unqtDot (Style v) = printField "style" v+ unqtDot (StyleSheet v) = printField "stylesheet" v unqtDot (TailURL v) = printField "tailURL" v unqtDot (TailClip v) = printField "tailclip" v unqtDot (TailLabel v) = printField "taillabel" v@@ -523,6 +552,7 @@ unqtDot (VoroMargin v) = printField "voro_margin" v unqtDot (Weight v) = printField "weight" v unqtDot (Width v) = printField "width" v+ unqtDot (XLabel v) = printField "xlabel" v unqtDot (Z v) = printField "z" v unqtDot (UnknownAttribute a v) = toDot a <> equals <> toDot v @@ -536,11 +566,11 @@ , parseField ArrowSize "arrowsize" , parseField ArrowTail "arrowtail" , parseField Aspect "aspect"- , parseField Bb "bb"+ , parseField BoundingBox "bb"+ , parseField ColorScheme "colorscheme" , parseField BgColor "bgcolor" , parseFieldBool Center "center" , parseField ClusterRank "clusterrank"- , parseField ColorScheme "colorscheme" , parseField Color "color" , parseField Comment "comment" , parseFieldBool Compound "compound"@@ -548,8 +578,8 @@ , parseFieldBool Constraint "constraint" , parseFieldBool Decorate "decorate" , parseField DefaultDist "defaultdist"- , parseField Dimen "dimen" , parseField Dim "dim"+ , parseField Dimen "dimen" , parseField Dir "dir" , parseFieldDef DirEdgeConstraints EdgeConstraints "diredgeconstraints" , parseField Distortion "distortion"@@ -566,6 +596,8 @@ , parseField FontNames "fontnames" , parseField FontPath "fontpath" , parseField FontSize "fontsize"+ , parseFieldBool ForceLabels "forcelabels"+ , parseField GradientAngle "gradientangle" , parseField Group "group" , parseFields HeadURL ["headURL", "headhref"] , parseFieldBool HeadClip "headclip"@@ -576,8 +608,11 @@ , parseField Height "height" , parseField ID "id" , parseField Image "image"+ , parseField ImagePath "imagepath" , parseFieldDef ImageScale UniformScale "imagescale"+ , parseField Label "label" , parseFields LabelURL ["labelURL", "labelhref"]+ , parseField LabelScheme "label_scheme" , parseField LabelAngle "labelangle" , parseField LabelDistance "labeldistance" , parseFieldBool LabelFloat "labelfloat"@@ -588,41 +623,42 @@ , parseField LabelLoc "labelloc" , parseField LabelTarget "labeltarget" , parseField LabelTooltip "labeltooltip"- , parseField Label "label" , parseFieldBool Landscape "landscape"- , parseField LayerSep "layersep"- , parseField Layers "layers" , parseField Layer "layer"+ , parseField Layers "layers"+ , parseField LayerSep "layersep" , parseField Layout "layout" , parseField Len "len" , parseField LevelsGap "levelsgap" , parseField Levels "levels" , parseField LHead "lhead"+ , parseField LHeight "LHeight" , parseField LPos "lp" , parseField LTail "ltail"+ , parseField LWidth "lwidth" , parseField Margin "margin" , parseField MaxIter "maxiter" , parseField MCLimit "mclimit" , parseField MinDist "mindist" , parseField MinLen "minlen"- , parseField Model "model" , parseField Mode "mode"+ , parseField Model "model" , parseFieldBool Mosek "mosek" , parseField NodeSep "nodesep" , parseFieldBool NoJustify "nojustify" , parseFieldBool Normalize "normalize"- , parseField Nslimit1 "nslimit1" , parseField Nslimit "nslimit"+ , parseField Nslimit1 "nslimit1" , parseField Ordering "ordering" , parseField Orientation "orientation" , parseField OutputOrder "outputorder"- , parseField OverlapScaling "overlap_scaling" , parseFieldDef Overlap KeepOverlaps "overlap"- , parseField PackMode "packmode"+ , parseField OverlapScaling "overlap_scaling" , parseFieldDef Pack DoPack "pack"+ , parseField PackMode "packmode" , parseField Pad "pad"- , parseField PageDir "pagedir" , parseField Page "page"+ , parseField PageDir "pagedir" , parseField PenColor "pencolor" , parseField PenWidth "penwidth" , parseField Peripheries "peripheries"@@ -630,9 +666,9 @@ , parseField Pos "pos" , parseFieldDef QuadTree NormalQT "quadtree" , parseField Quantum "quantum"+ , parseField Rank "rank" , parseField RankDir "rankdir" , parseField RankSep "ranksep"- , parseField Rank "rank" , parseField Ratio "ratio" , parseField Rects "rects" , parseFieldBool Regular "regular"@@ -640,13 +676,15 @@ , parseField RepulsiveForce "repulsiveforce" , parseFieldDef Root IsCentral "root" , parseField Rotate "rotate"+ , parseField Rotation "rotation" , parseField SameHead "samehead" , parseField SameTail "sametail" , parseField SamplePoints "samplepoints"+ , parseField Scale "scale" , parseField SearchSize "searchsize" , parseField Sep "sep"- , parseField ShapeFile "shapefile" , parseField Shape "shape"+ , parseField ShapeFile "shapefile" , parseField ShowBoxes "showboxes" , parseField Sides "sides" , parseField Size "size"@@ -655,8 +693,8 @@ , parseField SortV "sortv" , parseFieldDef Splines SplineEdges "splines" , parseField Start "start"- , parseField StyleSheet "stylesheet" , parseField Style "style"+ , parseField StyleSheet "stylesheet" , parseFields TailURL ["tailURL", "tailhref"] , parseFieldBool TailClip "tailclip" , parseField TailLabel "taillabel"@@ -671,6 +709,7 @@ , parseField VoroMargin "voro_margin" , parseField Weight "weight" , parseField Width "width"+ , parseField XLabel "xlabel" , parseField Z "z" ]) `onFail`@@ -686,17 +725,17 @@ usedByGraphs K{} = True usedByGraphs URL{} = True usedByGraphs Aspect{} = True-usedByGraphs Bb{} = True+usedByGraphs BoundingBox{} = True+usedByGraphs ColorScheme{} = True usedByGraphs BgColor{} = True usedByGraphs Center{} = True usedByGraphs ClusterRank{} = True-usedByGraphs ColorScheme{} = True usedByGraphs Comment{} = True usedByGraphs Compound{} = True usedByGraphs Concentrate{} = True usedByGraphs DefaultDist{} = True-usedByGraphs Dimen{} = True usedByGraphs Dim{} = True+usedByGraphs Dimen{} = True usedByGraphs DirEdgeConstraints{} = True usedByGraphs DPI{} = True usedByGraphs Epsilon{} = True@@ -706,38 +745,44 @@ usedByGraphs FontNames{} = True usedByGraphs FontPath{} = True usedByGraphs FontSize{} = True+usedByGraphs ForceLabels{} = True+usedByGraphs GradientAngle{} = True usedByGraphs ID{} = True+usedByGraphs ImagePath{} = True+usedByGraphs Label{} = True+usedByGraphs LabelScheme{} = True usedByGraphs LabelJust{} = True usedByGraphs LabelLoc{} = True-usedByGraphs Label{} = True usedByGraphs Landscape{} = True-usedByGraphs LayerSep{} = True usedByGraphs Layers{} = True+usedByGraphs LayerSep{} = True usedByGraphs Layout{} = True usedByGraphs LevelsGap{} = True usedByGraphs Levels{} = True+usedByGraphs LHeight{} = True usedByGraphs LPos{} = True+usedByGraphs LWidth{} = True usedByGraphs Margin{} = True usedByGraphs MaxIter{} = True usedByGraphs MCLimit{} = True usedByGraphs MinDist{} = True-usedByGraphs Model{} = True usedByGraphs Mode{} = True+usedByGraphs Model{} = True usedByGraphs Mosek{} = True usedByGraphs NodeSep{} = True usedByGraphs NoJustify{} = True usedByGraphs Normalize{} = True-usedByGraphs Nslimit1{} = True usedByGraphs Nslimit{} = True+usedByGraphs Nslimit1{} = True usedByGraphs Ordering{} = True usedByGraphs OutputOrder{} = True-usedByGraphs OverlapScaling{} = True usedByGraphs Overlap{} = True-usedByGraphs PackMode{} = True+usedByGraphs OverlapScaling{} = True usedByGraphs Pack{} = True+usedByGraphs PackMode{} = True usedByGraphs Pad{} = True-usedByGraphs PageDir{} = True usedByGraphs Page{} = True+usedByGraphs PageDir{} = True usedByGraphs QuadTree{} = True usedByGraphs Quantum{} = True usedByGraphs RankDir{} = True@@ -747,6 +792,8 @@ usedByGraphs RepulsiveForce{} = True usedByGraphs Root{} = True usedByGraphs Rotate{} = True+usedByGraphs Rotation{} = True+usedByGraphs Scale{} = True usedByGraphs SearchSize{} = True usedByGraphs Sep{} = True usedByGraphs ShowBoxes{} = True@@ -767,17 +814,20 @@ usedByClusters :: Attribute -> Bool usedByClusters K{} = True usedByClusters URL{} = True-usedByClusters BgColor{} = True usedByClusters ColorScheme{} = True+usedByClusters BgColor{} = True usedByClusters Color{} = True usedByClusters FillColor{} = True usedByClusters FontColor{} = True usedByClusters FontName{} = True usedByClusters FontSize{} = True+usedByClusters GradientAngle{} = True+usedByClusters Label{} = True usedByClusters LabelJust{} = True usedByClusters LabelLoc{} = True-usedByClusters Label{} = True+usedByClusters LHeight{} = True usedByClusters LPos{} = True+usedByClusters LWidth{} = True usedByClusters NoJustify{} = True usedByClusters PenColor{} = True usedByClusters PenWidth{} = True@@ -808,16 +858,18 @@ usedByNodes FontColor{} = True usedByNodes FontName{} = True usedByNodes FontSize{} = True+usedByNodes GradientAngle{} = True usedByNodes Group{} = True usedByNodes Height{} = True usedByNodes ID{} = True usedByNodes Image{} = True usedByNodes ImageScale{} = True-usedByNodes LabelLoc{} = True usedByNodes Label{} = True+usedByNodes LabelLoc{} = True usedByNodes Layer{} = True usedByNodes Margin{} = True usedByNodes NoJustify{} = True+usedByNodes Ordering{} = True usedByNodes Orientation{} = True usedByNodes PenWidth{} = True usedByNodes Peripheries{} = True@@ -827,8 +879,8 @@ usedByNodes Regular{} = True usedByNodes Root{} = True usedByNodes SamplePoints{} = True-usedByNodes ShapeFile{} = True usedByNodes Shape{} = True+usedByNodes ShapeFile{} = True usedByNodes ShowBoxes{} = True usedByNodes Sides{} = True usedByNodes Skew{} = True@@ -838,6 +890,7 @@ usedByNodes Tooltip{} = True usedByNodes Vertices{} = True usedByNodes Width{} = True+usedByNodes XLabel{} = True usedByNodes Z{} = True usedByNodes UnknownAttribute{} = True usedByNodes _ = False@@ -857,6 +910,7 @@ usedByEdges EdgeURL{} = True usedByEdges EdgeTarget{} = True usedByEdges EdgeTooltip{} = True+usedByEdges FillColor{} = True usedByEdges FontColor{} = True usedByEdges FontName{} = True usedByEdges FontSize{} = True@@ -867,6 +921,7 @@ usedByEdges HeadTarget{} = True usedByEdges HeadTooltip{} = True usedByEdges ID{} = True+usedByEdges Label{} = True usedByEdges LabelURL{} = True usedByEdges LabelAngle{} = True usedByEdges LabelDistance{} = True@@ -876,7 +931,6 @@ usedByEdges LabelFontSize{} = True usedByEdges LabelTarget{} = True usedByEdges LabelTooltip{} = True-usedByEdges Label{} = True usedByEdges Layer{} = True usedByEdges Len{} = True usedByEdges LHead{} = True@@ -899,6 +953,7 @@ usedByEdges Target{} = True usedByEdges Tooltip{} = True usedByEdges Weight{} = True+usedByEdges XLabel{} = True usedByEdges UnknownAttribute{} = True usedByEdges _ = False @@ -911,11 +966,11 @@ sameAttribute ArrowSize{} ArrowSize{} = True sameAttribute ArrowTail{} ArrowTail{} = True sameAttribute Aspect{} Aspect{} = True-sameAttribute Bb{} Bb{} = True+sameAttribute BoundingBox{} BoundingBox{} = True+sameAttribute ColorScheme{} ColorScheme{} = True sameAttribute BgColor{} BgColor{} = True sameAttribute Center{} Center{} = True sameAttribute ClusterRank{} ClusterRank{} = True-sameAttribute ColorScheme{} ColorScheme{} = True sameAttribute Color{} Color{} = True sameAttribute Comment{} Comment{} = True sameAttribute Compound{} Compound{} = True@@ -923,8 +978,8 @@ sameAttribute Constraint{} Constraint{} = True sameAttribute Decorate{} Decorate{} = True sameAttribute DefaultDist{} DefaultDist{} = True-sameAttribute Dimen{} Dimen{} = True sameAttribute Dim{} Dim{} = True+sameAttribute Dimen{} Dimen{} = True sameAttribute Dir{} Dir{} = True sameAttribute DirEdgeConstraints{} DirEdgeConstraints{} = True sameAttribute Distortion{} Distortion{} = True@@ -941,6 +996,8 @@ sameAttribute FontNames{} FontNames{} = True sameAttribute FontPath{} FontPath{} = True sameAttribute FontSize{} FontSize{} = True+sameAttribute ForceLabels{} ForceLabels{} = True+sameAttribute GradientAngle{} GradientAngle{} = True sameAttribute Group{} Group{} = True sameAttribute HeadURL{} HeadURL{} = True sameAttribute HeadClip{} HeadClip{} = True@@ -951,8 +1008,11 @@ sameAttribute Height{} Height{} = True sameAttribute ID{} ID{} = True sameAttribute Image{} Image{} = True+sameAttribute ImagePath{} ImagePath{} = True sameAttribute ImageScale{} ImageScale{} = True+sameAttribute Label{} Label{} = True sameAttribute LabelURL{} LabelURL{} = True+sameAttribute LabelScheme{} LabelScheme{} = True sameAttribute LabelAngle{} LabelAngle{} = True sameAttribute LabelDistance{} LabelDistance{} = True sameAttribute LabelFloat{} LabelFloat{} = True@@ -963,41 +1023,42 @@ sameAttribute LabelLoc{} LabelLoc{} = True sameAttribute LabelTarget{} LabelTarget{} = True sameAttribute LabelTooltip{} LabelTooltip{} = True-sameAttribute Label{} Label{} = True sameAttribute Landscape{} Landscape{} = True-sameAttribute LayerSep{} LayerSep{} = True-sameAttribute Layers{} Layers{} = True sameAttribute Layer{} Layer{} = True+sameAttribute Layers{} Layers{} = True+sameAttribute LayerSep{} LayerSep{} = True sameAttribute Layout{} Layout{} = True sameAttribute Len{} Len{} = True sameAttribute LevelsGap{} LevelsGap{} = True sameAttribute Levels{} Levels{} = True sameAttribute LHead{} LHead{} = True+sameAttribute LHeight{} LHeight{} = True sameAttribute LPos{} LPos{} = True sameAttribute LTail{} LTail{} = True+sameAttribute LWidth{} LWidth{} = True sameAttribute Margin{} Margin{} = True sameAttribute MaxIter{} MaxIter{} = True sameAttribute MCLimit{} MCLimit{} = True sameAttribute MinDist{} MinDist{} = True sameAttribute MinLen{} MinLen{} = True-sameAttribute Model{} Model{} = True sameAttribute Mode{} Mode{} = True+sameAttribute Model{} Model{} = True sameAttribute Mosek{} Mosek{} = True sameAttribute NodeSep{} NodeSep{} = True sameAttribute NoJustify{} NoJustify{} = True sameAttribute Normalize{} Normalize{} = True-sameAttribute Nslimit1{} Nslimit1{} = True sameAttribute Nslimit{} Nslimit{} = True+sameAttribute Nslimit1{} Nslimit1{} = True sameAttribute Ordering{} Ordering{} = True sameAttribute Orientation{} Orientation{} = True sameAttribute OutputOrder{} OutputOrder{} = True-sameAttribute OverlapScaling{} OverlapScaling{} = True sameAttribute Overlap{} Overlap{} = True-sameAttribute PackMode{} PackMode{} = True+sameAttribute OverlapScaling{} OverlapScaling{} = True sameAttribute Pack{} Pack{} = True+sameAttribute PackMode{} PackMode{} = True sameAttribute Pad{} Pad{} = True-sameAttribute PageDir{} PageDir{} = True sameAttribute Page{} Page{} = True+sameAttribute PageDir{} PageDir{} = True sameAttribute PenColor{} PenColor{} = True sameAttribute PenWidth{} PenWidth{} = True sameAttribute Peripheries{} Peripheries{} = True@@ -1005,9 +1066,9 @@ sameAttribute Pos{} Pos{} = True sameAttribute QuadTree{} QuadTree{} = True sameAttribute Quantum{} Quantum{} = True+sameAttribute Rank{} Rank{} = True sameAttribute RankDir{} RankDir{} = True sameAttribute RankSep{} RankSep{} = True-sameAttribute Rank{} Rank{} = True sameAttribute Ratio{} Ratio{} = True sameAttribute Rects{} Rects{} = True sameAttribute Regular{} Regular{} = True@@ -1015,13 +1076,15 @@ sameAttribute RepulsiveForce{} RepulsiveForce{} = True sameAttribute Root{} Root{} = True sameAttribute Rotate{} Rotate{} = True+sameAttribute Rotation{} Rotation{} = True sameAttribute SameHead{} SameHead{} = True sameAttribute SameTail{} SameTail{} = True sameAttribute SamplePoints{} SamplePoints{} = True+sameAttribute Scale{} Scale{} = True sameAttribute SearchSize{} SearchSize{} = True sameAttribute Sep{} Sep{} = True-sameAttribute ShapeFile{} ShapeFile{} = True sameAttribute Shape{} Shape{} = True+sameAttribute ShapeFile{} ShapeFile{} = True sameAttribute ShowBoxes{} ShowBoxes{} = True sameAttribute Sides{} Sides{} = True sameAttribute Size{} Size{} = True@@ -1030,8 +1093,8 @@ sameAttribute SortV{} SortV{} = True sameAttribute Splines{} Splines{} = True sameAttribute Start{} Start{} = True-sameAttribute StyleSheet{} StyleSheet{} = True sameAttribute Style{} Style{} = True+sameAttribute StyleSheet{} StyleSheet{} = True sameAttribute TailURL{} TailURL{} = True sameAttribute TailClip{} TailClip{} = True sameAttribute TailLabel{} TailLabel{} = True@@ -1046,6 +1109,7 @@ sameAttribute VoroMargin{} VoroMargin{} = True sameAttribute Weight{} Weight{} = True sameAttribute Width{} Width{} = True+sameAttribute XLabel{} XLabel{} = True sameAttribute Z{} Z{} = True sameAttribute (UnknownAttribute a1 _) (UnknownAttribute a2 _) = a1 == a2 sameAttribute _ _ = False@@ -1058,28 +1122,30 @@ defaultAttributeValue ArrowHead{} = Just $ ArrowHead normal defaultAttributeValue ArrowSize{} = Just $ ArrowSize 1 defaultAttributeValue ArrowTail{} = Just $ ArrowTail normal-defaultAttributeValue BgColor{} = Just $ BgColor (X11Color Transparent)+defaultAttributeValue ColorScheme{} = Just $ ColorScheme X11+defaultAttributeValue BgColor{} = Just $ BgColor [X11Color Transparent] defaultAttributeValue Center{} = Just $ Center False defaultAttributeValue ClusterRank{} = Just $ ClusterRank Local-defaultAttributeValue ColorScheme{} = Just $ ColorScheme X11 defaultAttributeValue Color{} = Just $ Color [X11Color Black] defaultAttributeValue Comment{} = Just $ Comment "" defaultAttributeValue Compound{} = Just $ Compound False defaultAttributeValue Concentrate{} = Just $ Concentrate False defaultAttributeValue Constraint{} = Just $ Constraint True defaultAttributeValue Decorate{} = Just $ Decorate False-defaultAttributeValue Dimen{} = Just $ Dimen 2 defaultAttributeValue Dim{} = Just $ Dim 2+defaultAttributeValue Dimen{} = Just $ Dimen 2 defaultAttributeValue DirEdgeConstraints{} = Just $ DirEdgeConstraints NoConstraints defaultAttributeValue Distortion{} = Just $ Distortion 0 defaultAttributeValue EdgeURL{} = Just $ EdgeURL "" defaultAttributeValue ESep{} = Just $ ESep (DVal 3)-defaultAttributeValue FillColor{} = Just $ FillColor (X11Color Black)+defaultAttributeValue FillColor{} = Just $ FillColor [X11Color Black] defaultAttributeValue FixedSize{} = Just $ FixedSize False defaultAttributeValue FontColor{} = Just $ FontColor (X11Color Black) defaultAttributeValue FontName{} = Just $ FontName "Times-Roman" defaultAttributeValue FontNames{} = Just $ FontNames "" defaultAttributeValue FontSize{} = Just $ FontSize 14+defaultAttributeValue ForceLabels{} = Just $ ForceLabels False+defaultAttributeValue GradientAngle{} = Just $ GradientAngle 0 defaultAttributeValue Group{} = Just $ Group "" defaultAttributeValue HeadURL{} = Just $ HeadURL "" defaultAttributeValue HeadClip{} = Just $ HeadClip True@@ -1088,10 +1154,13 @@ defaultAttributeValue HeadTarget{} = Just $ HeadTarget "" defaultAttributeValue HeadTooltip{} = Just $ HeadTooltip "" defaultAttributeValue Height{} = Just $ Height 0.5-defaultAttributeValue ID{} = Just $ ID (StrLabel "")+defaultAttributeValue ID{} = Just $ ID "" defaultAttributeValue Image{} = Just $ Image ""+defaultAttributeValue ImagePath{} = Just $ ImagePath (Paths []) defaultAttributeValue ImageScale{} = Just $ ImageScale NoScale+defaultAttributeValue Label{} = Just $ Label (StrLabel "") defaultAttributeValue LabelURL{} = Just $ LabelURL ""+defaultAttributeValue LabelScheme{} = Just $ LabelScheme NotEdgeLabel defaultAttributeValue LabelAngle{} = Just $ LabelAngle (-25) defaultAttributeValue LabelDistance{} = Just $ LabelDistance 1 defaultAttributeValue LabelFloat{} = Just $ LabelFloat False@@ -1102,10 +1171,9 @@ defaultAttributeValue LabelLoc{} = Just $ LabelLoc VTop defaultAttributeValue LabelTarget{} = Just $ LabelTarget "" defaultAttributeValue LabelTooltip{} = Just $ LabelTooltip ""-defaultAttributeValue Label{} = Just $ Label (StrLabel "") defaultAttributeValue Landscape{} = Just $ Landscape False-defaultAttributeValue LayerSep{} = Just $ LayerSep (LSep " :\t") defaultAttributeValue Layers{} = Just $ Layers (LL [])+defaultAttributeValue LayerSep{} = Just $ LayerSep (LSep " :\t") defaultAttributeValue Layout{} = Just $ Layout "" defaultAttributeValue LevelsGap{} = Just $ LevelsGap 0 defaultAttributeValue Levels{} = Just $ Levels maxBound@@ -1114,19 +1182,18 @@ defaultAttributeValue MCLimit{} = Just $ MCLimit 1 defaultAttributeValue MinDist{} = Just $ MinDist 1 defaultAttributeValue MinLen{} = Just $ MinLen 1-defaultAttributeValue Model{} = Just $ Model ShortPath defaultAttributeValue Mode{} = Just $ Mode Major+defaultAttributeValue Model{} = Just $ Model ShortPath defaultAttributeValue Mosek{} = Just $ Mosek False defaultAttributeValue NodeSep{} = Just $ NodeSep 0.25 defaultAttributeValue NoJustify{} = Just $ NoJustify False defaultAttributeValue Normalize{} = Just $ Normalize False-defaultAttributeValue Ordering{} = Just $ Ordering "" defaultAttributeValue Orientation{} = Just $ Orientation 0 defaultAttributeValue OutputOrder{} = Just $ OutputOrder BreadthFirst-defaultAttributeValue OverlapScaling{} = Just $ OverlapScaling (-4) defaultAttributeValue Overlap{} = Just $ Overlap KeepOverlaps-defaultAttributeValue PackMode{} = Just $ PackMode PackNode+defaultAttributeValue OverlapScaling{} = Just $ OverlapScaling (-4) defaultAttributeValue Pack{} = Just $ Pack DontPack+defaultAttributeValue PackMode{} = Just $ PackMode PackNode defaultAttributeValue Pad{} = Just $ Pad (DVal 0.0555) defaultAttributeValue PageDir{} = Just $ PageDir Bl defaultAttributeValue PenColor{} = Just $ PenColor (X11Color Black)@@ -1141,12 +1208,13 @@ defaultAttributeValue RepulsiveForce{} = Just $ RepulsiveForce 1 defaultAttributeValue Root{} = Just $ Root (NodeName "") defaultAttributeValue Rotate{} = Just $ Rotate 0+defaultAttributeValue Rotation{} = Just $ Rotation 0 defaultAttributeValue SameHead{} = Just $ SameHead "" defaultAttributeValue SameTail{} = Just $ SameTail "" defaultAttributeValue SearchSize{} = Just $ SearchSize 30 defaultAttributeValue Sep{} = Just $ Sep (DVal 4)-defaultAttributeValue ShapeFile{} = Just $ ShapeFile "" defaultAttributeValue Shape{} = Just $ Shape Ellipse+defaultAttributeValue ShapeFile{} = Just $ ShapeFile "" defaultAttributeValue ShowBoxes{} = Just $ ShowBoxes 0 defaultAttributeValue Sides{} = Just $ Sides 4 defaultAttributeValue Skew{} = Just $ Skew 0@@ -1164,6 +1232,7 @@ defaultAttributeValue Tooltip{} = Just $ Tooltip "" defaultAttributeValue VoroMargin{} = Just $ VoroMargin 0.05 defaultAttributeValue Width{} = Just $ Width 0.75+defaultAttributeValue XLabel{} = Just $ XLabel (StrLabel "") defaultAttributeValue Z{} = Just $ Z 0 defaultAttributeValue _ = Nothing @@ -1182,10 +1251,10 @@ , "arrowtail" , "aspect" , "bb"+ , "colorscheme" , "bgcolor" , "center" , "clusterrank"- , "colorscheme" , "color" , "comment" , "compound"@@ -1193,8 +1262,8 @@ , "constraint" , "decorate" , "defaultdist"- , "dimen" , "dim"+ , "dimen" , "dir" , "diredgeconstraints" , "distortion"@@ -1213,6 +1282,8 @@ , "fontnames" , "fontpath" , "fontsize"+ , "forcelabels"+ , "gradientangle" , "group" , "headURL" , "headhref"@@ -1224,9 +1295,12 @@ , "height" , "id" , "image"+ , "imagepath" , "imagescale"+ , "label" , "labelURL" , "labelhref"+ , "label_scheme" , "labelangle" , "labeldistance" , "labelfloat"@@ -1237,41 +1311,42 @@ , "labelloc" , "labeltarget" , "labeltooltip"- , "label" , "landscape"- , "layersep"- , "layers" , "layer"+ , "layers"+ , "layersep" , "layout" , "len" , "levelsgap" , "levels" , "lhead"+ , "LHeight" , "lp" , "ltail"+ , "lwidth" , "margin" , "maxiter" , "mclimit" , "mindist" , "minlen"- , "model" , "mode"+ , "model" , "mosek" , "nodesep" , "nojustify" , "normalize"- , "nslimit1" , "nslimit"+ , "nslimit1" , "ordering" , "orientation" , "outputorder"- , "overlap_scaling" , "overlap"- , "packmode"+ , "overlap_scaling" , "pack"+ , "packmode" , "pad"- , "pagedir" , "page"+ , "pagedir" , "pencolor" , "penwidth" , "peripheries"@@ -1279,9 +1354,9 @@ , "pos" , "quadtree" , "quantum"+ , "rank" , "rankdir" , "ranksep"- , "rank" , "ratio" , "rects" , "regular"@@ -1289,13 +1364,15 @@ , "repulsiveforce" , "root" , "rotate"+ , "rotation" , "samehead" , "sametail" , "samplepoints"+ , "scale" , "searchsize" , "sep"- , "shapefile" , "shape"+ , "shapefile" , "showboxes" , "sides" , "size"@@ -1304,8 +1381,8 @@ , "sortv" , "splines" , "start"- , "stylesheet" , "style"+ , "stylesheet" , "tailURL" , "tailhref" , "tailclip"@@ -1321,6 +1398,7 @@ , "voro_margin" , "weight" , "width"+ , "xlabel" , "z" , "charset" -- Defined upstream, just not used here. ])@@ -1614,7 +1692,7 @@ parse = quotedParse parseUnqt - parseUnqtList = sepBy1 parseUnqt whitespace+ parseUnqtList = sepBy1 parseUnqt whitespace1 -- ----------------------------------------------------------------------------- @@ -1742,12 +1820,12 @@ -- ----------------------------------------------------------------------------- data Label = StrLabel EscString- | HtmlLabel HtmlLabel -- ^ If 'PlainText' is used, the- -- 'HtmlLabel' value is the entire- -- \"shape\"; if anything else- -- except 'PointShape' is used then- -- the 'HtmlLabel' is embedded- -- within the shape.+ | HtmlLabel Html.Label -- ^ If 'PlainText' is used, the+ -- 'Html.Label' value is the entire+ -- \"shape\"; if anything else+ -- except 'PointShape' is used then+ -- the 'Html.Label' is embedded+ -- within the shape. | RecordLabel RecordFields -- ^ For nodes only; requires -- either 'Record' or -- 'MRecord' as the shape.@@ -1811,7 +1889,7 @@ instance ParseDot RecordField where parseUnqt = do t <- liftM PN $ parseAngled parseRecord- ml <- optional (whitespace >> parseRecord)+ ml <- optional (whitespace1 >> parseRecord) return $ maybe (PortName t) (LabelledTarget t) ml@@ -1850,6 +1928,30 @@ -- ----------------------------------------------------------------------------- +-- | How to treat a node whose name is of the form @|edgelabel|*" as a+-- special node representing an edge label.+data LabelScheme = NotEdgeLabel -- ^ No effect+ | CloseToCenter -- ^ Make node close to center of neighbor+ | CloseToOldCenter -- ^ Make node close to old center of neighbor+ | RemoveAndStraighten -- ^ Use a two-step process.+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot LabelScheme where+ unqtDot NotEdgeLabel = int 0+ unqtDot CloseToCenter = int 1+ unqtDot CloseToOldCenter = int 2+ unqtDot RemoveAndStraighten = int 3++instance ParseDot LabelScheme where+ -- Use string-based parsing rather than parsing an integer just to make it easier+ parseUnqt = stringValue [ ("0", NotEdgeLabel)+ , ("1", CloseToCenter)+ , ("2", CloseToOldCenter)+ , ("3", RemoveAndStraighten)+ ]++-- -----------------------------------------------------------------------------+ data Point = Point { xCoord :: Double , yCoord :: Double -- | Can only be 'Just' for @'Dim' 3@ or greater.@@ -1886,12 +1988,11 @@ parse = quotedParse parseUnqt - parseUnqtList = sepBy1 parseUnqt whitespace+ parseUnqtList = sepBy1 parseUnqt whitespace1 -- ----------------------------------------------------------------------------- data Overlap = KeepOverlaps- | RemoveOverlaps | ScaleOverlaps | ScaleXYOverlaps | PrismOverlap (Maybe Word16) -- ^ Only when sfdp is@@ -1905,7 +2006,6 @@ instance PrintDot Overlap where unqtDot KeepOverlaps = unqtDot True- unqtDot RemoveOverlaps = unqtDot False unqtDot ScaleOverlaps = text "scale" unqtDot ScaleXYOverlaps = text "scalexy" unqtDot (PrismOverlap i) = maybe id (flip (<>) . unqtDot) i $ text "prism"@@ -1915,10 +2015,10 @@ instance ParseDot Overlap where parseUnqt = oneOf [ stringRep KeepOverlaps "true"- , stringRep RemoveOverlaps "false" , stringRep ScaleXYOverlaps "scalexy" , stringRep ScaleOverlaps "scale" , string "prism" >> liftM PrismOverlap (optional parse)+ , stringRep (PrismOverlap Nothing) "false" , stringRep CompressOverlap "compress" , stringRep VpscOverlap "vpsc" , stringRep IpsepOverlap "ipsep"@@ -2049,6 +2149,21 @@ -- ----------------------------------------------------------------------------- +data Order = OutEdges -- ^ Draw outgoing edges in order specified.+ | InEdges -- ^ Draw incoming edges in order specified.+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Order where+ unqtDot OutEdges = text "out"+ unqtDot InEdges = text "in"++instance ParseDot Order where+ parseUnqt = oneOf [ stringRep OutEdges "out"+ , stringRep InEdges "in"+ ]++-- -----------------------------------------------------------------------------+ data OutputMode = BreadthFirst | NodesFirst | EdgesFirst deriving (Eq, Ord, Bounded, Enum, Show, Read) @@ -2237,12 +2352,12 @@ instance ParseDot Spline where parseUnqt = do ms <- parseP 's' me <- parseP 'e'- ps <- sepBy1 parseUnqt whitespace+ ps <- sepBy1 parseUnqt whitespace1 return $ Spline ms me ps where parseP t = optional $ do character t parseComma- parseUnqt `discard` whitespace+ parseUnqt `discard` whitespace1 parse = quotedParse parseUnqt @@ -2569,6 +2684,11 @@ | Filled -- ^ Nodes and Clusters | Diagonals -- ^ Nodes only | Rounded -- ^ Nodes and Clusters+ | Tapered -- ^ Edges only; requires Graphviz >=+ -- 2.29.0.+ | Radial -- ^ Nodes, Clusters and Graphs, for use+ -- with 'GradientAngle'; requires+ -- Graphviz >= 2.29.0. | DD Text -- ^ Device Dependent deriving (Eq, Ord, Show, Read) @@ -2581,6 +2701,8 @@ unqtDot Filled = text "filled" unqtDot Diagonals = text "diagonals" unqtDot Rounded = text "rounded"+ unqtDot Tapered = text "tapered"+ unqtDot Radial = text "radial" unqtDot (DD nm) = unqtDot nm toDot (DD nm) = toDot nm@@ -2603,6 +2725,8 @@ "filled" -> Filled "diagonals" -> Diagonals "rounded" -> Rounded+ "tapered" -> Tapered+ "radial" -> Radial _ -> DD str parseStyleName :: Parse Text@@ -2682,6 +2806,24 @@ , stringRep VCenter "c" , stringRep VBottom "b" ]++-- -----------------------------------------------------------------------------++newtype Paths = Paths { paths :: [FilePath] }+ deriving (Eq, Ord, Show, Read)++instance PrintDot Paths where+ unqtDot = unqtDot . intercalate [searchPathSeparator] . paths++ toDot (Paths [p]) = toDot p+ toDot ps = dquotes $ unqtDot ps++instance ParseDot Paths where+ parseUnqt = liftM (Paths . splitSearchPath) parseUnqt++ parse = quotedParse parseUnqt+ `onFail`+ liftM (Paths . (:[]) . T.unpack) quotelessString -- -----------------------------------------------------------------------------
Data/GraphViz/Attributes/HTML.hs view
@@ -7,11 +7,12 @@ License : 3-Clause BSD-style Maintainer : Ivan.Miljenovic@gmail.com - This module defines the syntax for HTML-like values for use in- Graphviz. Please note that these values are /not/ really HTML, but- the term \"HTML\" is used throughout as it is less cumbersome than- \"HTML-like\". To be able to use this, the version of Graphviz must- be at least 1.10. For more information, please see:+ This module is written to be imported qualified. It defines the+ syntax for HTML-like values for use in Graphviz. Please note that+ these values are /not/ really HTML, but the term \"HTML\" is used+ throughout as it is less cumbersome than \"HTML-like\". To be able+ to use this, the version of Graphviz must be at least 1.10. For+ more information, please see: <http://graphviz.org/doc/info/shapes.html#html> The actual definition of the syntax specifies that these types must@@ -51,18 +52,19 @@ -} module Data.GraphViz.Attributes.HTML- ( HtmlLabel(..)- , HtmlText- , HtmlTextItem(..)- , HtmlTable(..)- , HtmlRow(..)- , HtmlCell(..)- , HtmlImg(..)- , HtmlAttributes- , HtmlAttribute(..)- , HtmlAlign(..)- , HtmlVAlign(..)- , HtmlScale(..)+ ( Label(..)+ , Text+ , TextItem(..)+ , Format(..)+ , Table(..)+ , Row(..)+ , Cell(..)+ , Img(..)+ , Attributes+ , Attribute(..)+ , Align(..)+ , VAlign(..)+ , Scale(..) ) where import Data.GraphViz.Parsing@@ -79,293 +81,329 @@ import Data.Word(Word8, Word16) import qualified Data.Map as Map import qualified Data.Text.Lazy as T-import Data.Text.Lazy(Text) import Control.Monad(liftM, liftM2) -- ----------------------------------------------------------------------------- -- | The overall type for HTML-like labels. Fundamentally, HTML-like -- values in Graphviz are either textual (i.e. a single element with--- formatting) or a table. Note that 'HtmlLabel' values can be--- nested via 'HtmlLabelCell'.-data HtmlLabel = HtmlText HtmlText- | HtmlTable HtmlTable- deriving (Eq, Ord, Show, Read)+-- formatting) or a table. Note that 'Label' values can be+-- nested via 'LabelCell'.+data Label = Text Text+ | Table Table+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlLabel where- unqtDot (HtmlText txt) = unqtDot txt- unqtDot (HtmlTable tbl) = unqtDot tbl+instance PrintDot Label where+ unqtDot (Text txt) = unqtDot txt+ unqtDot (Table tbl) = unqtDot tbl -instance ParseDot HtmlLabel where- -- Try parsing HtmlTable first in case of a FONT tag being used.- parseUnqt = liftM HtmlTable parseUnqt+instance ParseDot Label where+ -- Try parsing Table first in case of a FONT tag being used.+ parseUnqt = liftM Table parseUnqt `onFail`- liftM HtmlText parseUnqt+ liftM Text parseUnqt `adjustErr`- ("Can't parse HtmlLabel\n\t"++)+ ("Can't parse Html.Label\n\t"++) parse = parseUnqt -- | Represents a textual component of an HTML-like label. It is--- assumed that an 'HtmlText' list is non-empty. It is preferable--- to \"group\" 'HtmlStr' values together rather than have+-- assumed that a 'Text' list is non-empty. It is preferable+-- to \"group\" 'Str' values together rather than have -- individual ones. Note that when printing, the individual values -- are concatenated together without spaces, and when parsing--- anything that isn't a tag is assumed to be an 'HtmlStr': that is,+-- anything that isn't a tag is assumed to be a 'Str': that is, -- something like \"@\<BR\/\> \<BR\/\>@\" is parsed as: ----- > [HtmlNewline [], HtmlStr " ", HtmlNewline []]-type HtmlText = [HtmlTextItem]+-- > [Newline [], Str " ", Newline []]+type Text = [TextItem] -- | Textual items in HTML-like labels.-data HtmlTextItem = HtmlStr Text- -- | Only accepts an optional 'HtmlAlign'- -- 'HtmlAttribute'; defined this way for ease of- -- printing/parsing.- | HtmlNewline HtmlAttributes- | HtmlFont HtmlAttributes HtmlText- deriving (Eq, Ord, Show, Read)+data TextItem = Str T.Text+ -- | Only accepts an optional 'Align'+ -- 'Attribute'; defined this way for ease of+ -- printing/parsing.+ | Newline Attributes+ | Font Attributes Text+ -- | Only available in Graphviz >= 2.28.0.+ | Format Format Text+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlTextItem where- unqtDot (HtmlStr str) = escapeValue str- unqtDot (HtmlNewline as) = printHtmlEmptyTag (text "BR") as- unqtDot (HtmlFont as txt) = printHtmlFontTag as $ unqtDot txt+instance PrintDot TextItem where+ unqtDot (Str str) = escapeValue str+ unqtDot (Newline as) = printEmptyTag (text "BR") as+ unqtDot (Font as txt) = printFontTag as $ unqtDot txt+ unqtDot (Format fmt txt) = printTag (unqtDot fmt) [] $ unqtDot txt unqtListToDot = hcat . mapM unqtDot listToDot = unqtListToDot -instance ParseDot HtmlTextItem where- parseUnqt = oneOf [ liftM HtmlStr unescapeValue- , parseHtmlEmptyTag HtmlNewline "BR"- , parseHtmlFontTag HtmlFont parseUnqt+instance ParseDot TextItem where+ parseUnqt = oneOf [ liftM Str unescapeValue+ , parseEmptyTag Newline "BR"+ , parseFontTag Font parseUnqt+ , parseTagRep Format parseUnqt parseUnqt ] `adjustErr`- ("Can't parse HtmlTextItem\n\t"++)+ ("Can't parse Html.TextItem\n\t"++) parse = parseUnqt - parseUnqtList = many1 parseUnqt -- sepBy1 parseUnqt allWhitespace'+ parseUnqtList = many1 parseUnqt -- sepBy1 parseUnqt whitespace parseList = parseUnqtList +data Format = Italics+ | Bold+ | Underline+ | Subscript+ | Superscript+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Format where+ unqtDot Italics = text "I"+ unqtDot Bold = text "B"+ unqtDot Underline = text "U"+ unqtDot Subscript = text "SUB"+ unqtDot Superscript = text "SUP"++instance ParseDot Format where+ parseUnqt = stringValue [ ("I", Italics)+ , ("B", Bold)+ , ("U", Underline)+ , ("SUB", Subscript)+ , ("SUP", Superscript)+ ]+ -- | A table in HTML-like labels. Tables are optionally wrapped in -- overall @FONT@ tags.-data HtmlTable = HTable { -- | Optional @FONT@ attributes. @'Just'- -- []@ denotes empty @FONT@ tags;- -- @'Nothing'@ denotes no such tags.- tableFontAttrs :: Maybe HtmlAttributes- , tableAttrs :: HtmlAttributes- -- | This list is assumed to be non-empty.- , tableRows :: [HtmlRow]- }+data Table = HTable { -- | Optional @FONT@ attributes. @'Just'+ -- []@ denotes empty @FONT@ tags;+ -- @'Nothing'@ denotes no such tags.+ tableFontAttrs :: Maybe Attributes+ , tableAttrs :: Attributes+ -- | This list is assumed to be non-empty.+ , tableRows :: [Row]+ } deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlTable where+instance PrintDot Table where unqtDot tbl = case tableFontAttrs tbl of- (Just as) -> printHtmlFontTag as tbl'+ (Just as) -> printFontTag as tbl' Nothing -> tbl' where- tbl' = printHtmlTag (text "TABLE")+ tbl' = printTag (text "TABLE") (tableAttrs tbl) (toDot $ tableRows tbl) -instance ParseDot HtmlTable where- parseUnqt = wrapWhitespace (parseHtmlFontTag addFontAttrs pTbl)+instance ParseDot Table where+ parseUnqt = wrapWhitespace (parseFontTag addFontAttrs pTbl) `onFail` pTbl `adjustErr`- ("Can't parse HtmlTable\n\t"++)+ ("Can't parse Html.Table\n\t"++) where- pTbl = wrapWhitespace $ parseHtmlTag (HTable Nothing)- "TABLE"- (wrapWhitespace parseUnqt)+ pTbl = wrapWhitespace $ parseTag (HTable Nothing)+ "TABLE"+ (wrapWhitespace parseUnqt) addFontAttrs fas tbl = tbl { tableFontAttrs = Just fas } parse = parseUnqt --- | A row in an 'HtmlTable'. The list of 'HtmlCell' values is+-- | A row in a 'Table'. The list of 'Cell' values is -- assumed to be non-empty.-newtype HtmlRow = HtmlRow [HtmlCell]- deriving (Eq, Ord, Show, Read)+data Row = Cells [Cell]+ | HorizontalRule -- ^ Should be between 'Cells' values,+ -- requires Graphviz >= 2.29.0+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlRow where- unqtDot (HtmlRow cs) = printHtmlTag tr [] $ unqtDot cs- where- tr = text "TR"+instance PrintDot Row where+ unqtDot (Cells cs) = printTag (text "TR") [] $ unqtDot cs+ unqtDot HorizontalRule = printEmptyTag (text "HR") [] unqtListToDot = align . cat . mapM unqtDot listToDot = unqtListToDot -instance ParseDot HtmlRow where- -- To save doing it manually, use 'parseHtmlTag' and ignore any- -- 'HtmlAttributes' that it might accidentally parse.- parseUnqt = wrapWhitespace $ parseHtmlTag (const HtmlRow) "TR" parseUnqt+instance ParseDot Row where+ -- To save doing it manually, use 'parseTag' and ignore any+ -- 'Attributes' that it might accidentally parse.+ parseUnqt = wrapWhitespace $ parseTag (const Cells) "TR" parseUnqt+ `onFail`+ parseEmptyTag (const HorizontalRule) "HR" `adjustErr`- ("Can't parse HtmlRow\n\t"++)+ ("Can't parse Html.Row\n\t"++) parse = parseUnqt - parseUnqtList = wrapWhitespace $ sepBy1 parseUnqt allWhitespace'+ parseUnqtList = wrapWhitespace $ sepBy1 parseUnqt whitespace parseList = parseUnqtList --- | Cells either recursively contain another 'HtmlLabel' or else a+-- | Cells either recursively contain another 'Label' or else a -- path to an image file.-data HtmlCell = HtmlLabelCell HtmlAttributes HtmlLabel- | HtmlImgCell HtmlAttributes HtmlImg- deriving (Eq, Ord, Show, Read)+data Cell = LabelCell Attributes Label+ | ImgCell Attributes Img+ | VerticalRule -- ^ Should be between 'LabelCell' or+ -- 'ImgCell' values, requires Graphviz >=+ -- 2.29.0+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlCell where- unqtDot (HtmlLabelCell as l) = printCell as $ unqtDot l- unqtDot (HtmlImgCell as img) = printCell as $ unqtDot img+instance PrintDot Cell where+ unqtDot (LabelCell as l) = printCell as $ unqtDot l+ unqtDot (ImgCell as img) = printCell as $ unqtDot img+ unqtDot VerticalRule = printEmptyTag (text "VR") [] unqtListToDot = hsep . mapM unqtDot listToDot = unqtListToDot -printCell :: HtmlAttributes -> DotCode -> DotCode-printCell = printHtmlTag (text "TD")+printCell :: Attributes -> DotCode -> DotCode+printCell = printTag (text "TD") -instance ParseDot HtmlCell where- parseUnqt = oneOf [ parseCell HtmlLabelCell parse- , parseCell HtmlImgCell $ wrapWhitespace parseUnqt+instance ParseDot Cell where+ parseUnqt = oneOf [ parseCell LabelCell parse+ , parseCell ImgCell $ wrapWhitespace parseUnqt+ , parseEmptyTag (const VerticalRule) "VR" ] `adjustErr`- ("Can't parse HtmlCell\n\t"++)+ ("Can't parse Html.Cell\n\t"++) where- parseCell = flip parseHtmlTag "TD"+ parseCell = flip parseTag "TD" parse = parseUnqt - parseUnqtList = wrapWhitespace $ sepBy1 parseUnqt allWhitespace'+ parseUnqtList = wrapWhitespace $ sepBy1 parseUnqt whitespace parseList = parseUnqtList --- | The path to an image; accepted 'HtmlAttributes' are 'HtmlScale' and 'HtmlSrc'.-newtype HtmlImg = HtmlImg HtmlAttributes- deriving (Eq, Ord, Show, Read)+-- | The path to an image; accepted 'Attributes' are 'Scale' and 'Src'.+newtype Img = Img Attributes+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlImg where- unqtDot (HtmlImg as) = printHtmlEmptyTag (text "IMG") as+instance PrintDot Img where+ unqtDot (Img as) = printEmptyTag (text "IMG") as -instance ParseDot HtmlImg where- parseUnqt = wrapWhitespace (parseHtmlEmptyTag HtmlImg "IMG")+instance ParseDot Img where+ parseUnqt = wrapWhitespace (parseEmptyTag Img "IMG") `adjustErr`- ("Can't parse HtmlImg\n\t"++)+ ("Can't parse Html.Img\n\t"++) parse = parseUnqt -- ----------------------------------------------------------------------------- -- | The various HTML-like label-specific attributes being used.-type HtmlAttributes = [HtmlAttribute]+type Attributes = [Attribute] --- | Note that not all 'HtmlAttribute' values are valid everywhere:+-- | Note that not all 'Attribute' values are valid everywhere: -- see the comments for each one on where it is valid.-data HtmlAttribute = HtmlAlign HtmlAlign -- ^ Valid for: 'HtmlTable', 'HtmlCell', 'HtmlNewline'.- | HtmlBAlign HtmlAlign -- ^ Valid for: 'HtmlCell'.- | HtmlBGColor Color -- ^ Valid for: 'HtmlTable' (including 'tableFontAttrs'), 'HtmlCell', 'HtmlFont'.- | HtmlBorder Word8 -- ^ Valid for: 'HtmlTable', 'HtmlCell'. Default is @1@; @0@ represents no border.- | HtmlCellBorder Word8 -- ^ Valid for: 'HtmlTable'. Default is @1@; @0@ represents no border.- | HtmlCellPadding Word8 -- ^ Valid for: 'HtmlTable', 'HtmlCell'. Default is @2@.- | HtmlCellSpacing Word8 -- ^ Valid for: 'HtmlTable', 'HtmlCell'. Default is @2@; maximum is @127@.- | HtmlColor Color -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlColSpan Word16 -- ^ Valid for: 'HtmlCell'. Default is @1@.- | HtmlFace Text -- ^ Valid for: 'tableFontAttrs', 'HtmlFont'.- | HtmlFixedSize Bool -- ^ Valid for: 'HtmlTable', 'HtmlCell'. Default is @'False'@.- | HtmlHeight Word16 -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlHRef Text -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlPointSize Double -- ^ Valid for: 'tableFontAttrs', 'HtmlFont'.- | HtmlPort PortName -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlRowSpan Word16 -- ^ Valid for: 'HtmlCell'.- | HtmlScale HtmlScale -- ^ Valid for: 'HtmlImg'.- | HtmlSrc FilePath -- ^ Valid for: 'HtmlImg'.- | HtmlTarget Text -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlTitle Text -- ^ Valid for: 'HtmlTable', 'HtmlCell'. Has an alias of @TOOLTIP@.- | HtmlVAlign HtmlVAlign -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- | HtmlWidth Word16 -- ^ Valid for: 'HtmlTable', 'HtmlCell'.- deriving (Eq, Ord, Show, Read)+data Attribute = Align Align -- ^ Valid for: 'Table', 'Cell', 'Newline'.+ | BAlign Align -- ^ Valid for: 'Cell'.+ | BGColor Color -- ^ Valid for: 'Table' (including 'tableFontAttrs'), 'Cell', 'Font'.+ | Border Word8 -- ^ Valid for: 'Table', 'Cell'. Default is @1@; @0@ represents no border.+ | CellBorder Word8 -- ^ Valid for: 'Table'. Default is @1@; @0@ represents no border.+ | CellPadding Word8 -- ^ Valid for: 'Table', 'Cell'. Default is @2@.+ | CellSpacing Word8 -- ^ Valid for: 'Table', 'Cell'. Default is @2@; maximum is @127@.+ | Color Color -- ^ Valid for: 'Table', 'Cell'.+ | ColSpan Word16 -- ^ Valid for: 'Cell'. Default is @1@.+ | Face T.Text -- ^ Valid for: 'tableFontAttrs', 'Font'.+ | FixedSize Bool -- ^ Valid for: 'Table', 'Cell'. Default is @'False'@.+ | Height Word16 -- ^ Valid for: 'Table', 'Cell'.+ | HRef T.Text -- ^ Valid for: 'Table', 'Cell'.+ | ID T.Text -- ^ Valid for: 'Table', 'Cell'. Requires Graphviz >= 2.29.0+ | PointSize Double -- ^ Valid for: 'tableFontAttrs', 'Font'.+ | Port PortName -- ^ Valid for: 'Table', 'Cell'.+ | RowSpan Word16 -- ^ Valid for: 'Cell'.+ | Scale Scale -- ^ Valid for: 'Img'.+ | Src FilePath -- ^ Valid for: 'Img'.+ | Target T.Text -- ^ Valid for: 'Table', 'Cell'.+ | Title T.Text -- ^ Valid for: 'Table', 'Cell'. Has an alias of @TOOLTIP@.+ | VAlign VAlign -- ^ Valid for: 'Table', 'Cell'.+ | Width Word16 -- ^ Valid for: 'Table', 'Cell'.+ deriving (Eq, Ord, Show, Read) -instance PrintDot HtmlAttribute where- unqtDot (HtmlAlign v) = printHtmlField "ALIGN" v- unqtDot (HtmlBAlign v) = printHtmlField "BALIGN" v- unqtDot (HtmlBGColor v) = printHtmlField "BGCOLOR" v- unqtDot (HtmlBorder v) = printHtmlField "BORDER" v- unqtDot (HtmlCellBorder v) = printHtmlField "CELLBORDER" v- unqtDot (HtmlCellPadding v) = printHtmlField "CELLPADDING" v- unqtDot (HtmlCellSpacing v) = printHtmlField "CELLSPACING" v- unqtDot (HtmlColor v) = printHtmlField "COLOR" v- unqtDot (HtmlColSpan v) = printHtmlField "COLSPAN" v- unqtDot (HtmlFace v) = printHtmlField' "FACE" $ escapeAttribute v- unqtDot (HtmlFixedSize v) = printHtmlField' "FIXEDSIZE" $ printBoolHtml v- unqtDot (HtmlHeight v) = printHtmlField "HEIGHT" v- unqtDot (HtmlHRef v) = printHtmlField' "HREF" $ escapeAttribute v- unqtDot (HtmlPointSize v) = printHtmlField "POINT-SIZE" v- unqtDot (HtmlPort v) = printHtmlField' "PORT" . escapeAttribute $ portName v- unqtDot (HtmlRowSpan v) = printHtmlField "ROWSPAN" v- unqtDot (HtmlScale v) = printHtmlField "SCALE" v- unqtDot (HtmlSrc v) = printHtmlField' "SRC" . escapeAttribute $ T.pack v- unqtDot (HtmlTarget v) = printHtmlField' "TARGET" $ escapeAttribute v- unqtDot (HtmlTitle v) = printHtmlField' "TITLE" $ escapeAttribute v- unqtDot (HtmlVAlign v) = printHtmlField "VALIGN" v- unqtDot (HtmlWidth v) = printHtmlField "WIDTH" v+instance PrintDot Attribute where+ unqtDot (Align v) = printHtmlField "ALIGN" v+ unqtDot (BAlign v) = printHtmlField "BALIGN" v+ unqtDot (BGColor v) = printHtmlField "BGCOLOR" v+ unqtDot (Border v) = printHtmlField "BORDER" v+ unqtDot (CellBorder v) = printHtmlField "CELLBORDER" v+ unqtDot (CellPadding v) = printHtmlField "CELLPADDING" v+ unqtDot (CellSpacing v) = printHtmlField "CELLSPACING" v+ unqtDot (Color v) = printHtmlField "COLOR" v+ unqtDot (ColSpan v) = printHtmlField "COLSPAN" v+ unqtDot (Face v) = printHtmlField' "FACE" $ escapeAttribute v+ unqtDot (FixedSize v) = printHtmlField' "FIXEDSIZE" $ printBoolHtml v+ unqtDot (Height v) = printHtmlField "HEIGHT" v+ unqtDot (HRef v) = printHtmlField' "HREF" $ escapeAttribute v+ unqtDot (ID v) = printHtmlField' "ID" $ escapeAttribute v+ unqtDot (PointSize v) = printHtmlField "POINT-SIZE" v+ unqtDot (Port v) = printHtmlField' "PORT" . escapeAttribute $ portName v+ unqtDot (RowSpan v) = printHtmlField "ROWSPAN" v+ unqtDot (Scale v) = printHtmlField "SCALE" v+ unqtDot (Src v) = printHtmlField' "SRC" . escapeAttribute $ T.pack v+ unqtDot (Target v) = printHtmlField' "TARGET" $ escapeAttribute v+ unqtDot (Title v) = printHtmlField' "TITLE" $ escapeAttribute v+ unqtDot (VAlign v) = printHtmlField "VALIGN" v+ unqtDot (Width v) = printHtmlField "WIDTH" v unqtListToDot = hsep . mapM unqtDot listToDot = unqtListToDot -- | Only to be used when the 'PrintDot' instance of @a@ matches the--- HTML syntax (i.e. numbers and @Html*@ values; 'Color' values also+-- HTML syntax (i.e. numbers and @Html.*@ values; 'Color' values also -- seem to work).-printHtmlField :: (PrintDot a) => Text -> a -> DotCode+printHtmlField :: (PrintDot a) => T.Text -> a -> DotCode printHtmlField f = printHtmlField' f . unqtDot -printHtmlField' :: Text -> DotCode -> DotCode+printHtmlField' :: T.Text -> DotCode -> DotCode printHtmlField' f v = text f <> equals <> dquotes v -instance ParseDot HtmlAttribute where- parseUnqt = oneOf [ parseHtmlField HtmlAlign "ALIGN"- , parseHtmlField HtmlBAlign "BALIGN"- , parseHtmlField HtmlBGColor "BGCOLOR"- , parseHtmlField HtmlBorder "BORDER"- , parseHtmlField HtmlCellBorder "CELLBORDER"- , parseHtmlField HtmlCellPadding "CELLPADDING"- , parseHtmlField HtmlCellSpacing "CELLSPACING"- , parseHtmlField HtmlColor "COLOR"- , parseHtmlField HtmlColSpan "COLSPAN"- , parseHtmlField' HtmlFace "FACE" unescapeAttribute- , parseHtmlField' HtmlFixedSize "FIXEDSIZE" parseBoolHtml- , parseHtmlField HtmlHeight "HEIGHT"- , parseHtmlField' HtmlHRef "HREF" unescapeAttribute- , parseHtmlField HtmlPointSize "POINT-SIZE"- , parseHtmlField' (HtmlPort . PN) "PORT" unescapeAttribute- , parseHtmlField HtmlRowSpan "ROWSPAN"- , parseHtmlField HtmlScale "SCALE"- , parseHtmlField' HtmlSrc "SRC" $ liftM T.unpack unescapeAttribute- , parseHtmlField' HtmlTarget "TARGET" unescapeAttribute- , parseHtmlField' HtmlTitle "TITLE" unescapeAttribute+instance ParseDot Attribute where+ parseUnqt = oneOf [ parseHtmlField Align "ALIGN"+ , parseHtmlField BAlign "BALIGN"+ , parseHtmlField BGColor "BGCOLOR"+ , parseHtmlField Border "BORDER"+ , parseHtmlField CellBorder "CELLBORDER"+ , parseHtmlField CellPadding "CELLPADDING"+ , parseHtmlField CellSpacing "CELLSPACING"+ , parseHtmlField Color "COLOR"+ , parseHtmlField ColSpan "COLSPAN"+ , parseHtmlField' Face "FACE" unescapeAttribute+ , parseHtmlField' FixedSize "FIXEDSIZE" parseBoolHtml+ , parseHtmlField Height "HEIGHT"+ , parseHtmlField' HRef "HREF" unescapeAttribute+ , parseHtmlField' ID "ID" unescapeAttribute+ , parseHtmlField PointSize "POINT-SIZE"+ , parseHtmlField' (Port . PN) "PORT" unescapeAttribute+ , parseHtmlField RowSpan "ROWSPAN"+ , parseHtmlField Scale "SCALE"+ , parseHtmlField' Src "SRC" $ liftM T.unpack unescapeAttribute+ , parseHtmlField' Target "TARGET" unescapeAttribute+ , parseHtmlField' Title "TITLE" unescapeAttribute `onFail`- parseHtmlField' HtmlTitle "TOOLTIP" unescapeAttribute- , parseHtmlField HtmlVAlign "VALIGN"- , parseHtmlField HtmlWidth "WIDTH"+ parseHtmlField' Title "TOOLTIP" unescapeAttribute+ , parseHtmlField VAlign "VALIGN"+ , parseHtmlField Width "WIDTH" ] parse = parseUnqt - parseUnqtList = sepBy parseUnqt allWhitespace -- needs at least one whitespace char+ parseUnqtList = sepBy parseUnqt whitespace1 -- needs at least one whitespace char parseList = parseUnqtList -parseHtmlField :: (ParseDot a) => (a -> HtmlAttribute) -> String- -> Parse HtmlAttribute+parseHtmlField :: (ParseDot a) => (a -> Attribute) -> String+ -> Parse Attribute parseHtmlField c f = parseHtmlField' c f parseUnqt -parseHtmlField' :: (a -> HtmlAttribute) -> String -> Parse a- -> Parse HtmlAttribute+parseHtmlField' :: (a -> Attribute) -> String -> Parse a+ -> Parse Attribute parseHtmlField' c f p = do string f parseEq liftM c $ quotedParse p@@ -373,23 +411,22 @@ -- | Specifies horizontal placement. When an object is allocated more -- space than required, this value determines where the extra space -- is placed left and right of the object.-data HtmlAlign = HLeft- | HCenter -- ^ Default value.- | HRight- | HText -- ^ 'HtmlLabelCell' values only; aligns lines- -- of text using the full cell width. The- -- alignment of a line is determined by its- -- (possibly implicit) associated- -- 'HtmlNewline' element.- deriving (Eq, Ord, Bounded, Enum, Show, Read)+data Align = HLeft+ | HCenter -- ^ Default value.+ | HRight+ | HText -- ^ 'LabelCell' values only; aligns lines of text+ -- using the full cell width. The alignment of a+ -- line is determined by its (possibly implicit)+ -- associated 'Newline' element.+ deriving (Eq, Ord, Bounded, Enum, Show, Read) -instance PrintDot HtmlAlign where+instance PrintDot Align where unqtDot HLeft = text "LEFT" unqtDot HCenter = text "CENTER" unqtDot HRight = text "RIGHT" unqtDot HText = text "TEXT" -instance ParseDot HtmlAlign where+instance ParseDot Align where parseUnqt = oneOf [ stringRep HLeft "LEFT" , stringRep HCenter "CENTER" , stringRep HRight "RIGHT"@@ -401,17 +438,17 @@ -- | Specifies vertical placement. When an object is allocated more -- space than required, this value determines where the extra space -- is placed above and below the object.-data HtmlVAlign = HTop- | HMiddle -- ^ Default value.- | HBottom- deriving (Eq, Ord, Bounded, Enum, Show, Read)+data VAlign = HTop+ | HMiddle -- ^ Default value.+ | HBottom+ deriving (Eq, Ord, Bounded, Enum, Show, Read) -instance PrintDot HtmlVAlign where+instance PrintDot VAlign where unqtDot HTop = text "TOP" unqtDot HMiddle = text "MIDDLE" unqtDot HBottom = text "BOTTOM" -instance ParseDot HtmlVAlign where+instance ParseDot VAlign where parseUnqt = oneOf [ stringRep HTop "TOP" , stringRep HMiddle "MIDDLE" , stringRep HBottom "BOTTOM"@@ -422,39 +459,39 @@ -- | Specifies how an image will use any extra space available in its -- cell. If undefined, the image inherits the value of the -- @ImageScale@ attribute.-data HtmlScale = HtmlNaturalSize -- ^ Default value.- | HtmlScaleUniformly- | HtmlExpandWidth- | HtmlExpandHeight- | HtmlExpandBoth+data Scale = NaturalSize -- ^ Default value.+ | ScaleUniformly+ | ExpandWidth+ | ExpandHeight+ | ExpandBoth deriving (Eq, Ord, Bounded, Enum, Show, Read) -instance PrintDot HtmlScale where- unqtDot HtmlNaturalSize = text "FALSE"- unqtDot HtmlScaleUniformly = text "TRUE"- unqtDot HtmlExpandWidth = text "WIDTH"- unqtDot HtmlExpandHeight = text "HEIGHT"- unqtDot HtmlExpandBoth = text "BOTH"+instance PrintDot Scale where+ unqtDot NaturalSize = text "FALSE"+ unqtDot ScaleUniformly = text "TRUE"+ unqtDot ExpandWidth = text "WIDTH"+ unqtDot ExpandHeight = text "HEIGHT"+ unqtDot ExpandBoth = text "BOTH" -instance ParseDot HtmlScale where- parseUnqt = oneOf [ stringRep HtmlNaturalSize "FALSE"- , stringRep HtmlScaleUniformly "TRUE"- , stringRep HtmlExpandWidth "WIDTH"- , stringRep HtmlExpandHeight "HEIGHT"- , stringRep HtmlExpandBoth "BOTH"+instance ParseDot Scale where+ parseUnqt = oneOf [ stringRep NaturalSize "FALSE"+ , stringRep ScaleUniformly "TRUE"+ , stringRep ExpandWidth "WIDTH"+ , stringRep ExpandHeight "HEIGHT"+ , stringRep ExpandBoth "BOTH" ] parse = parseUnqt -- ----------------------------------------------------------------------------- -escapeAttribute :: Text -> DotCode+escapeAttribute :: T.Text -> DotCode escapeAttribute = escapeHtml False -escapeValue :: Text -> DotCode+escapeValue :: T.Text -> DotCode escapeValue = escapeHtml True -escapeHtml :: Bool -> Text -> DotCode+escapeHtml :: Bool -> T.Text -> DotCode escapeHtml quotesAllowed = hcat . liftM concat . mapM (escapeSegment . T.unpack) . T.groupBy ((==) `on` isSpace)@@ -476,16 +513,16 @@ escape' e = char '&' <> e <> char ';' escape = escape' . text -unescapeAttribute :: Parse Text+unescapeAttribute :: Parse T.Text unescapeAttribute = unescapeHtml False -unescapeValue :: Parse Text+unescapeValue :: Parse T.Text unescapeValue = unescapeHtml True -- | Parses an HTML-compatible 'String', de-escaping known characters. -- Note: this /will/ fail if an unknown non-numeric HTML-escape is -- used.-unescapeHtml :: Bool -> Parse Text+unescapeHtml :: Bool -> Parse T.Text unescapeHtml quotesAllowed = liftM (T.pack . catMaybes) . many1 . oneOf $ [ parseEscpd , validChars@@ -519,7 +556,7 @@ -- | The characters that need to be escaped and what they need to be -- replaced with (sans @'&'@).-htmlEscapes :: [(Char, Text)]+htmlEscapes :: [(Char, T.Text)] htmlEscapes = [ ('"', "quot") , ('<', "lt") , ('>', "gt")@@ -532,7 +569,7 @@ -- | Flip the order and add extra values that might be escaped. More -- specifically, provide the escape code for spaces (@\"nbsp\"@) and -- apostrophes (@\"apos\"@) since they aren't used for escaping.-htmlUnescapes :: [(Text, Char)]+htmlUnescapes :: [(T.Text, Char)] htmlUnescapes = maybeEscaped ++ map (uncurry (flip (,))) htmlEscapes@@ -550,46 +587,55 @@ -- ----------------------------------------------------------------------------- -- | Print something like @<FOO ATTR=\"ATTR_VALUE\">value<\/FOO>@-printHtmlTag :: DotCode -> HtmlAttributes -> DotCode -> DotCode-printHtmlTag t as v = angled (t <+> toDot as)+printTag :: DotCode -> Attributes -> DotCode -> DotCode+printTag t as v = angled (t <+> toDot as) <> v <> angled (fslash <> t) -printHtmlFontTag :: HtmlAttributes -> DotCode -> DotCode-printHtmlFontTag = printHtmlTag (text "FONT")+printFontTag :: Attributes -> DotCode -> DotCode+printFontTag = printTag (text "FONT") -- | Print something like @<FOO ATTR=\"ATTR_VALUE\"\/>@-printHtmlEmptyTag :: DotCode -> HtmlAttributes -> DotCode-printHtmlEmptyTag t as = angled $ t <+> toDot as <> fslash+printEmptyTag :: DotCode -> Attributes -> DotCode+printEmptyTag t as = angled $ t <+> toDot as <> fslash -- ----------------------------------------------------------------------------- -- Note: can't use bracket here because we're not completely -- discarding everything from the opening bracket. +-- Not using parseTagRep for parseTag because open/close case+-- is different; worth fixing?+ -- | Parse something like @<FOO ATTR=\"ATTR_VALUE\">value<\/FOO>@-parseHtmlTag :: (HtmlAttributes -> val -> tag) -> String+parseTag :: (Attributes -> val -> tag) -> String -> Parse val -> Parse tag-parseHtmlTag c t pv = do as <- parseAngled openingTag- v <- pv- parseAngled $ character '/' >> t' >> allWhitespace'- return $ c as v+parseTag c t pv = do as <- parseAngled openingTag+ v <- pv+ parseAngled $ character '/' >> t' >> whitespace+ return $ c as v where t' = string t openingTag = do t'- as <- tryParseList' $ allWhitespace >> parse- allWhitespace'+ as <- tryParseList' $ whitespace1 >> parse+ whitespace return as -parseHtmlFontTag :: (HtmlAttributes -> val -> tag) -> Parse val -> Parse tag-parseHtmlFontTag = flip parseHtmlTag "FONT"+parseTagRep :: (tagName -> val -> tag) -> Parse tagName -> Parse val -> Parse tag+parseTagRep c pt pv = do tn <- parseAngled (pt `discard` whitespace)+ v <- pv+ parseAngled $ character '/' >> pt >> whitespace+ return $ c tn v +parseFontTag :: (Attributes -> val -> tag) -> Parse val -> Parse tag+parseFontTag = flip parseTag "FONT"+ -- | Parse something like @<FOO ATTR=\"ATTR_VALUE\"\/>@-parseHtmlEmptyTag :: (HtmlAttributes -> tag) -> String -> Parse tag-parseHtmlEmptyTag c t = parseAngled+parseEmptyTag :: (Attributes -> tag) -> String -> Parse tag+parseEmptyTag c t = parseAngled ( do string t- as <- tryParseList' $ allWhitespace >> parse- allWhitespace'+ as <- tryParseList' $ whitespace1 >> parse+ whitespace character '/' return $ c as )
Data/GraphViz/Commands.hs view
@@ -63,21 +63,27 @@ -- <http://graphviz.org/pdf/dot.1.pdf>, or if installed on your -- system @man graphviz@). Note that any command can be used on -- both directed and undirected graphs.-data GraphvizCommand = Dot -- ^ For hierachical graphs (ideal for- -- directed graphs).- | Neato -- ^ For symmetric layouts of graphs- -- (ideal for undirected graphs).- | TwoPi -- ^ For radial layout of graphs.- | Circo -- ^ For circular layout of graphs.- | Fdp -- ^ For symmetric layout of graphs.+data GraphvizCommand = Dot -- ^ For hierachical graphs (ideal for+ -- directed graphs).+ | Neato -- ^ For symmetric layouts of graphs+ -- (ideal for undirected graphs).+ | TwoPi -- ^ For radial layout of graphs.+ | Circo -- ^ For circular layout of graphs.+ | Fdp -- ^ For symmetric layout of graphs.+ | Osage -- ^ Filter for drawing clustered graphs,+ -- requires Graphviz >= 2.28.0.+ | Patchwork -- ^ Draw clustered graphs as treemaps,+ -- requires Graphviz >= 2.28.0. deriving (Eq, Ord, Show, Read) -showCmd :: GraphvizCommand -> String-showCmd Dot = "dot"-showCmd Neato = "neato"-showCmd TwoPi = "twopi"-showCmd Circo = "circo"-showCmd Fdp = "fdp"+showCmd :: GraphvizCommand -> String+showCmd Dot = "dot"+showCmd Neato = "neato"+showCmd TwoPi = "twopi"+showCmd Circo = "circo"+showCmd Fdp = "fdp"+showCmd Osage = "osage"+showCmd Patchwork = "patchwork" -- | The default command for directed graphs. dirCommand :: GraphvizCommand@@ -161,6 +167,8 @@ | WBmp -- ^ Wireless BitMap format; -- monochrome format usually used -- for mobile computing devices.+ | WebP -- ^ Google's WebP format; requires+ -- Graphviz >= 2.29.0. deriving (Eq, Ord, Bounded, Enum, Show, Read) instance GraphvizResult GraphvizOutput where@@ -192,6 +200,7 @@ outputCall VmlZ = "vmlz" outputCall Vrml = "vrml" outputCall WBmp = "wbmp"+ outputCall WebP = "webp" -- | A default file extension for each 'GraphvizOutput'. defaultExtension :: GraphvizOutput -> String@@ -223,6 +232,7 @@ defaultExtension VmlZ = "vmlz" defaultExtension Vrml = "vrml" defaultExtension WBmp = "wbmp"+defaultExtension WebP = "webp" -- | Unlike 'GraphvizOutput', these items do not produce an output -- file; instead, they directly draw a canvas (i.e. a window) with
Data/GraphViz/Commands/IO.hs view
@@ -45,7 +45,7 @@ , hClose, hGetContents, hSetBinaryMode) import System.Exit(ExitCode(ExitSuccess)) import System.Process(runInteractiveProcess, waitForProcess)-import Control.Exception.Extensible(IOException, evaluate)+import Control.Exception(IOException, evaluate) import Control.Concurrent(MVar, forkIO, newEmptyMVar, putMVar, takeMVar) -- -----------------------------------------------------------------------------
Data/GraphViz/Exception.hs view
@@ -15,7 +15,7 @@ , bracket ) where -import Control.Exception.Extensible+import Control.Exception import Data.Typeable -- -----------------------------------------------------------------------------
Data/GraphViz/Parsing.hs view
@@ -47,10 +47,8 @@ , character , parseStrictFloat , noneOf+ , whitespace1 , whitespace- , whitespace'- , allWhitespace- , allWhitespace' , wrapWhitespace , optionalQuotedString , optionalQuoted@@ -79,6 +77,7 @@ , stringValue , parseAngled , parseBraced+ , parseColorScheme ) where import Data.GraphViz.Util@@ -123,7 +122,7 @@ runParser' :: Parse a -> Text -> a runParser' p = checkValidParse . fst . runParser p' where- p' = p `discard` (allWhitespace' >> eof)+ p' = p `discard` (whitespace >> eof) class ParseDot a where parseUnqt :: Parse a@@ -135,9 +134,9 @@ parseUnqtList = bracketSep (parseAndSpace $ character '[') ( wrapWhitespace parseComma `onFail`- allWhitespace+ whitespace1 )- (allWhitespace' >> character ']')+ (whitespace >> character ']') parseUnqt parseList :: Parse [a]@@ -310,7 +309,7 @@ `adjustErr` ("Missing closing bracket:\n\t"++)) parseAndSpace :: Parse a -> Parse a-parseAndSpace p = p `discard` allWhitespace'+parseAndSpace p = p `discard` whitespace string :: String -> Parse () string = mapM_ character@@ -349,21 +348,17 @@ noneOf :: [Char] -> Parse Char noneOf t = satisfy (\x -> all (/= x) t) -whitespace :: Parse ()-whitespace = many1Satisfy isSpace >> return ()--whitespace' :: Parse ()-whitespace' = manySatisfy isSpace >> return ()--allWhitespace :: Parse ()-allWhitespace = (whitespace `onFail` newline) >> allWhitespace'+-- | Parses at least one whitespace character.+whitespace1 :: Parse ()+whitespace1 = many1Satisfy isSpace >> return () -allWhitespace' :: Parse ()-allWhitespace' = newline' >> whitespace'+-- | Parses zero or more whitespace characters.+whitespace :: Parse ()+whitespace = manySatisfy isSpace >> return () -- | Parse and discard optional whitespace. wrapWhitespace :: Parse a -> Parse a-wrapWhitespace = bracket allWhitespace' allWhitespace'+wrapWhitespace = bracket whitespace whitespace optionalQuotedString :: String -> Parse () optionalQuotedString = optionalQuoted . string@@ -406,6 +401,7 @@ return $ fromMaybe slash mE oth = satisfy (`Set.notMember` bndSet) +-- | Parses a newline. newline :: Parse () newline = strings ["\r\n", "\n", "\r"] @@ -413,7 +409,7 @@ -- non-whitespace is reached. The whitespace on that line is -- not consumed. newline' :: Parse ()-newline' = many (whitespace' >> newline) >> return ()+newline' = many (whitespace >> newline) >> return () -- | Parses and returns all characters up till the end of the line, -- but does not touch the newline characters.@@ -458,9 +454,7 @@ commaSep' :: Parse a -> Parse b -> Parse (a,b) commaSep' pa pb = do a <- pa- whitespace'- parseComma- whitespace'+ wrapWhitespace parseComma b <- pb return (a,b) @@ -483,11 +477,15 @@ -- These instances are defined here to avoid cyclic imports and orphan instances instance ParseDot ColorScheme where- parseUnqt = do cs <- stringRep X11 "X11"- `onFail`- liftM Brewer parseUnqt- setColorScheme cs- return cs+ parseUnqt = parseColorScheme True++parseColorScheme :: Bool -> Parse ColorScheme+parseColorScheme scs = do cs <- oneOf [ stringRep X11 "X11"+ , stringRep SVG "svg"+ , liftM Brewer parseUnqt+ ]+ when scs $ setColorScheme cs+ return cs instance ParseDot BrewerScheme where parseUnqt = liftM2 BScheme parseUnqt parseUnqt
Data/GraphViz/PreProcessing.hs view
@@ -118,7 +118,7 @@ `onFail` liftM B.singleton (satisfy (quoteChar /=)) parseConcat = parseSep >> character '+' >> parseSep- parseSep = many $ allWhitespace `onFail` parseUnwanted+ parseSep = many $ whitespace1 `onFail` parseUnwanted wrapQuotes str = qc `mappend` str `mappend` qc qc = B.singleton '"'
Data/GraphViz/Printing.hs view
@@ -60,6 +60,7 @@ , printField , angled , fslash+ , printColorScheme ) where import Data.GraphViz.Util@@ -85,7 +86,7 @@ import Data.Char(toLower) import qualified Data.Set as Set import Data.Word(Word8, Word16)-import Control.Monad(ap)+import Control.Monad(ap, when) import Control.Monad.Trans.State -- -----------------------------------------------------------------------------@@ -274,11 +275,15 @@ -- These instances are defined here to avoid cyclic imports and orphan instances instance PrintDot ColorScheme where- unqtDot cs = do setColorScheme cs- case cs of- X11 -> unqtText "X11"- Brewer bs -> unqtDot bs+ unqtDot = printColorScheme True +printColorScheme :: Bool -> ColorScheme -> DotCode+printColorScheme scs cs = do when scs $ setColorScheme cs+ case cs of+ X11 -> unqtText "X11"+ SVG -> unqtText "svg"+ Brewer bs -> unqtDot bs+ instance PrintDot BrewerScheme where unqtDot (BScheme n l) = unqtDot n <> unqtDot l @@ -318,4 +323,3 @@ unqtDot Ylgnbu = unqtText "ylgnbu" unqtDot Ylorbr = unqtText "ylorbr" unqtDot Ylorrd = unqtText "ylorrd"-
Data/GraphViz/State.hs view
@@ -13,6 +13,9 @@ module Data.GraphViz.State ( GraphvizStateM(..) , GraphvizState(..)+ , AttributeType(..)+ , setAttributeType+ , getAttributeType , initialState , setDirectedness , getDirectedness@@ -44,17 +47,32 @@ getsGS = stQuery +data AttributeType = GraphAttribute+ | SubGraphAttribute+ | ClusterAttribute+ | NodeAttribute+ | EdgeAttribute+ deriving (Eq, Ord, Show, Read)+ -- | Several aspects of Dot code are either global or mutable state.-data GraphvizState = GS { directedEdges :: Bool+data GraphvizState = GS { directedEdges :: !Bool , layerSep :: [Char]- , colorScheme :: ColorScheme+ , attributeType :: !AttributeType+ , graphColor :: !ColorScheme+ , clusterColor :: !ColorScheme+ , nodeColor :: !ColorScheme+ , edgeColor :: !ColorScheme } deriving (Eq, Ord, Show, Read) initialState :: GraphvizState initialState = GS { directedEdges = True , layerSep = defLayerSep- , colorScheme = X11+ , attributeType = GraphAttribute+ , graphColor = X11+ , clusterColor = X11+ , nodeColor = X11+ , edgeColor = X11 } setDirectedness :: (GraphvizStateM m) => Bool -> m ()@@ -63,6 +81,12 @@ getDirectedness :: (GraphvizStateM m) => m Bool getDirectedness = getsGS directedEdges +setAttributeType :: (GraphvizStateM m) => AttributeType -> m ()+setAttributeType tp = modifyGS $ \ gs -> gs { attributeType = tp }++getAttributeType :: (GraphvizStateM m) => m AttributeType+getAttributeType = getsGS attributeType+ setLayerSep :: (GraphvizStateM m) => [Char] -> m () setLayerSep sep = modifyGS (\ gs -> gs { layerSep = sep } ) @@ -70,14 +94,25 @@ getLayerSep = getsGS layerSep setColorScheme :: (GraphvizStateM m) => ColorScheme -> m ()-setColorScheme cs = modifyGS (\ gs -> gs { colorScheme = cs } )+setColorScheme cs = do tp <- getsGS attributeType+ modifyGS $ \gs -> case tp of+ GraphAttribute -> gs { graphColor = cs }+ -- subgraphs don't have specified scheme+ SubGraphAttribute -> gs { graphColor = cs }+ ClusterAttribute -> gs { clusterColor = cs }+ NodeAttribute -> gs { nodeColor = cs }+ EdgeAttribute -> gs { edgeColor = cs } getColorScheme :: (GraphvizStateM m) => m ColorScheme-getColorScheme = getsGS colorScheme+getColorScheme = do tp <- getsGS attributeType+ getsGS $ case tp of+ GraphAttribute -> graphColor+ -- subgraphs don't have specified scheme+ SubGraphAttribute -> graphColor+ ClusterAttribute -> clusterColor+ NodeAttribute -> nodeColor+ EdgeAttribute -> edgeColor -- | The default separators for 'LayerSep'. defLayerSep :: [Char] defLayerSep = [' ', ':', '\t']---
− Data/GraphViz/Testing.hs
@@ -1,382 +0,0 @@-{-# LANGUAGE Rank2Types, FlexibleContexts #-}--{- |- Module : Data.GraphViz.Testing- Description : Test-suite for graphviz.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- This defines a test-suite for the graphviz library.-- Limitations of the test suite are as follows:-- * For the most part, this library lets you use arbitrary numbers- for String values. However, this is not tested due to too many- corner cases for special parsers that don't take arbitrary- Strings. As the Dot standard is ambiguous over whether you can- or can't use numbers as Strings (more specifically, if they- should be quoted or not), this is a user beware situation.-- * Same goes for empty Strings; sometimes they're allowed, sometimes- they're not. Thus, to simplify matters they're not generated.-- * The generated Strings are very simple, only composed of lower- case letters, digits and some symbols. This is because too many- tests were \"failing\" due to some corner case; e.g. lower-case- letters only because the parser parses Strings as lowercase, so- if a particular String isn't valid (e.g. @\"all\"@ for 'LayerID',- then the 'Arbitrary' instance has to ensure that all possible- ways of capitalising that String isn't generated as a random- 'LRName'.-- * The generated 'DotRepr's are not guaranteed to be valid.-- * To avoid needless endless recursion, sub-graphs do not have their- own internal sub-graphs.-- * This test suite isn't perfect: if you deliberately try to stuff- something up, you probably can.--}-module Data.GraphViz.Testing- ( -- * Running the test suite.- runChosenTests- , runTests- , runTest- -- ** The tests themselves- , Test(..)- , defaultTests- , test_printParseID_Attributes- , test_generalisedSameDot- , test_printParseID- , test_preProcessingID- , test_dotizeAugment- , test_dotizeAugmentUniq- , test_canonicalise- , test_transitive- -- * Re-exporting modules for manual testing.- , module Data.GraphViz- , module Data.GraphViz.Testing.Properties- -- * Debugging printing- , PrintDot(..)- , printIt- , renderDot- -- * Debugging parsing- , ParseDot(..)- , parseIt- , runParser- , preProcess- ) where--import Test.QuickCheck--import Data.GraphViz.Testing.Instances()-import Data.GraphViz.Testing.Properties--import Data.GraphViz-import Data.GraphViz.Parsing(ParseDot(..), parseIt, runParser)-import Data.GraphViz.PreProcessing(preProcess)-import Data.GraphViz.Printing(PrintDot(..), printIt, renderDot)-import qualified Data.GraphViz.Types.Generalised as G-import qualified Data.GraphViz.Types.Graph as Gr--- Can't use PatriciaTree because a Show instance is needed.-import Data.Graph.Inductive.Tree(Gr)--import System.Exit(ExitCode(..), exitWith)-import System.IO(hPutStrLn, stderr)---- -------------------------------------------------------------------------------runChosenTests :: [Test] -> IO ()-runChosenTests tsts = do putStrLn msg- blankLn- runTests tsts- spacerLn- putStrLn successMsg- where- msg = "This is the test suite for the graphviz library.\n\- \If any of these tests fail, please inform the maintainer,\n\- \including full output of this test suite."-- successMsg = "All tests were successful!"----- -------------------------------------------------------------------------------- Defining a Test structure and how to run tests.---- | Defines the test structure being used.-data Test = Test { name :: String- , lookupName :: String -- ^ Should be lowercase- , desc :: String- , tests :: [IO Result] -- ^ QuickCheck test.- }---- | Run all of the provided tests.-runTests :: [Test] -> IO ()-runTests = mapM_ ((>>) spacerLn . runTest)---- | Run the provided test.-runTest :: Test -> IO ()-runTest tst = do putStrLn title- blankLn- putStrLn $ desc tst- blankLn- run $ tests tst- blankLn- where- nm = '"' : name tst ++ "\""- title = "Running test: " ++ nm ++ "."- successMsg = "All tests for " ++ nm ++ " were successful!"- gaveUpMsg = "Too many sample inputs for " ++ nm ++ " were rejected;\n\- \tentatively marking this as successful."- failMsg = "The tests for " ++ nm ++ " failed!\n\- \Not attempting any further tests."-- run [] = putStrLn successMsg- run (t:ts) = do r <- t- case r of- Success{} -> run ts- GaveUp{} -> putStrLn gaveUpMsg >> run ts- _ -> die failMsg--spacerLn :: IO ()-spacerLn = putStrLn (replicate 70 '=') >> blankLn--blankLn :: IO ()-blankLn = putStrLn ""--die :: String -> IO a-die msg = do hPutStrLn stderr msg- exitWith (ExitFailure 1)--qCheck :: (Testable prop) => prop -> IO Result-qCheck = quickCheckWithResult (stdArgs { maxSize = 50, maxSuccess = 200 })---- -------------------------------------------------------------------------------- Defining the tests to use.---- | The tests to run by default.-defaultTests :: [Test]-defaultTests = [ test_printParseID_Attributes- , test_generalisedSameDot- , test_printParseID- , test_preProcessingID- , test_dotizeAugment- , test_dotizeHasAugment- , test_dotizeAugmentUniq- , test_findAllNodes- , test_findAllNodesE- , test_findAllEdges- , test_noGraphInfo- , test_canonicalise- , test_transitive- ]---- | Test that 'Attributes' can be printed and then parsed back.-test_printParseID_Attributes :: Test-test_printParseID_Attributes- = Test { name = "Printing and parsing of Attributes"- , lookupName = "attributes"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: Attributes -> Property- prop = prop_printParseListID-- dsc = "The most common source of errors in printing and parsing are for\n\- \Attributes."--test_generalisedSameDot :: Test-test_generalisedSameDot- = Test { name = "Printing generalised Dot code"- , lookupName = "makegeneralised"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: DotGraph Int -> Bool- prop = prop_generalisedSameDot-- dsc = "When generalising \"DotGraph\" values to other \"DotRepr\" values,\n\- \the generated Dot code should be identical."--test_printParseID :: Test-test_printParseID- = Test { name = "Printing and Parsing DotReprs"- , lookupName = "printparseid"- , desc = dsc- , tests = tsts- }- where- tsts :: [IO Result]- tsts = [ qCheck (prop_printParseID :: DotGraph Int -> Bool)- , qCheck (prop_printParseID :: G.DotGraph Int -> Bool)- , qCheck (prop_printParseID :: Gr.DotGraph Int -> Bool)- ]-- dsc = "The graphviz library should be able to parse back in its own\n\- \generated Dot code for any \"DotRepr\" instance"--test_preProcessingID :: Test-test_preProcessingID- = Test { name = "Pre-processing Dot code"- , lookupName = "preprocessing"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: DotGraph Int -> Bool- prop = prop_preProcessingID-- dsc = "When parsing Dot code, some pre-processing is done to remove items\n\- \such as comments and to join together multi-line strings. This\n\- \test verifies that this pre-processing doesn't affect actual\n\- \Dot code by running the pre-processor on generated Dot code.\n\n\- \This test is not run on generalised Dot graphs as if it works for\n\- \normal dot graphs then it should also work for generalised ones."--test_dotizeAugment :: Test-test_dotizeAugment- = Test { name = "Augmenting FGL Graphs"- , lookupName = "augment"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: Gr Char Double -> Bool- prop = prop_dotizeAugment-- dsc = "The various Graph to Graph functions in Data.GraphViz should\n\- \only _augment_ the graph labels and not change the graphs\n\- \themselves. This test compares the original graphs to these\n\- \augmented graphs and verifies that they are the same."--test_dotizeHasAugment :: Test-test_dotizeHasAugment- = Test { name = "Ensuring augmentation of FGL Graphs"- , lookupName = "hasaugment"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: Gr Char Double -> Bool- prop = prop_dotizeHasAugment-- dsc = "The various Graph to Graph functions in Data.GraphViz should\n\- \actually agument the graph labels; this ensures that all labels\n\- \actually have attached Attributes after augmentation."--test_dotizeAugmentUniq :: Test-test_dotizeAugmentUniq- = Test { name = "Unique edges in augmented FGL Graphs"- , lookupName = "augmentuniq"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: Gr Char Double -> Bool- prop = prop_dotizeAugmentUniq-- dsc = "When augmenting a graph with multiple edges, as long as no\n\- \Attributes are provided that override the default settings,\n\- \then each edge between two nodes should have a unique position\n\- \Attribute, etc."--test_findAllNodes :: Test-test_findAllNodes- = Test { name = "Ensure all nodes are found in a DotRepr"- , lookupName = "findnodes"- , desc = dsc- , tests = map qCheck props- }- where- props :: [Gr () () -> Bool]- props = testAllGraphTypes prop_findAllNodes-- dsc = "nodeInformation should find all nodes in a DotRepr;\n\- \this is tested by converting an FGL graph and comparing\n\- \the nodes it should have to those that are found."--test_findAllNodesE :: Test-test_findAllNodesE- = Test { name = "Ensure all nodes are found in a node-less DotRepr"- , lookupName = "findedgelessnodes"- , desc = dsc- , tests = map qCheck props- }- where- props :: [Gr () () -> Bool]- props = testAllGraphTypes prop_findAllNodesE-- dsc = "nodeInformation should find all nodes in a DotRepr,\n\- \even if there are no explicit nodes in that graph.\n\- \This is tested by converting an FGL graph and comparing\n\- \the nodes it should have to those that are found."--test_findAllEdges :: Test-test_findAllEdges- = Test { name = "Ensure all edges are found in a DotRepr"- , lookupName = "findedges"- , desc = dsc- , tests = map qCheck props- }- where- props :: [Gr () () -> Bool]- props = testAllGraphTypes prop_findAllEdges-- dsc = "nodeInformation should find all edges in a DotRepr;\n\- \this is tested by converting an FGL graph and comparing\n\- \the edges it should have to those that are found."--test_noGraphInfo :: Test-test_noGraphInfo- = Test { name = "Plain DotReprs should have no structural information"- , lookupName = "nographinfo"- , desc = dsc- , tests = map qCheck props- }- where- props :: [Gr () () -> Bool]- props = testAllGraphTypes prop_noGraphInfo-- dsc = "When converting a Graph to a DotRepr, there should be no\n\- \clusters or global attributes."--test_canonicalise :: Test-test_canonicalise- = Test { name = "Canonicalisation should be idempotent"- , lookupName = "canonicalise"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: DotGraph Int -> Bool- prop = prop_canonicalise-- dsc = "Repeated application of canonicalise shouldn't have any further affect."--test_transitive :: Test-test_transitive- = Test { name = "Transitive reduction should be idempotent"- , lookupName = "transitive"- , desc = dsc- , tests = [qCheck prop]- }- where- prop :: DotGraph Int -> Bool- prop = prop_transitive-- dsc = "Repeated application of transitiveReduction shouldn't have any further affect."---- --------------------------------------------------------------------------------- | Used when a property takes in a DotRepr as the first argument to--- indicate which instance it should test via 'fromCanonical'.-testAllGraphTypes :: (Testable prop)- => (forall dg. (Eq (dg Int), DotRepr dg Int) => dg Int -> prop)- -> [prop]-testAllGraphTypes prop = [ prop (undefined :: DotGraph Int)- , prop (undefined :: G.DotGraph Int)- , prop (undefined :: Gr.DotGraph Int)- ]
− Data/GraphViz/Testing/Instances.hs
@@ -1,27 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE OverloadedStrings #-}--{- |- Module : Data.GraphViz.Testing.Instances- Description : 'Arbitrary' instances for graphviz.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- This module exports the 'Arbitrary' instances for the various types- used to represent Graphviz Dot code.-- Note that they do not generally generate /sensible/ values for the- various types; in particular, there's no guarantee that the- 'Attributes' chosen for a particular value type are indeed legal- for that type.- -}-module Data.GraphViz.Testing.Instances() where--import Data.GraphViz.Testing.Instances.FGL()-import Data.GraphViz.Testing.Instances.Canonical()-import Data.GraphViz.Testing.Instances.Generalised()-import Data.GraphViz.Testing.Instances.Graph()---- ------------------------------------------------------------------------------
− Data/GraphViz/Testing/Instances/Attributes.hs
@@ -1,897 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}-{-# LANGUAGE OverloadedStrings #-}--{- |- Module : Data.GraphViz.Testing.Instances.Attributes- Description : Attribute instances for Arbitrary.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Attributes- ( arbGraphAttrs- , arbSubGraphAttrs- , arbClusterAttrs- , arbNodeAttrs- , arbEdgeAttrs- ) where--import Data.GraphViz.Testing.Instances.Helpers--import Data.GraphViz.Attributes.Complete-import Data.GraphViz.Attributes.Internal(compassLookup)-import Data.GraphViz.State(initialState, layerSep)-import Data.GraphViz.Util(bool)--import Test.QuickCheck--import Data.List(nub, delete, groupBy)-import qualified Data.Map as Map-import qualified Data.Text.Lazy as T-import Data.Text.Lazy(Text)-import Control.Monad(liftM, liftM2, liftM3, liftM4)---- -------------------------------------------------------------------------------- Defining Arbitrary instances for Attributes--arbGraphAttrs :: Gen Attributes-arbGraphAttrs = arbAttrs usedByGraphs--arbSubGraphAttrs :: Gen Attributes-arbSubGraphAttrs = arbAttrs usedBySubGraphs--arbClusterAttrs :: Gen Attributes-arbClusterAttrs = arbAttrs usedByClusters--arbNodeAttrs :: Gen Attributes-arbNodeAttrs = arbAttrs usedByNodes--arbEdgeAttrs :: Gen Attributes-arbEdgeAttrs = arbAttrs usedByEdges--arbAttrs :: (Attribute -> Bool) -> Gen Attributes-arbAttrs p = liftM (filter p) arbList--instance Arbitrary Attribute where- arbitrary = oneof [ liftM Damping arbitrary- , liftM K arbitrary- , liftM URL arbitrary- , liftM ArrowHead arbitrary- , liftM ArrowSize arbitrary- , liftM ArrowTail arbitrary- , liftM Aspect arbitrary- , liftM Bb arbitrary- , liftM BgColor arbitrary- , liftM Center arbitrary- , liftM ClusterRank arbitrary- , liftM ColorScheme arbitrary- , liftM Color arbList- , liftM Comment arbitrary- , liftM Compound arbitrary- , liftM Concentrate arbitrary- , liftM Constraint arbitrary- , liftM Decorate arbitrary- , liftM DefaultDist arbitrary- , liftM Dimen arbitrary- , liftM Dim arbitrary- , liftM Dir arbitrary- , liftM DirEdgeConstraints arbitrary- , liftM Distortion arbitrary- , liftM DPI arbitrary- , liftM EdgeURL arbitrary- , liftM EdgeTarget arbitrary- , liftM EdgeTooltip arbitrary- , liftM Epsilon arbitrary- , liftM ESep arbitrary- , liftM FillColor arbitrary- , liftM FixedSize arbitrary- , liftM FontColor arbitrary- , liftM FontName arbitrary- , liftM FontNames arbitrary- , liftM FontPath arbitrary- , liftM FontSize arbitrary- , liftM Group arbitrary- , liftM HeadURL arbitrary- , liftM HeadClip arbitrary- , liftM HeadLabel arbitrary- , liftM HeadPort arbitrary- , liftM HeadTarget arbitrary- , liftM HeadTooltip arbitrary- , liftM Height arbitrary- , liftM ID arbitrary- , liftM Image arbitrary- , liftM ImageScale arbitrary- , liftM LabelURL arbitrary- , liftM LabelAngle arbitrary- , liftM LabelDistance arbitrary- , liftM LabelFloat arbitrary- , liftM LabelFontColor arbitrary- , liftM LabelFontName arbitrary- , liftM LabelFontSize arbitrary- , liftM LabelJust arbitrary- , liftM LabelLoc arbitrary- , liftM LabelTarget arbitrary- , liftM LabelTooltip arbitrary- , liftM Label arbitrary- , liftM Landscape arbitrary- , liftM LayerSep arbitrary- , liftM Layers arbitrary- , liftM Layer arbitrary- , liftM Layout arbitrary- , liftM Len arbitrary- , liftM LevelsGap arbitrary- , liftM Levels arbitrary- , liftM LHead arbitrary- , liftM LPos arbitrary- , liftM LTail arbitrary- , liftM Margin arbitrary- , liftM MaxIter arbitrary- , liftM MCLimit arbitrary- , liftM MinDist arbitrary- , liftM MinLen arbitrary- , liftM Model arbitrary- , liftM Mode arbitrary- , liftM Mosek arbitrary- , liftM NodeSep arbitrary- , liftM NoJustify arbitrary- , liftM Normalize arbitrary- , liftM Nslimit1 arbitrary- , liftM Nslimit arbitrary- , liftM Ordering arbitrary- , liftM Orientation arbitrary- , liftM OutputOrder arbitrary- , liftM OverlapScaling arbitrary- , liftM Overlap arbitrary- , liftM PackMode arbitrary- , liftM Pack arbitrary- , liftM Pad arbitrary- , liftM PageDir arbitrary- , liftM Page arbitrary- , liftM PenColor arbitrary- , liftM PenWidth arbitrary- , liftM Peripheries arbitrary- , liftM Pin arbitrary- , liftM Pos arbitrary- , liftM QuadTree arbitrary- , liftM Quantum arbitrary- , liftM RankDir arbitrary- , liftM RankSep arbList- , liftM Rank arbitrary- , liftM Ratio arbitrary- , liftM Rects arbList- , liftM Regular arbitrary- , liftM ReMinCross arbitrary- , liftM RepulsiveForce arbitrary- , liftM Root arbitrary- , liftM Rotate arbitrary- , liftM SameHead arbitrary- , liftM SameTail arbitrary- , liftM SamplePoints arbitrary- , liftM SearchSize arbitrary- , liftM Sep arbitrary- , liftM ShapeFile arbitrary- , liftM Shape arbitrary- , liftM ShowBoxes arbitrary- , liftM Sides arbitrary- , liftM Size arbitrary- , liftM Skew arbitrary- , liftM Smoothing arbitrary- , liftM SortV arbitrary- , liftM Splines arbitrary- , liftM Start arbitrary- , liftM StyleSheet arbitrary- , liftM Style arbList- , liftM TailURL arbitrary- , liftM TailClip arbitrary- , liftM TailLabel arbitrary- , liftM TailPort arbitrary- , liftM TailTarget arbitrary- , liftM TailTooltip arbitrary- , liftM Target arbitrary- , liftM Tooltip arbitrary- , liftM TrueColor arbitrary- , liftM Vertices arbList- , liftM ViewPort arbitrary- , liftM VoroMargin arbitrary- , liftM Weight arbitrary- , liftM Width arbitrary- , liftM Z arbitrary- , liftM2 UnknownAttribute (suchThat arbIDString validUnknown) arbitrary- ]-- shrink (Damping v) = map Damping $ shrink v- shrink (K v) = map K $ shrink v- shrink (URL v) = map URL $ shrink v- shrink (ArrowHead v) = map ArrowHead $ shrink v- shrink (ArrowSize v) = map ArrowSize $ shrink v- shrink (ArrowTail v) = map ArrowTail $ shrink v- shrink (Aspect v) = map Aspect $ shrink v- shrink (Bb v) = map Bb $ shrink v- shrink (BgColor v) = map BgColor $ shrink v- shrink (Center v) = map Center $ shrink v- shrink (ClusterRank v) = map ClusterRank $ shrink v- shrink (ColorScheme v) = map ColorScheme $ shrink v- shrink (Color v) = map Color $ nonEmptyShrinks v- shrink (Comment v) = map Comment $ shrink v- shrink (Compound v) = map Compound $ shrink v- shrink (Concentrate v) = map Concentrate $ shrink v- shrink (Constraint v) = map Constraint $ shrink v- shrink (Decorate v) = map Decorate $ shrink v- shrink (DefaultDist v) = map DefaultDist $ shrink v- shrink (Dimen v) = map Dimen $ shrink v- shrink (Dim v) = map Dim $ shrink v- shrink (Dir v) = map Dir $ shrink v- shrink (DirEdgeConstraints v) = map DirEdgeConstraints $ shrink v- shrink (Distortion v) = map Distortion $ shrink v- shrink (DPI v) = map DPI $ shrink v- shrink (EdgeURL v) = map EdgeURL $ shrink v- shrink (EdgeTarget v) = map EdgeTarget $ shrink v- shrink (EdgeTooltip v) = map EdgeTooltip $ shrink v- shrink (Epsilon v) = map Epsilon $ shrink v- shrink (ESep v) = map ESep $ shrink v- shrink (FillColor v) = map FillColor $ shrink v- shrink (FixedSize v) = map FixedSize $ shrink v- shrink (FontColor v) = map FontColor $ shrink v- shrink (FontName v) = map FontName $ shrink v- shrink (FontNames v) = map FontNames $ shrink v- shrink (FontPath v) = map FontPath $ shrink v- shrink (FontSize v) = map FontSize $ shrink v- shrink (Group v) = map Group $ shrink v- shrink (HeadURL v) = map HeadURL $ shrink v- shrink (HeadClip v) = map HeadClip $ shrink v- shrink (HeadLabel v) = map HeadLabel $ shrink v- shrink (HeadPort v) = map HeadPort $ shrink v- shrink (HeadTarget v) = map HeadTarget $ shrink v- shrink (HeadTooltip v) = map HeadTooltip $ shrink v- shrink (Height v) = map Height $ shrink v- shrink (ID v) = map ID $ shrink v- shrink (Image v) = map Image $ shrink v- shrink (ImageScale v) = map ImageScale $ shrink v- shrink (LabelURL v) = map LabelURL $ shrink v- shrink (LabelAngle v) = map LabelAngle $ shrink v- shrink (LabelDistance v) = map LabelDistance $ shrink v- shrink (LabelFloat v) = map LabelFloat $ shrink v- shrink (LabelFontColor v) = map LabelFontColor $ shrink v- shrink (LabelFontName v) = map LabelFontName $ shrink v- shrink (LabelFontSize v) = map LabelFontSize $ shrink v- shrink (LabelJust v) = map LabelJust $ shrink v- shrink (LabelLoc v) = map LabelLoc $ shrink v- shrink (LabelTarget v) = map LabelTarget $ shrink v- shrink (LabelTooltip v) = map LabelTooltip $ shrink v- shrink (Label v) = map Label $ shrink v- shrink (Landscape v) = map Landscape $ shrink v- shrink (LayerSep v) = map LayerSep $ shrink v- shrink (Layers v) = map Layers $ shrink v- shrink (Layer v) = map Layer $ shrink v- shrink (Layout v) = map Layout $ shrink v- shrink (Len v) = map Len $ shrink v- shrink (LevelsGap v) = map LevelsGap $ shrink v- shrink (Levels v) = map Levels $ shrink v- shrink (LHead v) = map LHead $ shrink v- shrink (LPos v) = map LPos $ shrink v- shrink (LTail v) = map LTail $ shrink v- shrink (Margin v) = map Margin $ shrink v- shrink (MaxIter v) = map MaxIter $ shrink v- shrink (MCLimit v) = map MCLimit $ shrink v- shrink (MinDist v) = map MinDist $ shrink v- shrink (MinLen v) = map MinLen $ shrink v- shrink (Model v) = map Model $ shrink v- shrink (Mode v) = map Mode $ shrink v- shrink (Mosek v) = map Mosek $ shrink v- shrink (NodeSep v) = map NodeSep $ shrink v- shrink (NoJustify v) = map NoJustify $ shrink v- shrink (Normalize v) = map Normalize $ shrink v- shrink (Nslimit1 v) = map Nslimit1 $ shrink v- shrink (Nslimit v) = map Nslimit $ shrink v- shrink (Ordering v) = map Ordering $ shrink v- shrink (Orientation v) = map Orientation $ shrink v- shrink (OutputOrder v) = map OutputOrder $ shrink v- shrink (OverlapScaling v) = map OverlapScaling $ shrink v- shrink (Overlap v) = map Overlap $ shrink v- shrink (PackMode v) = map PackMode $ shrink v- shrink (Pack v) = map Pack $ shrink v- shrink (Pad v) = map Pad $ shrink v- shrink (PageDir v) = map PageDir $ shrink v- shrink (Page v) = map Page $ shrink v- shrink (PenColor v) = map PenColor $ shrink v- shrink (PenWidth v) = map PenWidth $ shrink v- shrink (Peripheries v) = map Peripheries $ shrink v- shrink (Pin v) = map Pin $ shrink v- shrink (Pos v) = map Pos $ shrink v- shrink (QuadTree v) = map QuadTree $ shrink v- shrink (Quantum v) = map Quantum $ shrink v- shrink (RankDir v) = map RankDir $ shrink v- shrink (RankSep v) = map RankSep $ nonEmptyShrinks v- shrink (Rank v) = map Rank $ shrink v- shrink (Ratio v) = map Ratio $ shrink v- shrink (Rects v) = map Rects $ nonEmptyShrinks v- shrink (Regular v) = map Regular $ shrink v- shrink (ReMinCross v) = map ReMinCross $ shrink v- shrink (RepulsiveForce v) = map RepulsiveForce $ shrink v- shrink (Root v) = map Root $ shrink v- shrink (Rotate v) = map Rotate $ shrink v- shrink (SameHead v) = map SameHead $ shrink v- shrink (SameTail v) = map SameTail $ shrink v- shrink (SamplePoints v) = map SamplePoints $ shrink v- shrink (SearchSize v) = map SearchSize $ shrink v- shrink (Sep v) = map Sep $ shrink v- shrink (ShapeFile v) = map ShapeFile $ shrink v- shrink (Shape v) = map Shape $ shrink v- shrink (ShowBoxes v) = map ShowBoxes $ shrink v- shrink (Sides v) = map Sides $ shrink v- shrink (Size v) = map Size $ shrink v- shrink (Skew v) = map Skew $ shrink v- shrink (Smoothing v) = map Smoothing $ shrink v- shrink (SortV v) = map SortV $ shrink v- shrink (Splines v) = map Splines $ shrink v- shrink (Start v) = map Start $ shrink v- shrink (StyleSheet v) = map StyleSheet $ shrink v- shrink (Style v) = map Style $ nonEmptyShrinks v- shrink (TailURL v) = map TailURL $ shrink v- shrink (TailClip v) = map TailClip $ shrink v- shrink (TailLabel v) = map TailLabel $ shrink v- shrink (TailPort v) = map TailPort $ shrink v- shrink (TailTarget v) = map TailTarget $ shrink v- shrink (TailTooltip v) = map TailTooltip $ shrink v- shrink (Target v) = map Target $ shrink v- shrink (Tooltip v) = map Tooltip $ shrink v- shrink (TrueColor v) = map TrueColor $ shrink v- shrink (Vertices v) = map Vertices $ nonEmptyShrinks v- shrink (ViewPort v) = map ViewPort $ shrink v- shrink (VoroMargin v) = map VoroMargin $ shrink v- shrink (Weight v) = map Weight $ shrink v- shrink (Width v) = map Width $ shrink v- shrink (Z v) = map Z $ shrink v- shrink (UnknownAttribute a v) = liftM2 UnknownAttribute (liftM (filter validUnknown) shrink a) (shrink v)-{- delete to here -}--instance Arbitrary ArrowType where- arbitrary = liftM AType- -- Arrow specifications have between 1 and 4 elements.- $ sized (\ s -> resize (min s 4) arbList)-- shrink (AType as) = map AType $ nonEmptyShrinks as--instance Arbitrary ArrowShape where- arbitrary = arbBounded--instance Arbitrary ArrowModifier where- arbitrary = liftM2 ArrMod arbitrary arbitrary--instance Arbitrary ArrowFill where- arbitrary = arbBounded--instance Arbitrary ArrowSide where- arbitrary = arbBounded--instance Arbitrary AspectType where- arbitrary = oneof [ liftM RatioOnly arbitrary- , liftM2 RatioPassCount arbitrary posArbitrary- ]-- shrink (RatioOnly d) = map RatioOnly $ shrink d- shrink (RatioPassCount d i) = do ds <- shrink d- is <- shrink i- return $ RatioPassCount ds is--instance Arbitrary Rect where- arbitrary = liftM2 Rect point2D point2D-- shrink (Rect p1 p2) = do p1s <- shrink p1- p2s <- shrink p2- return $ Rect p1s p2s--instance Arbitrary Point where- -- Pretty sure points have to be positive...- arbitrary = liftM4 Point posArbitrary posArbitrary posZ arbitrary- where- posZ = frequency [(1, return Nothing), (3, liftM Just posArbitrary)]-- shrink p = do x' <- shrink $ xCoord p- y' <- shrink $ yCoord p- z' <- shrinkM $ zCoord p- return $ Point x' y' z' False--point2D :: Gen Point-point2D = liftM2 createPoint posArbitrary posArbitrary--instance Arbitrary ClusterMode where- arbitrary = arbBounded--instance Arbitrary DirType where- arbitrary = arbBounded--instance Arbitrary DEConstraints where- arbitrary = arbBounded--instance Arbitrary DPoint where- arbitrary = oneof [ liftM DVal arbitrary- , liftM PVal point2D- ]-- shrink (DVal d) = map DVal $ shrink d- shrink (PVal p) = map PVal $ shrink p--instance Arbitrary ModeType where- arbitrary = arbBounded--instance Arbitrary Model where- arbitrary = arbBounded--instance Arbitrary Label where- arbitrary = oneof [ liftM StrLabel arbitrary- , liftM HtmlLabel arbitrary- , liftM RecordLabel $ suchThat arbList notStr- ]-- shrink (StrLabel str) = map StrLabel $ shrink str- shrink (HtmlLabel html) = map HtmlLabel $ shrink html- shrink (RecordLabel fs) = map RecordLabel . filter notStr $ shrinkList fs--notStr :: RecordFields -> Bool-notStr [FieldLabel{}] = False -- Just in case-notStr _ = True--arbField :: Bool -> Int -> Gen RecordField-arbField b s = resize s'- . oneof- . bool id ((:) genFlipped) b- $ [ liftM2 LabelledTarget arbitrary arbitrary- , liftM PortName arbitrary- , liftM FieldLabel arbitrary- ]- where- genFlipped = liftM FlipFields- $ listOf1 (sized $ arbField False)- s' = min 3 s--instance Arbitrary RecordField where- arbitrary = sized (arbField True)-- shrink (LabelledTarget f l) = [PortName f, FieldLabel l]- shrink (PortName f) = map PortName $ shrink f- shrink (FieldLabel l) = map FieldLabel $ shrink l- shrink (FlipFields fs) = map FlipFields $ shrinkList fs--instance Arbitrary Overlap where- arbitrary = oneof [ simpleOverlap- , liftM PrismOverlap arbitrary- ]- where- -- Have to do this by hand since Overlap can't have Bounded and- -- Enum instances- simpleOverlap = elements [ KeepOverlaps- , RemoveOverlaps- , ScaleOverlaps- , ScaleXYOverlaps- , CompressOverlap- , VpscOverlap- , IpsepOverlap- ]-- shrink (PrismOverlap mi) = map PrismOverlap $ shrink mi- shrink _ = []--instance Arbitrary LayerSep where- -- Since Arbitrary isn't stateful, we can't generate an arbitrary- -- one because of arbLayerName- arbitrary = return . LSep . T.pack $ layerSep initialState--instance Arbitrary LayerList where- arbitrary = liftM LL $ listOf1 arbName- where- arbName = suchThat arbitrary isLayerName-- isLayerName LRName{} = True- isLayerName _ = False-- shrink (LL ll) = map LL $ nonEmptyShrinks ll--instance Arbitrary LayerRange where- arbitrary = oneof [ liftM LRID arbitrary- , liftM2 LRS arbitrary arbitrary- ]-- shrink (LRID nm) = map LRID $ shrink nm- shrink (LRS l1 l2) = [LRID l1, LRID l2]--instance Arbitrary LayerID where- arbitrary = oneof [ return AllLayers- , liftM LRInt arbitrary- , liftM LRName $ suchThat arbLayerName lrnameCheck- ]-- shrink AllLayers = []- shrink (LRInt i) = map LRInt $ shrink i- shrink (LRName nm) = map LRName- . filter lrnameCheck- $ shrink nm--lrnameCheck :: Text -> Bool-lrnameCheck = (/=) "all"--instance Arbitrary OutputMode where- arbitrary = arbBounded--instance Arbitrary Pack where- arbitrary = oneof [ return DoPack- , return DontPack- , liftM PackMargin arbitrary- ]-- shrink (PackMargin m) = map PackMargin $ shrink m- shrink _ = []--instance Arbitrary PackMode where- arbitrary = oneof [ return PackNode- , return PackClust- , return PackGraph- , liftM3 PackArray arbitrary arbitrary arbitrary- ]-- shrink (PackArray c u mi) = map (PackArray c u) $ shrink mi- shrink _ = []--instance Arbitrary Pos where- arbitrary = oneof [ liftM PointPos arbitrary- -- A single spline with only one point overall- -- is just a point...- , liftM SplinePos $ suchThat arbList validSplineList- ]-- shrink (PointPos p) = map PointPos $ shrink p- shrink (SplinePos ss) = map SplinePos . filter validSplineList- $ nonEmptyShrinks ss--validSplineList :: [Spline] -> Bool-validSplineList [Spline Nothing Nothing [_]] = False-validSplineList _ = True--instance Arbitrary Spline where- arbitrary = liftM3 Spline arbitrary arbitrary- -- list of points must have length of 1 mod 3- $ suchThat arbitrary ((==) 1 . flip mod 3 . length)-- shrink (Spline Nothing Nothing [p]) = map (Spline Nothing Nothing . return)- $ shrink p- -- We're not going to be shrinking the points in the list; just- -- making sure that its length is === 1 mod 3- shrink (Spline ms me ps) = do mss <- shrinkM ms- mes <- shrinkM me- pss <- rem2 ps- return $ Spline mss mes pss- where-- rem1 [] = []- rem1 (a:as) = as : map (a:) (rem1 as)-- rem2 = nub . concatMap rem1 . rem1--instance Arbitrary EdgeType where- arbitrary = arbBounded--instance Arbitrary PageDir where- arbitrary = arbBounded--instance Arbitrary QuadType where- arbitrary = arbBounded--instance Arbitrary Root where- arbitrary = oneof [ return IsCentral- , return NotCentral- , liftM NodeName arbitrary- ]-- shrink (NodeName nm) = map NodeName $ shrink nm- shrink _ = []--instance Arbitrary RankType where- arbitrary = arbBounded--instance Arbitrary RankDir where- arbitrary = arbBounded--instance Arbitrary Shape where- arbitrary = arbBounded--instance Arbitrary SmoothType where- arbitrary = arbBounded--instance Arbitrary StartType where- arbitrary = oneof [ liftM StartStyle arbitrary- , liftM StartSeed arbitrary- , liftM2 StartStyleSeed arbitrary arbitrary- ]-- shrink StartStyle{} = [] -- No shrinks for STStyle- shrink (StartSeed ss) = map StartSeed $ shrink ss- shrink (StartStyleSeed st ss) = map (StartStyleSeed st) $ shrink ss--instance Arbitrary STStyle where- arbitrary = arbBounded--instance Arbitrary StyleItem where- arbitrary = liftM2 SItem arbitrary (listOf arbStyleName)-- -- Can't use this because of what shrink on the individual strings- -- might do.- -- shrink (SItem sn opts) = map (SItem sn) $ shrink opts--instance Arbitrary StyleName where- arbitrary = oneof [ defaultStyles- , liftM DD $ suchThat arbStyleName notDefault- ]- where- defaultStyles = elements [ Dashed- , Dotted- , Bold- , Invisible- , Filled- , Diagonals- , Rounded- ]- notDefault = flip notElem [ "dashed"- , "dotted"- , "solid"- , "bold"- , "invis"- , "filled"- , "diagonals"- , "rounded"- ]--instance Arbitrary PortPos where- arbitrary = oneof [ liftM2 LabelledPort arbitrary arbitrary- , liftM CompassPoint arbitrary- ]-- shrink (LabelledPort pn mc) = map (flip LabelledPort mc) $ shrink pn- shrink _ = []--instance Arbitrary CompassPoint where- arbitrary = arbBounded--instance Arbitrary ViewPort where- arbitrary = liftM4 VP arbitrary arbitrary arbitrary arbitrary-- shrink (VP w h z f) = case sVPs of- [_] -> []- _ -> sVPs- where- sVPs = do ws <- shrink w- hs <- shrink h- zs <- shrink z- fs <- shrinkM f- return $ VP ws hs zs fs--instance Arbitrary FocusType where- arbitrary = oneof [ liftM XY arbitrary- , liftM NodeFocus $ suchThat arbitrary (T.all ((/=) ','))- ]-- shrink (XY p) = map XY $ shrink p- shrink (NodeFocus str) = map NodeFocus $ shrink str--instance Arbitrary VerticalPlacement where- arbitrary = arbBounded--instance Arbitrary ScaleType where- arbitrary = arbBounded--instance Arbitrary Justification where- arbitrary = arbBounded--instance Arbitrary Ratios where- arbitrary = oneof [ liftM AspectRatio posArbitrary- , namedRats- ]- where- namedRats = elements [ FillRatio- , CompressRatio- , ExpandRatio- , AutoRatio- ]-- shrink (AspectRatio r) = map (AspectRatio . fromPositive)- . shrink $ Positive r- shrink _ = []--instance Arbitrary ColorScheme where- arbitrary = oneof [ return X11- , liftM Brewer arbitrary- ]-- shrink (Brewer bs) = map Brewer $ shrink bs- shrink _ = []--instance Arbitrary BrewerScheme where- arbitrary = liftM2 BScheme arbitrary arbitrary -- Not /quite/ right, but close enough-- shrink (BScheme nm l) = map (BScheme nm) $ shrink l--instance Arbitrary BrewerName where- arbitrary = arbBounded--instance Arbitrary Color where- arbitrary = oneof [ liftM3 RGB arbitrary arbitrary arbitrary- , liftM4 RGBA arbitrary arbitrary arbitrary arbitrary- , liftM3 HSV zeroOne zeroOne zeroOne- , liftM X11Color arbitrary- -- Not quite right as the values can get too- -- high/low, but should suffice for- -- printing/parsing purposes.- , liftM2 BrewerColor arbitrary arbitrary- ]- where- zeroOne = choose (0,1)-- shrink (RGB r g b) = do rs <- shrink r- gs <- shrink g- bs <- shrink b- return $ RGB rs gs bs- shrink (RGBA r g b a) = RGB r g b- : do rs <- shrink r- gs <- shrink g- bs <- shrink b- as <- shrink a- return $ RGBA rs gs bs as- shrink (BrewerColor s c) = map (BrewerColor s) $ shrink c- shrink _ = [] -- Shrinking 0<=h,s,v<=1 does nothing--instance Arbitrary X11Color where- arbitrary = arbBounded--instance Arbitrary HtmlLabel where- arbitrary = sized $ arbHtml True-- shrink ht@(HtmlText txts) = delete ht . map HtmlText $ shrinkL txts- shrink (HtmlTable tbl) = map HtmlTable $ shrink tbl---- Note: for the most part, HtmlLabel values are very repetitive (and--- furthermore, they end up chewing a large amount of memory). As--- such, use resize to limit how large the actual HtmlLabel values--- become.-arbHtml :: Bool -> Int -> Gen HtmlLabel-arbHtml table s = resize' $ frequency options- where- s' = min 2 s- resize' = if not table- then resize s'- else id- allowTable = if table- then (:) (1, arbTbl)- else id- arbTbl = liftM HtmlTable arbitrary- options = allowTable [ (20, liftM HtmlText . sized $ arbHtmlTexts table) ]--arbHtmlTexts :: Bool -> Int -> Gen HtmlText-arbHtmlTexts fnt s = liftM simplifyHtmlText- . resize s'- . listOf1- . sized- $ arbHtmlText fnt- where- s' = min s 10---- When parsing, all textual characters are parsed together; thus,--- make sure we generate them like that.-simplifyHtmlText :: HtmlText -> HtmlText-simplifyHtmlText = map head . groupBy sameType- where- sameType HtmlStr{} HtmlStr{} = True- sameType HtmlNewline{} HtmlNewline{} = True- sameType HtmlFont{} HtmlFont{} = True- sameType _ _ = False--instance Arbitrary HtmlTextItem where- arbitrary = sized $ arbHtmlText True-- shrink (HtmlStr str) = map HtmlStr $ shrink str- shrink (HtmlNewline as) = map HtmlNewline $ shrink as- shrink hf@(HtmlFont as txt) = do as' <- shrink as- txt' <- shrinkL txt- returnCheck hf $ HtmlFont as' txt'--arbHtmlText :: Bool -> Int -> Gen HtmlTextItem-arbHtmlText font s = frequency options- where- allowFonts = if font- then (:) (1, arbFont)- else id- s' = min 2 s- arbFont = liftM2 HtmlFont arbitrary . resize s' . sized $ arbHtmlTexts False- options = allowFonts [ (10, liftM HtmlStr arbitrary)- , (10, liftM HtmlNewline arbitrary)- ]--instance Arbitrary HtmlTable where- arbitrary = liftM3 HTable arbitrary arbitrary (sized arbRows)- where- arbRows s = resize (min s 10) arbList-- shrink (HTable fas as rs) = map (HTable fas as) $ shrinkL rs--instance Arbitrary HtmlRow where- arbitrary = liftM HtmlRow arbList-- shrink hr@(HtmlRow cs) = delete hr . map HtmlRow $ shrinkL cs--instance Arbitrary HtmlCell where- arbitrary = oneof [ liftM2 HtmlLabelCell arbitrary . sized $ arbHtml False- , liftM2 HtmlImgCell arbitrary arbitrary- ]-- shrink lc@(HtmlLabelCell as h) = do as' <- shrink as- h' <- shrink h- returnCheck lc $ HtmlLabelCell as' h'- shrink (HtmlImgCell as ic) = map (HtmlImgCell as) $ shrink ic--instance Arbitrary HtmlImg where- arbitrary = liftM HtmlImg arbitrary--instance Arbitrary HtmlAttribute where- arbitrary = oneof [ liftM HtmlAlign arbitrary- , liftM HtmlBAlign arbitrary- , liftM HtmlBGColor arbitrary- , liftM HtmlBorder arbitrary- , liftM HtmlCellBorder arbitrary- , liftM HtmlCellPadding arbitrary- , liftM HtmlCellSpacing arbitrary- , liftM HtmlColor arbitrary- , liftM HtmlColSpan arbitrary- , liftM HtmlFace arbitrary- , liftM HtmlFixedSize arbitrary- , liftM HtmlHeight arbitrary- , liftM HtmlHRef arbitrary- , liftM HtmlPointSize arbitrary- , liftM HtmlPort arbitrary- , liftM HtmlRowSpan arbitrary- , liftM HtmlScale arbitrary- , liftM HtmlSrc arbString- , liftM HtmlTarget arbitrary- , liftM HtmlTitle arbitrary- , liftM HtmlVAlign arbitrary- , liftM HtmlWidth arbitrary- ]-- shrink (HtmlAlign v) = map HtmlAlign $ shrink v- shrink (HtmlBAlign v) = map HtmlBAlign $ shrink v- shrink (HtmlBGColor v) = map HtmlBGColor $ shrink v- shrink (HtmlBorder v) = map HtmlBorder $ shrink v- shrink (HtmlCellBorder v) = map HtmlCellBorder $ shrink v- shrink (HtmlCellPadding v) = map HtmlCellPadding $ shrink v- shrink (HtmlCellSpacing v) = map HtmlCellSpacing $ shrink v- shrink (HtmlColor v) = map HtmlColor $ shrink v- shrink (HtmlColSpan v) = map HtmlColSpan $ shrink v- shrink (HtmlFace v) = map HtmlFace $ shrink v- shrink (HtmlFixedSize v) = map HtmlFixedSize $ shrink v- shrink (HtmlHeight v) = map HtmlHeight $ shrink v- shrink (HtmlHRef v) = map HtmlHRef $ shrink v- shrink (HtmlPointSize v) = map HtmlPointSize $ shrink v- shrink (HtmlPort v) = map HtmlPort $ shrink v- shrink (HtmlRowSpan v) = map HtmlRowSpan $ shrink v- shrink (HtmlScale v) = map HtmlScale $ shrink v- shrink (HtmlSrc v) = map HtmlSrc $ shrinkString v- shrink (HtmlTarget v) = map HtmlTarget $ shrink v- shrink (HtmlTitle v) = map HtmlTitle $ shrink v- shrink (HtmlVAlign v) = map HtmlVAlign $ shrink v- shrink (HtmlWidth v) = map HtmlWidth $ shrink v--instance Arbitrary HtmlScale where- arbitrary = arbBounded--instance Arbitrary HtmlAlign where- arbitrary = arbBounded--instance Arbitrary HtmlVAlign where- arbitrary = arbBounded--instance Arbitrary PortName where- arbitrary = liftM PN- $ suchThat arbitrary (liftM2 (&&) (T.all (/=':')) notCP)-- shrink = map PN . filter notCP . shrink . portName--notCP :: Text -> Bool-notCP = flip Map.notMember compassLookup
− Data/GraphViz/Testing/Instances/Canonical.hs
@@ -1,57 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}--{- |- Module : Data.GraphViz.Testing.Instances.Canonical- Description : Canonical dot graph instances for Arbitrary.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Canonical where--import Data.GraphViz.Testing.Instances.Common-import Data.GraphViz.Testing.Instances.Helpers--import Data.GraphViz.Types.Canonical-import Data.GraphViz.Util(bool)--import Test.QuickCheck--import Control.Monad(liftM2, liftM4)---- -------------------------------------------------------------------------------- Defining Arbitrary instances for the overall types--instance (Eq n, Arbitrary n) => Arbitrary (DotGraph n) where- arbitrary = liftM4 DotGraph arbitrary arbitrary arbitrary arbitrary-- shrink (DotGraph str dir gid stmts) = map (DotGraph str dir gid)- $ shrink stmts--instance (Eq n, Arbitrary n) => Arbitrary (DotStatements n) where- arbitrary = sized (arbDS gaGraph True)-- shrink ds@(DotStmts gas sgs ns es) = do gas' <- shrinkL gas- sgs' <- shrinkL sgs- ns' <- shrinkL ns- es' <- shrinkL es- returnCheck ds- $ DotStmts gas' sgs' ns' es'---- | If 'True', generate 'DotSubGraph's; otherwise don't.-arbDS :: (Arbitrary n, Eq n) => Gen GlobalAttributes -> Bool- -> Int -> Gen (DotStatements n)-arbDS ga haveSGs s = liftM4 DotStmts (listOf ga) genSGs arbitrary arbitrary- where- s' = min s 2- genSGs = if haveSGs- then resize s' arbitrary- else return []--instance (Eq n, Arbitrary n) => Arbitrary (DotSubGraph n) where- arbitrary = do isClust <- arbitrary- let ga = bool gaSubGraph gaClusters isClust- liftM2 (DotSG isClust) arbitrary (sized $ arbDS ga False)-- shrink (DotSG isCl mid stmts) = map (DotSG isCl mid) $ shrink stmts
− Data/GraphViz/Testing/Instances/Common.hs
@@ -1,71 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}--{- |- Module : Data.GraphViz.Testing.Instances.Common()- Description : Attribute instances for Arbitrary.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Common- ( gaGraph- , gaSubGraph- , gaClusters- ) where--import Data.GraphViz.Testing.Instances.Attributes-import Data.GraphViz.Testing.Instances.Helpers--import Data.GraphViz.Attributes(Attributes)-import Data.GraphViz.Types.Common( DotNode(..), DotEdge(..)- , GlobalAttributes(..), GraphID(..))--import Test.QuickCheck--import Control.Monad(liftM, liftM2, liftM3)---- -------------------------------------------------------------------------------- Common values--instance Arbitrary GraphID where- arbitrary = oneof [ liftM Str arbitrary- , liftM Int arbitrary- , liftM Dbl $ suchThat arbitrary notInt- ]-- shrink (Str s) = map Str $ shrink s- shrink (Int i) = map Int $ shrink i- shrink (Dbl d) = map Dbl $ filter notInt $ shrink d--instance (Arbitrary n) => Arbitrary (DotNode n) where- arbitrary = liftM2 DotNode arbitrary arbNodeAttrs-- shrink (DotNode n as) = map (DotNode n) $ shrinkList as--instance (Arbitrary n) => Arbitrary (DotEdge n) where- arbitrary = liftM3 DotEdge arbitrary arbitrary arbEdgeAttrs-- shrink (DotEdge f t as) = map (DotEdge f t) $ shrinkList as--instance Arbitrary GlobalAttributes where- arbitrary = gaGraph-- shrink (GraphAttrs atts) = map GraphAttrs $ nonEmptyShrinks atts- shrink (NodeAttrs atts) = map NodeAttrs $ nonEmptyShrinks atts- shrink (EdgeAttrs atts) = map EdgeAttrs $ nonEmptyShrinks atts--gaGraph :: Gen GlobalAttributes-gaGraph = gaFor arbGraphAttrs--gaSubGraph :: Gen GlobalAttributes-gaSubGraph = gaFor arbSubGraphAttrs--gaClusters :: Gen GlobalAttributes-gaClusters = gaFor arbClusterAttrs--gaFor :: Gen Attributes -> Gen GlobalAttributes-gaFor g = oneof [ liftM GraphAttrs g- , liftM NodeAttrs arbNodeAttrs- , liftM EdgeAttrs arbEdgeAttrs- ]
− Data/GraphViz/Testing/Instances/FGL.hs
@@ -1,47 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE FlexibleInstances #-}--{- |- Module : Data.GraphViz.Testing.Instances.FGL- Description : 'Arbitrary' instances for FGL graphs.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- This module defines the 'Arbitrary' instances for FGL 'DynGraph'- graphs. Note that this instance cannot be in- "Data.GraphViz.Testing.Instances", as this instance requires the- FlexibleInstances extension, which makes some of the other- 'Arbitrary' instances fail to type-check.--}-module Data.GraphViz.Testing.Instances.FGL() where--import Test.QuickCheck--import Data.GraphViz.Util(uniq)--import Data.Graph.Inductive.Graph(Graph, mkGraph, nodes, delNode)-import Data.List(sortBy)-import Data.Function(on)-import Control.Monad(liftM, liftM3)---- -------------------------------------------------------------------------------- Arbitrary instance for FGL graphs.--instance (Graph g, Arbitrary n, Arbitrary e) => Arbitrary (g n e) where- arbitrary = do ns <- suchThat genNs (not . null)- let nGen = elements ns- lns <- mapM makeLNode ns- les <- liftM (sortBy (compare `on` toE)) . listOf- $ makeLEdge nGen- return $ mkGraph lns les- where- genNs = liftM uniq arbitrary- toE (f,t,_) = (f,t)- makeLNode n = liftM ((,) n) arbitrary- makeLEdge nGen = liftM3 (,,) nGen nGen arbitrary-- shrink gr = case nodes gr of- -- Need to have at least 2 nodes before we delete one!- ns@(_:_:_) -> map (`delNode` gr) ns- _ -> []
− Data/GraphViz/Testing/Instances/Generalised.hs
@@ -1,77 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}--{- |- Module : Data.GraphViz.Testing.Instances.Generalised- Description : Generalised dot graph instances for Arbitrary.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Generalised where--import Data.GraphViz.Testing.Instances.Attributes()-import Data.GraphViz.Testing.Instances.Common-import Data.GraphViz.Testing.Instances.Helpers()--import Data.GraphViz.Types.Generalised-import Data.GraphViz.Util(bool)--import Test.QuickCheck--import qualified Data.Sequence as Seq-import Control.Monad(liftM, liftM2, liftM4)---- -------------------------------------------------------------------------------- Defining Arbitrary instances for the generalised types--instance (Arbitrary n) => Arbitrary (DotGraph n) where- arbitrary = liftM4 DotGraph arbitrary arbitrary arbitrary genDStmts-- shrink (DotGraph str dir gid stmts) = map (DotGraph str dir gid)- $ shrinkDStmts stmts--genDStmts :: (Arbitrary n) => Gen (DotStatements n)-genDStmts = sized (arbDS gaGraph True)--genDStmt :: (Arbitrary n) => Gen GlobalAttributes -> Bool- -> Gen (DotStatement n)-genDStmt ga haveSGs = frequency- . bool id ((1,genSG):) haveSGs- $ [ (3, liftM GA ga)- , (5, liftM DN arbitrary)- , (7, liftM DE arbitrary)- ]- where- genSG = liftM SG arbitrary--shrinkDStmts :: (Arbitrary n) => DotStatements n -> [DotStatements n]-shrinkDStmts gds- | len == 1 = map Seq.singleton . shrink $ Seq.index gds 0- | otherwise = [gds1, gds2]- where- len = Seq.length gds- -- Halve the sequence- (gds1, gds2) = (len `div` 2) `Seq.splitAt` gds--instance (Arbitrary n) => Arbitrary (DotStatement n) where- arbitrary = genDStmt gaGraph True-- shrink (GA ga) = map GA $ shrink ga- shrink (SG sg) = map SG $ shrink sg- shrink (DN dn) = map DN $ shrink dn- shrink (DE de) = map DE $ shrink de---- | If 'True', generate 'GDotSubGraph's; otherwise don't.-arbDS :: (Arbitrary n) => Gen GlobalAttributes -> Bool -> Int -> Gen (DotStatements n)-arbDS ga haveSGs s = liftM Seq.fromList . resize s' . listOf $ genDStmt ga haveSGs- where- s' = min s 10---instance (Arbitrary n) => Arbitrary (DotSubGraph n) where- arbitrary = do isClust <- arbitrary- let ga = bool gaSubGraph gaClusters isClust- liftM2 (DotSG isClust) arbitrary (sized $ arbDS ga False)-- shrink (DotSG isCl mid stmts) = map (DotSG isCl mid) $ shrinkDStmts stmts
− Data/GraphViz/Testing/Instances/Graph.hs
@@ -1,31 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}-{-# LANGUAGE FlexibleInstances #-}--{- |- Module : Data.GraphViz.Testing.Instances.Graph- Description : Graph dot graph instances for Arbitrary.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Graph where--import Data.GraphViz.Testing.Instances.Canonical()--import Data.GraphViz.Types.Graph-import Data.GraphViz.Types(fromCanonical)--import Test.QuickCheck--import Control.Monad(liftM)---- --------------------------------------------------------------------------------- | Can't directly create one of these as it might not match the--- internal format directly; as such, have to use the inefficient--- 'fromCanonical' route.-instance (Arbitrary n, Ord n) => Arbitrary (DotGraph n) where- arbitrary = liftM fromCanonical arbitrary-- shrink = map fromCanonical . shrink . toCanonical
− Data/GraphViz/Testing/Instances/Helpers.hs
@@ -1,138 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_HADDOCK hide #-}-{-# LANGUAGE OverloadedStrings #-}--{- |- Module : Data.GraphViz.Testing.Instances.Helpers- Description : Helper functions for graphviz Arbitrary instances.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com- -}-module Data.GraphViz.Testing.Instances.Helpers where--import Data.GraphViz.Parsing(isNumString)-import Data.GraphViz.State(initialState, layerSep)--import Test.QuickCheck--import qualified Data.Text.Lazy as T-import Data.Text.Lazy(Text)-import Control.Monad(liftM, liftM2)---- -------------------------------------------------------------------------------- Helper Functions--instance Arbitrary Text where- arbitrary = arbText-- shrink = filter validString- . map T.pack . nonEmptyShrinks' . T.unpack--arbText :: Gen Text-arbText = suchThat genStr notBool- where- genStr = liftM2 T.cons (elements notDigits)- (liftM T.concat . listOf $ elements strChr)- notDigits = ['a'..'z'] ++ ['\'', '"', ' ', '(', ')', ',', ':', '\\']- strChr = map T.singleton $ notDigits ++ '.' : ['0'..'9']--arbString :: Gen String-arbString = liftM T.unpack arbitrary--fromPositive :: Positive a -> a-fromPositive (Positive a) = a--posArbitrary :: (Arbitrary a, Num a, Ord a) => Gen a-posArbitrary = liftM fromPositive arbitrary--arbIDString :: Gen Text-arbIDString = suchThat genStr notBool- where- genStr = liftM2 T.cons (elements frst)- (liftM T.pack . listOf $ elements rest)- frst = ['a'..'z'] ++ ['_']- rest = frst ++ ['0'.. '9']--validString :: Text -> Bool-validString = liftM2 (&&) notBool notNumStr--notBool :: Text -> Bool-notBool "true" = False-notBool "false" = False-notBool _ = True--shrinkString :: String -> [String]-shrinkString = map T.unpack . shrink . T.pack--notNumStr :: Text -> Bool-notNumStr = not . isNumString--arbBounded :: (Bounded a, Enum a) => Gen a-arbBounded = elements [minBound .. maxBound]--arbLayerName :: Gen Text-arbLayerName = suchThat arbitrary (T.all notLayerSep)- where- defLayerSep = layerSep initialState- notLayerSep = (`notElem` defLayerSep)--arbStyleName :: Gen Text-arbStyleName = suchThat arbitrary (T.all notBrackCom)- where- notBrackCom = flip notElem ['(', ')', ',', ' ']--arbList :: (Arbitrary a) => Gen [a]-arbList = listOf1 arbitrary--nonEmptyShrinks :: (Arbitrary a) => [a] -> [[a]]-nonEmptyShrinks = filter (not . null) . shrinkList--nonEmptyShrinks' :: [a] -> [[a]]-nonEmptyShrinks' = filter (not . null) . shrinkList'---- Shrink lists with more than one value only by removing values, not--- by shrinking individual items.-shrinkList :: (Arbitrary a) => [a] -> [[a]]-shrinkList [a] = map return $ shrink a-shrinkList as = shrinkList' as---- Just shrink the size.-shrinkList' :: [a] -> [[a]]-shrinkList' as = rm (length as) as- where- rm 0 _ = []- rm 1 _ = [[]]- rm n xs = xs1- : xs2- : ( [ xs1' ++ xs2 | xs1' <- rm n1 xs1, not (null xs1') ]- `ilv` [ xs1 ++ xs2' | xs2' <- rm n2 xs2, not (null xs2') ]- )- where- n1 = n `div` 2- xs1 = take n1 xs- n2 = n - n1- xs2 = drop n1 xs-- [] `ilv` ys = ys- xs `ilv` [] = xs- (x:xs) `ilv` (y:ys) = x : y : (xs `ilv` ys)---- When a Maybe value is a sub-component, and we need shrink to return--- a value.-shrinkM :: (Arbitrary a) => Maybe a -> [Maybe a]-shrinkM Nothing = [Nothing]-shrinkM j = shrink j--shrinkL :: (Arbitrary a) => [a] -> [[a]]-shrinkL xs = case shrinkList xs of- [] -> [xs]- xs' -> xs'--notInt :: Double -> Bool-notInt d = fromIntegral (round d :: Int) /= d--returnCheck :: (Eq a) => a -> a -> [a]-returnCheck o n = if o == n- then []- else [n]
− Data/GraphViz/Testing/Properties.hs
@@ -1,181 +0,0 @@-{-# LANGUAGE FlexibleContexts, ScopedTypeVariables #-}--{- |- Module : Data.GraphViz.Testing.Properties- Description : Properties for testing.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- Various properties that should hold true for the graphviz library.--}-module Data.GraphViz.Testing.Properties where--import Data.GraphViz( dotizeGraph, graphToDot- , setDirectedness, nonClusteredParams)-import Data.GraphViz.Types( DotRepr(..), PrintDotRepr- , DotNode(..), DotEdge(..), GlobalAttributes(..)- , printDotGraph, graphNodes, graphEdges- , graphStructureInformation)-import Data.GraphViz.Types.Canonical(DotGraph(..), DotStatements(..))-import qualified Data.GraphViz.Types.Generalised as G-import Data.GraphViz.Printing(PrintDot(..), printIt)-import Data.GraphViz.Parsing(ParseDot(..), parseIt, parseIt')-import Data.GraphViz.PreProcessing(preProcess)-import Data.GraphViz.Util(groupSortBy, isSingle)-import Data.GraphViz.Algorithms--import Test.QuickCheck--import Data.Graph.Inductive( Graph, DynGraph- , equal, nmap, emap, labNodes, labEdges, nodes, edges)-import Data.List(nub, sort)-import Data.Function(on)-import qualified Data.Map as Map-import qualified Data.Set as Set-import Data.Text.Lazy(Text)-import Control.Arrow((&&&))---- -------------------------------------------------------------------------------- The properties to test for---- | Checking that @parse . print == id@; that is, graphviz can parse--- its own output.-prop_printParseID :: (ParseDot a, PrintDot a, Eq a) => a -> Bool-prop_printParseID a = tryParse' a == a---- | A version of 'prop_printParse' specifically for lists; it ensures--- that the list is not empty (as most list-based parsers fail on--- empty lists).-prop_printParseListID :: (ParseDot a, PrintDot a, Eq a) => [a] -> Property-prop_printParseListID as = not (null as) ==> prop_printParseID as---- | When converting a canonical 'DotGraph' value to any other one,--- they should generate the same Dot code.-prop_generalisedSameDot :: (Ord n, PrintDot n, ParseDot n) => DotGraph n -> Bool-prop_generalisedSameDot dg = printDotGraph dg == printDotGraph gdg- where- gdg = canonicalToType (undefined :: G.DotGraph n) dg---- | Pre-processing shouldn't change the output of printed Dot code.--- This should work for all 'PrintDot' instances, but is more--- specific to 'DotGraph' values.-prop_preProcessingID :: (PrintDotRepr dg n) => dg n -> Bool-prop_preProcessingID dg = preProcess dotCode == dotCode- where- dotCode = printDotGraph dg---- | This property verifies that 'dotizeGraph', etc. only /augment/ the--- original graph; that is, the actual nodes, edges and labels for--- each remain unchanged. Whilst 'dotize', etc. only require--- 'Graph' instances, this property requires 'DynGraph' (which is a--- sub-class of 'Graph') instances to be able to strip off the--- 'Attributes' augmentations.-prop_dotizeAugment :: (DynGraph g, Eq n, Ord e) => g n e -> Bool-prop_dotizeAugment g = equal g (unAugment g')- where- g' = setDirectedness dotizeGraph nonClusteredParams g- unAugment = nmap snd . emap snd---- | After augmentation, each node and edge should have a non-empty--- | list of 'Attributes'.-prop_dotizeHasAugment :: (DynGraph g, Ord e) => g n e -> Bool-prop_dotizeHasAugment g = all (not . null) nodeAugments- && all (not . null) edgeAugments- where- g' = setDirectedness dotizeGraph nonClusteredParams g- nodeAugments = map (fst . snd) $ labNodes g'- edgeAugments = map (fst . \(_,_,l) -> l) $ labEdges g'---- | When a graph with multiple edges is augmented, then all edges--- should have unique 'Attributes' (namely the positions). Note--- that this may not hold true with custom supplied 'Attributes'--- (i.e. not using one of the @dotize@ functions).-prop_dotizeAugmentUniq :: (DynGraph g, Eq n, Ord e) => g n e -> Bool-prop_dotizeAugmentUniq g = all uniqLs lss- where- g' = setDirectedness dotizeGraph nonClusteredParams g- les = map (\(f,t,l) -> ((f,t),l)) $ labEdges g'- lss = map (map snd) . filter (not . isSingle)- $ groupSortBy fst les- uniqLs [] = False -- Needs to have at least /one/ Attribute!- uniqLs ls = ls == nub ls---- | Ensure that the definition of 'nodeInformation' for a DotRepr--- finds all the nodes.-prop_findAllNodes :: (DotRepr dg Int, Ord el, Graph g)- => dg Int -> g nl el -> Bool-prop_findAllNodes dg' g = ((==) `on` sort) gns dgns- where- gns = nodes g- dg = canonicalToType dg' $ setDirectedness graphToDot nonClusteredParams g- dgns = map nodeID $ graphNodes dg---- | Ensure that the definition of 'nodeInformation' for DotReprs--- finds all the nodes when the explicit 'DotNode' definitions are--- removed.-prop_findAllNodesE :: (DotRepr dg Int, Ord el, Graph g)- => dg Int -> g nl el -> Bool-prop_findAllNodesE dg' g = ((==) `on` sort) gns dgns- where- gns = nodes g- dg = canonicalToType dg' . removeNodes $ setDirectedness graphToDot nonClusteredParams g- dgns = map nodeID $ graphNodes dg- removeNodes dot@DotGraph{graphStatements = stmts}- = dot { graphStatements- = stmts {nodeStmts = filter notInEdge $ nodeStmts stmts}- }- gnes = Set.fromList . concatMap (\(f,t) -> [f,t]) $ edges g- notInEdge dn = nodeID dn `Set.notMember` gnes---- | Ensure that the definition of 'edgeInformation' for DotReprs--- finds all the nodes.-prop_findAllEdges :: (DotRepr dg Int, Ord el, Graph g) => dg Int -> g nl el -> Bool-prop_findAllEdges dg' g = ((==) `on` sort) ges dges- where- ges = edges g- dg = canonicalToType dg' $ graphToDot nonClusteredParams g- dges = map (fromNode &&& toNode) $ graphEdges dg---- | There should be no clusters or global attributes when converting--- a 'Graph' to a DotRepr (via fromCanonical) without any formatting--- or clustering.-prop_noGraphInfo :: (DotRepr dg Int, Ord el, Graph g)- => dg Int -> g nl el -> Bool-prop_noGraphInfo dg' g = info == (GraphAttrs [], Map.empty)- where- dg = canonicalToType dg'- $ setDirectedness graphToDot nonClusteredParams g- info = graphStructureInformation dg---- | Canonicalisation should be idempotent.-prop_canonicalise :: (ParseDot n, PrintDot n, DotRepr dg n) => dg n -> Bool-prop_canonicalise g = cdg == canonicalise cdg- where- cdg = canonicalise g---- | Removing transitive edges should be idempotent.-prop_transitive :: (DotRepr dg n) => dg n -> Bool-prop_transitive g = tdg == transitiveReduction tdg- where- tdg = transitiveReduction g---- -------------------------------------------------------------------------------- Helper utility functions---- | A utility function to use for debugging purposes for trying to--- find how graphviz /is/ parsing something. This is easier than--- using @'parseIt' . 'printIt'@ directly, since it avoids having to--- enter and explicit type signature.-tryParse :: (ParseDot a, PrintDot a) => a -> (a, Text)-tryParse = parseIt . printIt---- | Equivalent to 'tryParse' except that it is assumed that the--- entire 'String' *is* fully consumed.-tryParse' :: (ParseDot a, PrintDot a) => a -> a-tryParse' = parseIt' . printIt---- | A wrapper around 'fromCanonical' that lets you specify up-front--- what type to create (it need not be a sensible value).-canonicalToType :: (DotRepr dg n) => dg n -> DotGraph n -> dg n-canonicalToType _ = fromCanonical
Data/GraphViz/Types.hs view
@@ -87,11 +87,15 @@ -} module Data.GraphViz.Types ( DotRepr(..)+ , PrintDot(..)+ , ParseDot(..) , PrintDotRepr , ParseDotRepr , PPDotRepr -- * Common sub-types , GraphID(..)+ , ToGraphID(..)+ , textGraphID , GlobalAttributes(..) , DotNode(..) , DotEdge(..)@@ -115,10 +119,11 @@ , DotNode(..), DotEdge(..), numericValue) import Data.GraphViz.Types.State import Data.GraphViz.Util(bool)-import Data.GraphViz.Parsing(ParseDot, runParser, checkValidParse, parse, adjustErr)+import Data.GraphViz.Parsing(ParseDot(..), runParser, checkValidParse, parse, adjustErr) import Data.GraphViz.PreProcessing(preProcess)-import Data.GraphViz.Printing(PrintDot, printIt)+import Data.GraphViz.Printing(PrintDot(..), printIt) +import qualified Data.Text.Lazy as T import Data.Text.Lazy(Text) import Control.Arrow(first) import Control.Monad.Trans.State(get, put, modify, execState, evalState)@@ -322,6 +327,40 @@ -- ----------------------------------------------------------------------------- +-- | A convenience class to make it easier to convert data types to+-- 'GraphID' values, e.g. for cluster identifiers.+--+-- In most cases, conversion would be via the 'Text' or 'String'+-- instances (e.g. using 'show').+class ToGraphID a where+ toGraphID :: a -> GraphID++-- | An alias for 'toGraphID' for use with the @OverloadedStrings@+-- extension.+textGraphID :: Text -> GraphID+textGraphID = toGraphID++instance ToGraphID Text where+ toGraphID = Str++instance ToGraphID String where+ toGraphID = toGraphID . T.pack++instance ToGraphID Char where+ toGraphID = toGraphID . T.singleton++instance ToGraphID Int where+ toGraphID = Int++-- | This instance loses precision by going via 'Int'.+instance ToGraphID Integer where+ toGraphID = Int . fromInteger++instance ToGraphID Double where+ toGraphID = Dbl++-- -----------------------------------------------------------------------------+ {- $limitations Printing of /Dot/ code is done as strictly as possible, whilst@@ -381,5 +420,5 @@ 'graphNodes' will return both \"definitions\"). @canonicalise@ from "Data.GraphViz.Algorithms" can be used to fix this. - See "Data.GraphViz.Attributes" for more limitations.+ See "Data.GraphViz.Attributes.Complete" for more limitations. -}
Data/GraphViz/Types/Canonical.hs view
@@ -87,6 +87,8 @@ import Data.GraphViz.Types.Common import Data.GraphViz.Parsing import Data.GraphViz.Printing+import Data.GraphViz.State(AttributeType(..))+import Data.GraphViz.Util(bool) import Control.Arrow((&&&)) import Control.Monad(liftM)@@ -102,12 +104,14 @@ deriving (Eq, Ord, Show, Read) instance (PrintDot n) => PrintDot (DotGraph n) where- unqtDot = printStmtBased printGraphID' graphStatements toDot+ unqtDot = printStmtBased printGraphID' (const GraphAttribute)+ graphStatements toDot where printGraphID' = printGraphID strictGraph directedGraph graphID instance (ParseDot n) => ParseDot (DotGraph n) where- parseUnqt = parseStmtBased parse (parseGraphID DotGraph)+ parseUnqt = parseGraphID DotGraph+ <*> parseBracesBased GraphAttribute parseUnqt parse = parseUnqt -- Don't want the option of quoting @@ -160,26 +164,32 @@ deriving (Eq, Ord, Show, Read) instance (PrintDot n) => PrintDot (DotSubGraph n) where- unqtDot = printStmtBased printSubGraphID' subGraphStmts toDot+ unqtDot = printStmtBased printSubGraphID' subGraphAttrType+ subGraphStmts toDot - unqtListToDot = printStmtBasedList printSubGraphID' subGraphStmts toDot+ unqtListToDot = printStmtBasedList printSubGraphID' subGraphAttrType+ subGraphStmts toDot listToDot = unqtListToDot +subGraphAttrType :: DotSubGraph n -> AttributeType+subGraphAttrType = bool SubGraphAttribute ClusterAttribute . isCluster+ printSubGraphID' :: DotSubGraph n -> DotCode printSubGraphID' = printSubGraphID (isCluster &&& subGraphID) instance (ParseDot n) => ParseDot (DotSubGraph n) where- parseUnqt = parseStmtBased parseUnqt (parseSubGraphID DotSG)+ parseUnqt = parseSubGraph DotSG parseUnqt `onFail` -- Take "anonymous" DotSubGraphs into account.- liftM (DotSG False Nothing) (parseBracesBased parseUnqt)+ liftM (DotSG False Nothing)+ (parseBracesBased SubGraphAttribute parseUnqt) parse = parseUnqt -- Don't want the option of quoting `adjustErr` ("Not a valid Sub Graph\n\t"++) - parseUnqtList = sepBy (whitespace' >> parseUnqt) newline'+ parseUnqtList = sepBy (whitespace >> parseUnqt) newline' parseList = parseUnqtList
Data/GraphViz/Types/Common.hs view
@@ -15,12 +15,12 @@ import Data.GraphViz.Parsing import Data.GraphViz.Printing+import Data.GraphViz.State import Data.GraphViz.Util import Data.GraphViz.Attributes.Complete( Attributes, Attribute(HeadPort, TailPort) , usedByGraphs, usedByClusters , usedByNodes) import Data.GraphViz.Attributes.Internal(PortPos, parseEdgeBasedPP)-import Data.GraphViz.State(setDirectedness, getDirectedness, getsGS, modifyGS) import Data.Maybe(isJust) import qualified Data.Text.Lazy as T@@ -76,7 +76,7 @@ -- entire graph/sub-graph. Note that 'GraphAttrs' also applies to -- 'DotSubGraph's. ----- Note that Dot allows a single 'Attribute' to be listen on a line;+-- Note that Dot allows a single 'Attribute' to be listed on a line; -- if this is the case then when parsing, the type of 'Attribute' it -- is determined and that type of 'GlobalAttribute' is created. data GlobalAttributes = GraphAttrs { attrs :: Attributes }@@ -85,9 +85,9 @@ deriving (Eq, Ord, Show, Read) instance PrintDot GlobalAttributes where- unqtDot = printAttrBased True printGlobAttrType attrs+ unqtDot = printAttrBased True printGlobAttrType globAttrType attrs - unqtListToDot = printAttrBasedList True printGlobAttrType attrs+ unqtListToDot = printAttrBasedList True printGlobAttrType globAttrType attrs listToDot = unqtListToDot @@ -109,7 +109,16 @@ -- Not using parseAttrBased here because we want to force usage of -- Attributes. parseUnqt = do gat <- parseGlobAttrType- as <- whitespace' >> parse++ -- Determine if we need to set the attribute type.+ let mtp = globAttrType $ gat [] -- Only need the constructor+ oldTp <- getAttributeType+ maybe (return ()) setAttributeType mtp++ as <- whitespace >> parse++ -- Safe to set back even if not changed.+ setAttributeType oldTp return $ gat as `onFail` liftM determineType parse@@ -119,10 +128,17 @@ ("Not a valid listing of global attributes\n\t"++) -- Have to do this manually because of the special case- parseUnqtList = parseStatements parse+ parseUnqtList = parseStatements parseUnqt parseList = parseUnqtList +-- Cheat: rather than determine whether it's a graph, cluster or+-- sub-graph just don't set it.+globAttrType :: GlobalAttributes -> Maybe AttributeType+globAttrType NodeAttrs{} = Just NodeAttribute+globAttrType EdgeAttrs{} = Just EdgeAttribute+globAttrType _ = Nothing+ parseGlobAttrType :: Parse (Attributes -> GlobalAttributes) parseGlobAttrType = oneOf [ stringRep GraphAttrs "graph" , stringRep NodeAttrs "node"@@ -147,9 +163,11 @@ deriving (Eq, Ord, Show, Read) instance (PrintDot n) => PrintDot (DotNode n) where- unqtDot = printAttrBased False printNodeID nodeAttributes+ unqtDot = printAttrBased False printNodeID+ (const $ Just NodeAttribute) nodeAttributes - unqtListToDot = printAttrBasedList False printNodeID nodeAttributes+ unqtListToDot = printAttrBasedList False printNodeID+ (const $ Just NodeAttribute) nodeAttributes listToDot = unqtListToDot @@ -157,11 +175,11 @@ printNodeID = toDot . nodeID instance (ParseDot n) => ParseDot (DotNode n) where- parseUnqt = parseAttrBased parseNodeID+ parseUnqt = parseAttrBased NodeAttribute False parseNodeID parse = parseUnqt -- Don't want the option of quoting - parseUnqtList = parseAttrBasedList parseNodeID+ parseUnqtList = parseAttrBasedList NodeAttribute False parseNodeID parseList = parseUnqtList @@ -193,9 +211,11 @@ deriving (Eq, Ord, Show, Read) instance (PrintDot n) => PrintDot (DotEdge n) where- unqtDot = printAttrBased False printEdgeID edgeAttributes+ unqtDot = printAttrBased False printEdgeID+ (const $ Just EdgeAttribute) edgeAttributes - unqtListToDot = printAttrBasedList False printEdgeID edgeAttributes+ unqtListToDot = printAttrBasedList False printEdgeID+ (const $ Just EdgeAttribute) edgeAttributes listToDot = unqtListToDot @@ -207,7 +227,7 @@ instance (ParseDot n) => ParseDot (DotEdge n) where- parseUnqt = parseAttrBased parseEdgeID+ parseUnqt = parseAttrBased EdgeAttribute True parseEdgeID parse = parseUnqt -- Don't want the option of quoting @@ -265,7 +285,7 @@ let ens' = n1 : ens efs = zipWith mkEdges ens' (tail ens') ef = return $ \ as -> concatMap ($as) efs- parseAttrBased ef+ parseAttrBased EdgeAttribute True ef instance Functor DotEdge where fmap f e = e { fromNode = f $ fromNode e@@ -330,7 +350,7 @@ isDir' = isDir g parseGraphID :: (Bool -> Bool -> Maybe GraphID -> a) -> Parse a-parseGraphID f = do allWhitespace'+parseGraphID f = do whitespace str <- liftM isJust $ optional (parseAndSpace $ string strGraph) dir <- parseAndSpace ( stringRep True dirGraph@@ -341,19 +361,19 @@ gID <- optional $ parseAndSpace parse return $ f str dir gID -printStmtBased :: (a -> DotCode) -> (a -> b) -> (b -> DotCode)- -> a -> DotCode-printStmtBased f r dr a = do gs <- getsGS id- dc <- printBracesBased (f a) (dr $ r a)- modifyGS (const gs)- return dc--printStmtBasedList :: (a -> DotCode) -> (a -> b) -> (b -> DotCode)- -> [a] -> DotCode-printStmtBasedList f r dr = vcat . mapM (printStmtBased f r dr)+printStmtBased :: (a -> DotCode) -> (a -> AttributeType)+ -> (a -> stmts) -> (stmts -> DotCode)+ -> a -> DotCode+printStmtBased f ftp r dr a = do gs <- getsGS id+ setAttributeType $ ftp a+ dc <- printBracesBased (f a) (dr $ r a)+ modifyGS (const gs)+ return dc -parseStmtBased :: Parse stmt -> Parse (stmt -> a) -> Parse a-parseStmtBased = flip apply . parseBracesBased+printStmtBasedList :: (a -> DotCode) -> (a -> AttributeType)+ -> (a -> stmts) -> (stmts -> DotCode)+ -> [a] -> DotCode+printStmtBasedList f ftp r dr = vcat . mapM (printStmtBased f ftp r dr) -- Can't use the 'braces' combinator here because we want the closing -- brace lined up with the h value, which due to indentation might not@@ -367,13 +387,14 @@ ind = indent 4 -- | This /must/ only be used for sub-graphs, etc.-parseBracesBased :: Parse a -> Parse a-parseBracesBased p = do gs <- getsGS id- a <- whitespace' >> parseBraced (wrapWhitespace p)- modifyGS (const gs)- return a- `adjustErr`- ("Not a valid value wrapped in braces.\n\t"++)+parseBracesBased :: AttributeType -> Parse a -> Parse a+parseBracesBased tp p = do gs <- getsGS id+ setAttributeType tp+ a <- whitespace >> parseBraced (wrapWhitespace p)+ modifyGS (const gs)+ return a+ `adjustErr`+ ("Not a valid value wrapped in braces.\n\t"++) printSubGraphID :: (a -> (Bool, Maybe GraphID)) -> a -> DotCode printSubGraphID f a = sGraph'@@ -394,10 +415,16 @@ mkDot (Str str) = text str -- Quotes will be escaped later mkDot gid = unqtDot gid -parseSubGraphID :: (Bool -> Maybe GraphID -> c) -> Parse c+parseSubGraph :: (Bool -> Maybe GraphID -> stmt -> c) -> Parse stmt -> Parse c+parseSubGraph pid pst = do (isC, fID) <- parseSubGraphID pid+ let tp = bool SubGraphAttribute ClusterAttribute isC+ liftM fID $ parseBracesBased tp pst++parseSubGraphID :: (Bool -> Maybe GraphID -> c) -> Parse (Bool,c) parseSubGraphID f = do string sGraph- whitespace- liftM (uncurry f) parseSGID+ whitespace1+ (isC,mid) <- parseSGID+ return (isC, f isC mid) parseSGID :: Parse (Bool, Maybe GraphID) parseSGID = oneOf [ liftM getClustFrom $ parseAndSpace parse@@ -437,47 +464,59 @@ sID <- optional $ do when isCl $ optional (character '_') >> return () parseUnqt- when (isCl || isJust sID) $ whitespace >> return ()+ when (isCl || isJust sID) $ whitespace1 >> return () return (isCl, sID) -} --- The Bool indicates whether or not to print empty lists-printAttrBased :: Bool -> (a -> DotCode) -> (a -> Attributes)- -> a -> DotCode-printAttrBased prEmp ff fas a = dc <> semi+-- The Bool is True for global, False for local.+printAttrBased :: Bool -> (a -> DotCode) -> (a -> Maybe AttributeType)+ -> (a -> Attributes) -> a -> DotCode+printAttrBased prEmp ff ftp fas a = do oldType <- getAttributeType+ maybe (return ()) setAttributeType mtp+ oldCS <- getColorScheme+ (dc <> semi) <* setAttributeType oldType+ <* when prEmp (setColorScheme oldCS) where+ mtp = ftp a f = ff a dc = case fas a of [] | not prEmp -> f as -> f <+> toDot as --- The Bool indicates whether or not to print empty lists-printAttrBasedList :: Bool -> (a -> DotCode) -> (a -> Attributes)- -> [a] -> DotCode-printAttrBasedList prEmp ff fas = vcat . mapM (printAttrBased prEmp ff fas)+-- The Bool is True for global, False for local.+printAttrBasedList :: Bool -> (a -> DotCode) -> (a -> Maybe AttributeType)+ -> (a -> Attributes) -> [a] -> DotCode+printAttrBasedList prEmp ff ftp fas = vcat . mapM (printAttrBased prEmp ff ftp fas) -parseAttrBased :: Parse (Attributes -> a) -> Parse a-parseAttrBased p = do f <- p- atts <- tryParseList' (whitespace' >> parse)- return $ f atts- `adjustErr`- ("Not a valid attribute-based structure\n\t"++)+-- The Bool is True for global, False for local.+parseAttrBased :: AttributeType -> Bool -> Parse (Attributes -> a) -> Parse a+parseAttrBased tp lc p = do oldType <- getAttributeType+ setAttributeType tp+ oldCS <- getColorScheme+ f <- p+ atts <- tryParseList' (whitespace >> parse)+ when lc $ setColorScheme oldCS+ when (tp /= oldType) $ setAttributeType oldType+ return $ f atts+ `adjustErr`+ ("Not a valid attribute-based structure\n\t"++) -parseAttrBasedList :: Parse (Attributes -> a) -> Parse [a]-parseAttrBasedList = parseStatements . parseAttrBased+-- The Bool is True for global, False for local.+parseAttrBasedList :: AttributeType -> Bool -> Parse (Attributes -> a) -> Parse [a]+parseAttrBasedList tp lc = parseStatements . parseAttrBased tp lc --- | Parse the separator (and any other whitespace present) between statements.+-- | Parse the separator (and any other whitespace1 present) between statements. statementEnd :: Parse () statementEnd = parseSplit >> newline' where- parseSplit = (whitespace' >> oneOf [ character ';' >> return ()+ parseSplit = (whitespace >> oneOf [ character ';' >> return () , newline ] ) `onFail`- whitespace+ whitespace1 parseStatements :: Parse a -> Parse [a]-parseStatements p = sepBy (whitespace' >> p) statementEnd+parseStatements p = sepBy (whitespace >> p) statementEnd `discard` optional statementEnd
Data/GraphViz/Types/Generalised.hs view
@@ -66,6 +66,7 @@ import Data.GraphViz.Types.State import Data.GraphViz.Parsing import Data.GraphViz.Printing+import Data.GraphViz.State(AttributeType(..)) import Data.GraphViz.Util(bool) import qualified Data.Sequence as Seq@@ -120,12 +121,14 @@ instance (Ord n, PrintDot n, ParseDot n) => PPDotRepr DotGraph n instance (PrintDot n) => PrintDot (DotGraph n) where- unqtDot = printStmtBased printGraphID' graphStatements printGStmts+ unqtDot = printStmtBased printGraphID' (const GraphAttribute)+ graphStatements printGStmts where printGraphID' = printGraphID strictGraph directedGraph graphID instance (ParseDot n) => ParseDot (DotGraph n) where- parseUnqt = parseStmtBased parseGStmts (parseGraphID DotGraph)+ parseUnqt = parseGraphID DotGraph+ <*> parseBracesBased GraphAttribute parseGStmts parse = parseUnqt -- Don't want the option of quoting @@ -241,26 +244,32 @@ deriving (Eq, Ord, Show, Read) instance (PrintDot n) => PrintDot (DotSubGraph n) where- unqtDot = printStmtBased printSubGraphID' subGraphStmts printGStmts+ unqtDot = printStmtBased printSubGraphID' subGraphAttrType+ subGraphStmts printGStmts - unqtListToDot = printStmtBasedList printSubGraphID' subGraphStmts printGStmts+ unqtListToDot = printStmtBasedList printSubGraphID' subGraphAttrType+ subGraphStmts printGStmts listToDot = unqtListToDot +subGraphAttrType :: DotSubGraph n -> AttributeType+subGraphAttrType = bool SubGraphAttribute ClusterAttribute . isCluster+ printSubGraphID' :: DotSubGraph n -> DotCode printSubGraphID' = printSubGraphID (isCluster &&& subGraphID) instance (ParseDot n) => ParseDot (DotSubGraph n) where- parseUnqt = parseStmtBased parseGStmts (parseSubGraphID DotSG)+ parseUnqt = parseSubGraph DotSG parseGStmts `onFail` -- Take anonymous DotSubGraphs into account- liftM (DotSG False Nothing) (parseBracesBased parseGStmts)+ liftM (DotSG False Nothing)+ (parseBracesBased SubGraphAttribute parseGStmts) parse = parseUnqt -- Don't want the option of quoting `adjustErr` (++ "\n\nNot a valid Sub Graph") - parseUnqtList = sepBy (whitespace' >> parseUnqt) newline'+ parseUnqtList = sepBy (whitespace >> parseUnqt) newline' parseList = parseUnqtList
Data/GraphViz/Types/Graph.hs view
@@ -106,8 +106,6 @@ import Data.GraphViz.Util(groupSortBy, groupSortCollectBy) import Data.GraphViz.Algorithms(CanonicaliseOptions(..), canonicaliseOptions) import Data.GraphViz.Algorithms.Clustering-import Data.GraphViz.Printing(PrintDot(..))-import Data.GraphViz.Parsing(ParseDot(..)) import Data.List(foldl', delete, unfoldr) import qualified Data.Foldable as F@@ -582,6 +580,8 @@ -- fromGDot :: G.DotGraph n -> DotGraph n fromGDot = fromDotRepr . flip asTypeOf (undefined :: G.DotGraph n) + parse = parseUnqt -- Don't want the option of quoting+ cOptions :: CanonicaliseOptions cOptions = COpts { edgesInClusters = False , groupAttributes = True@@ -599,15 +599,17 @@ -- be used to make sure all clusters /have/ an identifier, but it -- doesn't ensure uniqueness). ----- * All nodes are assumed to be explicitly listed precisely once+-- * All nodes are assumed to be explicitly listed precisely once. -- -- * Only edges found in the root graph are considered. -- -- If this isn't the case, use 'fromCanonical' instead. ----- The 'graphToDot' and 'graphElemsToDot' functions from--- "Data.GraphViz" produces output suitable for this function--- (assuming all clusters are provided with a unique identifier).+-- The 'graphToDot' function from "Data.GraphViz" produces output+-- suitable for this function (assuming all clusters are provided+-- with a unique identifier); 'graphElemsToDot' is suitable if all+-- nodes are specified in the input list (rather than just the+-- edges). unsafeFromCanonical :: (Ord n) => C.DotGraph n -> DotGraph n unsafeFromCanonical dg = DG { strictGraph = C.strictGraph dg , directedGraph = dirGraph
FAQ view
@@ -1,4 +1,4 @@-% graphviz - FAQ+% FAQ % Ivan Lazar Miljenovic Fortuitously Anticipated Queries (FAQ)@@ -35,14 +35,14 @@ * There are [four different representations] of Dot graphs: - 1. Canonical, which matches the layout of `dot -Tcanon`.- 2. Generalised, which allows statements to be in any order.- 3. A graph-based one that allows manipulation of the Dot graph.- 4. A monadic interface for embedding graphs in Haskell.+ 1. Canonical, which matches the layout of `dot -Tcanon`.+ 2. Generalised, which allows statements to be in any order.+ 3. A graph-based one that allows manipulation of the Dot graph.+ 4. A monadic interface for embedding graphs in Haskell. - There are also conversion functions between them.+ There are also conversion functions between them. - [four different representations](#whats-the-difference-between-the-different-dotgraph-types)+ [four different representations]: #whats-the-difference-between-the-different-dotgraph-types * The ability to parse and generate most aspects of Dot [syntax] and [attributes]. This includes taking into account escaping and@@ -131,6 +131,22 @@ graphs need to be parsed then you shall need to do all I/O for them by hand. +* `colorscheme` attributes _are_ parsed, but the behaviour is not+ quite the same: consider the following minimal Dot graph:++ ~~~~~ {.dot}+ digraph {+ a [ style=filled, fillcolor=gray, colorscheme=svg ]+ }+ ~~~~~++ Despite the fact that the color is specified before the colorscheme,+ Graphviz will use that colorscheme to parse the color (as an SVG+ gray differs from the X11 gray); _graphviz_, however, will use the+ default colorscheme of `x11` to parse the color, and **then** set+ the colorscheme to be `svg` (despite it not being used after it is+ set).+ #### Available items of note #### There are a few items of note that are available that are worthy of@@ -191,7 +207,7 @@ ### How is _graphviz_ licensed? ### _graphviz_ is licensed under a [3-Clause BSD License] (note that the-ColorBrewer Color Schemes found in `Data.GraphViz.Attributes.Colors`+ColorBrewer Color Schemes found in `Data.GraphViz.Attributes.Colors.Brewer` are covered under [their own license](http://graphviz.org/doc/info/colors.html#brewer_license)). @@ -214,10 +230,9 @@ ### Are there any tutorials on how to use _graphviz_? ### -There will be soon. The current stumbling block is that each time I-sit down to write a tutorial, I find that it would be even better if-_graphviz_ had some extra features in it first, so the tutorial has to-wait until I have finished that feature...+A basic tutorial on+[how to visualise graph-like data](http://ivanmiljenovic.wordpress.com/2011/10/16/graphviz-in-vacuum/)+is available; more will come if people ask for it. ### What other packages use _graphviz_? ### @@ -263,7 +278,7 @@ ### Do I need to have Graphviz installed to use _graphviz_? ### Technically, no if you're only dealing with the Dot language aspects.-However, usage of the functions in the Commands module, or the+However, usage of the functions in the `Commands` module, or the augmentation of pretty-printing functions in the GraphViz module _do_ require Graphviz to be installed. @@ -286,30 +301,30 @@ **Canonical:** -: matches the output of `dot -Tcanon`. Recommended for use when- converting existing data into Dot (especially with the- `graphElemsToDot` function in `Data.GraphViz`).+: matches the output of `dot -Tcanon`. Recommended for use when+ converting existing data into Dot (especially with the+ `graphElemsToDot` function in `Data.GraphViz`). **Generalised:** -: most closely matches the layout of actual Dot code, as such this is- preferred when parsing in arbitrary Dot graphs. Also useful in- cases where you want to use the common Graphviz "hack" of specifying- global attributes that don't apply to sub-graphs _after_ the- sub-graphs in question.+: most closely matches the layout of actual Dot code, as such this is+ preferred when parsing in arbitrary Dot graphs. Also useful in+ cases where you want to use the common Graphviz "hack" of specifying+ global attributes that don't apply to sub-graphs _after_ the+ sub-graphs in question. **Graph:** -: provides common graph operations on Dot graphs, based upon those- found in the [FGL].+: provides common graph operations on Dot graphs, based upon those+ found in the [FGL]. **Monadic:** -: a nicer way of defining relatively static Dot graphs to embed within- Haskell code, etc. Loosely based (with permission!) upon Andy- Gill's [dotgen] library.+: a nicer way of defining relatively static Dot graphs to embed within+ Haskell code, etc. Loosely based (with permission!) upon Andy+ Gill's [dotgen] library. - [dotgen]: http://hackage.haskell.org/package/dotgen+[dotgen]: http://hackage.haskell.org/package/dotgen ### What's the best way to parse Dot code? ### @@ -331,63 +346,20 @@ ### There are too many attributes!!! Which ones should I use? ### -The following attributes are easy to use and recommended:--* `ArrowHead` and `ArrowTail` (for directed graphs) to set the styles- of the ends of edges: note that in Graphviz parlance, "Head" refers- to the end node and "Tail" refers to the start node of the edge (see- below).--* When wanting to use different colours, use the following criteria to- pick the correct attribute. Note: for the first two, you should- also have `SItem Filled []` set as one of the `Style` values for- that item.-- - `BgColor` to set the background colour of a graph/cluster.-- - `FillColor` to set the background colour for a node.-- - `Color` to set the colour of an edge; if you supply more than- one value then the edge is drawn using parallel splines/lines- (one per colour in the list). This can also be used to set the- border colour for a node, but if a filled style is used and- `FillColor` isn't set then this will also set the background- colour.-- - `PenColor` to set the colour of the bounding box for a cluster.-- When choosing a `Color` value for one of the above, it is- better to use one of the `X11Color` values (note: these- colours slightly differ from the standard X11 colours) or - if- you have to - one of the manual colours over a `BrewerColor`,- as they come under a different license and have no real- standard on what the values are.--* For labels, use the `Labellable` class to more easily construct- labels. In most cases, a `String`-based label will suffice; for- more fine-grained control over layout, colours, etc. use either a- `RecordFields` or an `HtmlLabel`.--* `Rank`: this lets you control relative placement of sub-graphs and- clusters.--* `Shape`: Use `Record` and `MRecord` for `RecordFields`-based labels;- feel free to use any other ones at any time (though you probably- want to use `PlainText` for `HtmlLabel` labels).--* `Style`: use this to set line types, etc. for nodes and edges. You- should **not** use a `DD` (device-dependent) value.+The `Data.GraphViz.Attributes` module contains a cut-down list of+recommended and commonly used attributes. -The following attributes are **not** recommended for use:+The entire list of attributes can be found in+`Data.GraphViz.Attributes.Complete`. In particular, the following+attributes are **not** recommended for use: -* `Color` for anything except edge colours (and if you must, the- border colour for a node).+* `Color` for anything except edge colours or gradients for nodes,+ clusters and graphs when using Graphviz >= 2.29.0 (and if you must,+ the border colour for a node). * `ColorScheme`: just stick with X11 colours. -* `Comment`: pretty useless, but will interfere with the augmentation- functions (since they use the `Comment` attribute to distinguish- between multiple edges).+* `Comment`: pretty useless. Enough said. ### Can I use any attribute wherever I want? ### @@ -398,11 +370,9 @@ ### How can I use _graphviz_ to visualise non-FGL graphs? ### -At the moment, you unfortunately have to write your own manual-conversion functions (see `graphToDot`, etc. in the GraphViz module-for ideas on how to do this). In future, it should be possible to-convert any graph-like datatype into a `DotGraph` (this requires me to-go write another library first...).+The `graphElemsToDot` function allows you to visualise any graph for+which you can specify a list of labelled nodes and a list of labelled+edges. ### How can I use/process multiple graphs like Graphviz does? ### @@ -433,7 +403,7 @@ instance ParseDot MyType where parseUnqt = do i <- parseUnqt character ':'- whitespace+ whitespace1 s <- parseUnqt return $ MyType s i @@ -456,11 +426,9 @@ * Be as liberal as you can when parsing, especially with whitespace: when printing only one space is used, yet when parsing we use the- `whitespace` parsing combinator that will parse all whitespace+ `whitespace1` parsing combinator that will parse all whitespace characters (but it must consume _at least_ one; there is a variant- that does not need to parse any). However, we're not being so- liberal as to allow parsing of newline characters (for which there- is a separate parsing combinator).+ that does not need to parse any). ### When parsing Dot code, do I have to worry about the case? ### @@ -472,11 +440,11 @@ Graphviz allows you to specify edges such as `from:a -> to:b` where the nodes "from" and "to" are defined with either `RecordLabel` or-`HtmlLabel` labels and have different sections; the edge is then drawn+`Html.Label` labels and have different sections; the edge is then drawn from the "a" section of the "from" node to the "b" section of the "to" node. -Whilst _graphviz_ can parse this, you can't define this yourself:+Whilst _graphviz_ can parse this, you can't define this yourself; instead, do it the manual way: ~~~~~~~~~~~~~~~~~~~~ {.haskell}
LICENSE view
@@ -1,4 +1,4 @@-% graphviz - License+% License % Ivan Lazar Miljenovic Licensing Information
README view
@@ -1,4 +1,4 @@-% graphviz - Haskell bindings to the Graphviz toolkit+% Haskell bindings to the Graphviz toolkit % Ivan Lazar Miljenovic The graphviz Library@@ -62,4 +62,3 @@ mode:markdown End: -->-
− RunTests.hs
@@ -1,83 +0,0 @@-{- |- Module : RunTests- Description : Run the graphviz test suite.- Copyright : (c) Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- This module exists solely to make a Main module to build and run- the test suite.--}-module Main where--import Data.GraphViz.Testing( Test(name, lookupName)- , defaultTests, runChosenTests)--import Data.Char(toLower)-import Data.Maybe(mapMaybe)-import qualified Data.Map as Map-import Data.Map(Map)-import Control.Arrow((&&&))-import Control.Monad(when)-import System.Environment(getArgs, getProgName)-import System.Exit(ExitCode(ExitSuccess), exitWith)---- -------------------------------------------------------------------------------main :: IO ()-main = do opts <- getArgs- let opts' = map (map toLower) opts- hasArg arg = any (arg==) opts'- when (hasArg "help") helpMsg- let tests = if hasArg "all"- then defaultTests- else mapMaybe getTest opts'- tests' = if null tests- then defaultTests- else tests- runChosenTests tests'--testLookup :: Map String Test-testLookup = Map.fromList- $ map (lookupName &&& id) defaultTests--getTest :: String -> Maybe Test-getTest = (`Map.lookup` testLookup)--helpMsg :: IO ()-helpMsg = getProgName >>= (putStr . msg) >> exitWith ExitSuccess- where- msg nm = unlines- [ "This utility is the test-suite for the graphviz library for Haskell."- , "Various tests are available; see the table below for a complete list."- , "There are several ways of running this program:"- , ""- , " " ++ nm ++ " Run all of the tests"- , " " ++ nm ++ " all Run all of the tests"- , " " ++ nm ++ " help Get this help message"- , " " ++ nm ++ " <key> Run the test associated with each key,"- , " (where <key> denotes a space-separated list of keys"- , " from the table below)."- , ""- , helpTable- ]--helpTable :: String-helpTable = unlines $ fmtName ((lnHeader,lnHeaderLen),(nHeader,nHeaderLen))- : line- : map fmtName testNames- where- andLen = ((id &&& length) .)- testNames = map (andLen lookupName &&& andLen name) defaultTests- fmtName ((ln,lnl),(n,_)) = concat [ ln- , replicate (maxLN-lnl+spacerLen) ' '- , n- ]- line = replicate (maxLN + spacerLen + maxN) '-'- maxLN = maximum $ map (snd . fst) testNames- maxN = maximum $ map (snd . snd) testNames- spacerLen = 3- lnHeader = "Key"- lnHeaderLen = length lnHeader- nHeader = "Description"- nHeaderLen = length nHeader
TODO view
@@ -1,4 +1,4 @@-% graphviz - TODO+% TODO % Ivan Lazar Miljenovic Future Plans for graphviz@@ -6,7 +6,8 @@ This is a list of planned feature improvements to graphviz along with an indication of when it's likely to be implemented (note that these-time scales are in relation to releases, not actual time).+time scales are in relation to releases, not actual time; however, it+is quite possible that the order will not be adhered to). Short term ----------@@ -17,10 +18,6 @@ * Add nicer syntax for record labels, and specifying ports in Monadic Dot graphs. -* Add convenience functions for creating GraphIDs (ala Labellable).--* Add support for SVG colors.- * Define new classes to distinguish between printing/parsing Attribute values and other values (as only the former requires quoted variants).@@ -55,4 +52,3 @@ mode:markdown End: -->-
graphviz.cabal view
@@ -1,5 +1,5 @@ Name: graphviz-Version: 2999.12.0.4+Version: 2999.13.0.0 Stability: Beta Synopsis: Bindings to Graphviz for graph visualisation. Description: {@@ -38,7 +38,7 @@ Author: Matthew Sackman, Ivan Lazar Miljenovic Maintainer: Ivan.Miljenovic+graphviz@gmail.com Build-Type: Simple-Cabal-Version: >= 1.6+Cabal-Version: >= 1.14 Extra-Source-Files: TODO Changelog README@@ -50,18 +50,15 @@ Type: darcs Location: http://code.haskell.org/graphviz -Flag test- Description: Build the test suite, including an executable to run it.- Default: False- Library {- Build-Depends: base >= 3 && < 5,- extensible-exceptions,+ Default-Language: Haskell98++ Build-Depends: base == 4.*, containers, process, fgl == 5.4.*, filepath,- polyparse == 1.7.*,+ polyparse >= 1.7 && < 1.9, bytestring == 0.9.*, colour == 2.3.*, transformers == 0.2.*,@@ -77,12 +74,14 @@ Data.GraphViz.Types.Monadic Data.GraphViz.Parsing Data.GraphViz.Printing- Data.GraphViz.State Data.GraphViz.Commands Data.GraphViz.Commands.IO Data.GraphViz.Attributes Data.GraphViz.Attributes.Complete Data.GraphViz.Attributes.Colors+ Data.GraphViz.Attributes.Colors.X11+ Data.GraphViz.Attributes.Colors.Brewer+ Data.GraphViz.Attributes.Colors.SVG Data.GraphViz.Attributes.HTML Data.GraphViz.PreProcessing Data.GraphViz.Exception@@ -95,20 +94,7 @@ Data.GraphViz.Types.Common Data.GraphViz.Types.State Data.GraphViz.Util- if flag(test)- Build-Depends: QuickCheck >= 2.3 && < 2.5-- Exposed-Modules: Data.GraphViz.Testing- Data.GraphViz.Testing.Instances- Data.GraphViz.Testing.Properties-- Other-Modules: Data.GraphViz.Testing.Instances.FGL- Data.GraphViz.Testing.Instances.Helpers- Data.GraphViz.Testing.Instances.Attributes- Data.GraphViz.Testing.Instances.Common- Data.GraphViz.Testing.Instances.Canonical- Data.GraphViz.Testing.Instances.Generalised- Data.GraphViz.Testing.Instances.Graph+ Data.GraphViz.State if True Ghc-Options: -Wall@@ -119,14 +105,65 @@ Ghc-Prof-Options: -prof -auto-all } -Executable graphviz-testsuite {+Test-Suite graphviz-testsuite {+ Default-Language: Haskell98 - if flag(test)- Buildable: True- else- Buildable: False+ Type: exitcode-stdio-1.0 + -- Versions controlled by library section+ Build-Depends: base,+ containers,+ process,+ fgl,+ filepath,+ polyparse,+ bytestring,+ colour,+ transformers,+ text,+ wl-pprint-text,+ dlist,+ QuickCheck >= 2.3 && < 2.5++ hs-Source-Dirs: . tests+ Main-Is: RunTests.hs+++ Other-Modules: Data.GraphViz.Testing+ Data.GraphViz.Testing.Instances+ Data.GraphViz.Testing.Properties+ Data.GraphViz.Testing.Instances.FGL+ Data.GraphViz.Testing.Instances.Helpers+ Data.GraphViz.Testing.Instances.Attributes+ Data.GraphViz.Testing.Instances.Common+ Data.GraphViz.Testing.Instances.Canonical+ Data.GraphViz.Testing.Instances.Generalised+ Data.GraphViz.Testing.Instances.Graph++ if True+ Ghc-Options: -O -Wall++ if impl(ghc >= 6.12.1)+ Ghc-Options: -fno-warn-unused-do-bind++ GHC-Prof-Options: -auto-all -caf-all -rtsopts+}++Benchmark graphviz-printparse {+ Default-Language: Haskell98++ Type: exitcode-stdio-1.0++ Build-Depends: base,+ deepseq,+ text,+ graphviz,+ criterion >= 0.5 && < 0.7++ hs-Source-Dirs: utils++ Main-Is: Benchmark.hs if True Ghc-Options: -O -Wall
+ tests/Data/GraphViz/Testing.hs view
@@ -0,0 +1,383 @@+{-# LANGUAGE Rank2Types, FlexibleContexts #-}++{- |+ Module : Data.GraphViz.Testing+ Description : Test-suite for graphviz.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ This defines a test-suite for the graphviz library.++ Limitations of the test suite are as follows:++ * For the most part, this library lets you use arbitrary numbers+ for String values. However, this is not tested due to too many+ corner cases for special parsers that don't take arbitrary+ Strings. As the Dot standard is ambiguous over whether you can+ or can't use numbers as Strings (more specifically, if they+ should be quoted or not), this is a user beware situation.++ * Same goes for empty Strings; sometimes they're allowed, sometimes+ they're not. Thus, to simplify matters they're not generated.++ * The generated Strings are very simple, only composed of lower+ case letters, digits and some symbols. This is because too many+ tests were \"failing\" due to some corner case; e.g. lower-case+ letters only because the parser parses Strings as lowercase, so+ if a particular String isn't valid (e.g. @\"all\"@ for 'LayerID',+ then the 'Arbitrary' instance has to ensure that all possible+ ways of capitalising that String isn't generated as a random+ 'LRName'.++ * The generated 'DotRepr's are not guaranteed to be valid.++ * To avoid needless endless recursion, sub-graphs do not have their+ own internal sub-graphs.++ * This test suite isn't perfect: if you deliberately try to stuff+ something up, you probably can.+-}+module Data.GraphViz.Testing+ ( -- * Running the test suite.+ runChosenTests+ , runTests+ , runTest+ -- ** The tests themselves+ , Test(..)+ , defaultTests+ , test_printParseID_Attributes+ , test_generalisedSameDot+ , test_printParseID+ , test_preProcessingID+ , test_dotizeAugment+ , test_dotizeAugmentUniq+ , test_canonicalise+ , test_transitive+ -- * Re-exporting modules for manual testing.+ , module Data.GraphViz+ , module Data.GraphViz.Testing.Properties+ -- * Debugging printing+ , PrintDot(..)+ , printIt+ , renderDot+ -- * Debugging parsing+ , ParseDot(..)+ , parseIt+ , parseIt'+ , runParser+ , preProcess+ ) where++import Test.QuickCheck++import Data.GraphViz.Testing.Instances()+import Data.GraphViz.Testing.Properties++import Data.GraphViz+import Data.GraphViz.Parsing(parseIt, parseIt', runParser)+import Data.GraphViz.PreProcessing(preProcess)+import Data.GraphViz.Printing(printIt, renderDot)+import qualified Data.GraphViz.Types.Generalised as G+import qualified Data.GraphViz.Types.Graph as Gr+-- Can't use PatriciaTree because a Show instance is needed.+import Data.Graph.Inductive.Tree(Gr)++import System.Exit(ExitCode(..), exitWith)+import System.IO(hPutStrLn, stderr)++-- -----------------------------------------------------------------------------++runChosenTests :: [Test] -> IO ()+runChosenTests tsts = do putStrLn msg+ blankLn+ runTests tsts+ spacerLn+ putStrLn successMsg+ where+ msg = "This is the test suite for the graphviz library.\n\+ \If any of these tests fail, please inform the maintainer,\n\+ \including full output of this test suite."++ successMsg = "All tests were successful!"+++-- -----------------------------------------------------------------------------+-- Defining a Test structure and how to run tests.++-- | Defines the test structure being used.+data Test = Test { name :: String+ , lookupName :: String -- ^ Should be lowercase+ , desc :: String+ , tests :: [IO Result] -- ^ QuickCheck test.+ }++-- | Run all of the provided tests.+runTests :: [Test] -> IO ()+runTests = mapM_ ((>>) spacerLn . runTest)++-- | Run the provided test.+runTest :: Test -> IO ()+runTest tst = do putStrLn title+ blankLn+ putStrLn $ desc tst+ blankLn+ run $ tests tst+ blankLn+ where+ nm = '"' : name tst ++ "\""+ title = "Running test: " ++ nm ++ "."+ successMsg = "All tests for " ++ nm ++ " were successful!"+ gaveUpMsg = "Too many sample inputs for " ++ nm ++ " were rejected;\n\+ \tentatively marking this as successful."+ failMsg = "The tests for " ++ nm ++ " failed!\n\+ \Not attempting any further tests."++ run [] = putStrLn successMsg+ run (t:ts) = do r <- t+ case r of+ Success{} -> run ts+ GaveUp{} -> putStrLn gaveUpMsg >> run ts+ _ -> die failMsg++spacerLn :: IO ()+spacerLn = putStrLn (replicate 70 '=') >> blankLn++blankLn :: IO ()+blankLn = putStrLn ""++die :: String -> IO a+die msg = do hPutStrLn stderr msg+ exitWith (ExitFailure 1)++qCheck :: (Testable prop) => prop -> IO Result+qCheck = quickCheckWithResult (stdArgs { maxSize = 50, maxSuccess = 200 })++-- -----------------------------------------------------------------------------+-- Defining the tests to use.++-- | The tests to run by default.+defaultTests :: [Test]+defaultTests = [ test_printParseID_Attributes+ , test_generalisedSameDot+ , test_printParseID+ , test_preProcessingID+ , test_dotizeAugment+ , test_dotizeHasAugment+ , test_dotizeAugmentUniq+ , test_findAllNodes+ , test_findAllNodesE+ , test_findAllEdges+ , test_noGraphInfo+ , test_canonicalise+ , test_transitive+ ]++-- | Test that 'Attributes' can be printed and then parsed back.+test_printParseID_Attributes :: Test+test_printParseID_Attributes+ = Test { name = "Printing and parsing of Attributes"+ , lookupName = "attributes"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: Attributes -> Property+ prop = prop_printParseListID++ dsc = "The most common source of errors in printing and parsing are for\n\+ \Attributes."++test_generalisedSameDot :: Test+test_generalisedSameDot+ = Test { name = "Printing generalised Dot code"+ , lookupName = "makegeneralised"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: DotGraph Int -> Bool+ prop = prop_generalisedSameDot++ dsc = "When generalising \"DotGraph\" values to other \"DotRepr\" values,\n\+ \the generated Dot code should be identical."++test_printParseID :: Test+test_printParseID+ = Test { name = "Printing and Parsing DotReprs"+ , lookupName = "printparseid"+ , desc = dsc+ , tests = tsts+ }+ where+ tsts :: [IO Result]+ tsts = [ qCheck (prop_printParseID :: DotGraph Int -> Bool)+ , qCheck (prop_printParseID :: G.DotGraph Int -> Bool)+ , qCheck (prop_printParseID :: Gr.DotGraph Int -> Bool)+ ]++ dsc = "The graphviz library should be able to parse back in its own\n\+ \generated Dot code for any \"DotRepr\" instance"++test_preProcessingID :: Test+test_preProcessingID+ = Test { name = "Pre-processing Dot code"+ , lookupName = "preprocessing"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: DotGraph Int -> Bool+ prop = prop_preProcessingID++ dsc = "When parsing Dot code, some pre-processing is done to remove items\n\+ \such as comments and to join together multi-line strings. This\n\+ \test verifies that this pre-processing doesn't affect actual\n\+ \Dot code by running the pre-processor on generated Dot code.\n\n\+ \This test is not run on generalised Dot graphs as if it works for\n\+ \normal dot graphs then it should also work for generalised ones."++test_dotizeAugment :: Test+test_dotizeAugment+ = Test { name = "Augmenting FGL Graphs"+ , lookupName = "augment"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: Gr Char Double -> Bool+ prop = prop_dotizeAugment++ dsc = "The various Graph to Graph functions in Data.GraphViz should\n\+ \only _augment_ the graph labels and not change the graphs\n\+ \themselves. This test compares the original graphs to these\n\+ \augmented graphs and verifies that they are the same."++test_dotizeHasAugment :: Test+test_dotizeHasAugment+ = Test { name = "Ensuring augmentation of FGL Graphs"+ , lookupName = "hasaugment"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: Gr Char Double -> Bool+ prop = prop_dotizeHasAugment++ dsc = "The various Graph to Graph functions in Data.GraphViz should\n\+ \actually agument the graph labels; this ensures that all labels\n\+ \actually have attached Attributes after augmentation."++test_dotizeAugmentUniq :: Test+test_dotizeAugmentUniq+ = Test { name = "Unique edges in augmented FGL Graphs"+ , lookupName = "augmentuniq"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: Gr Char Double -> Bool+ prop = prop_dotizeAugmentUniq++ dsc = "When augmenting a graph with multiple edges, as long as no\n\+ \Attributes are provided that override the default settings,\n\+ \then each edge between two nodes should have a unique position\n\+ \Attribute, etc."++test_findAllNodes :: Test+test_findAllNodes+ = Test { name = "Ensure all nodes are found in a DotRepr"+ , lookupName = "findnodes"+ , desc = dsc+ , tests = map qCheck props+ }+ where+ props :: [Gr () () -> Bool]+ props = testAllGraphTypes prop_findAllNodes++ dsc = "nodeInformation should find all nodes in a DotRepr;\n\+ \this is tested by converting an FGL graph and comparing\n\+ \the nodes it should have to those that are found."++test_findAllNodesE :: Test+test_findAllNodesE+ = Test { name = "Ensure all nodes are found in a node-less DotRepr"+ , lookupName = "findedgelessnodes"+ , desc = dsc+ , tests = map qCheck props+ }+ where+ props :: [Gr () () -> Bool]+ props = testAllGraphTypes prop_findAllNodesE++ dsc = "nodeInformation should find all nodes in a DotRepr,\n\+ \even if there are no explicit nodes in that graph.\n\+ \This is tested by converting an FGL graph and comparing\n\+ \the nodes it should have to those that are found."++test_findAllEdges :: Test+test_findAllEdges+ = Test { name = "Ensure all edges are found in a DotRepr"+ , lookupName = "findedges"+ , desc = dsc+ , tests = map qCheck props+ }+ where+ props :: [Gr () () -> Bool]+ props = testAllGraphTypes prop_findAllEdges++ dsc = "nodeInformation should find all edges in a DotRepr;\n\+ \this is tested by converting an FGL graph and comparing\n\+ \the edges it should have to those that are found."++test_noGraphInfo :: Test+test_noGraphInfo+ = Test { name = "Plain DotReprs should have no structural information"+ , lookupName = "nographinfo"+ , desc = dsc+ , tests = map qCheck props+ }+ where+ props :: [Gr () () -> Bool]+ props = testAllGraphTypes prop_noGraphInfo++ dsc = "When converting a Graph to a DotRepr, there should be no\n\+ \clusters or global attributes."++test_canonicalise :: Test+test_canonicalise+ = Test { name = "Canonicalisation should be idempotent"+ , lookupName = "canonicalise"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: DotGraph Int -> Bool+ prop = prop_canonicalise++ dsc = "Repeated application of canonicalise shouldn't have any further affect."++test_transitive :: Test+test_transitive+ = Test { name = "Transitive reduction should be idempotent"+ , lookupName = "transitive"+ , desc = dsc+ , tests = [qCheck prop]+ }+ where+ prop :: DotGraph Int -> Bool+ prop = prop_transitive++ dsc = "Repeated application of transitiveReduction shouldn't have any further affect."++-- -----------------------------------------------------------------------------++-- | Used when a property takes in a DotRepr as the first argument to+-- indicate which instance it should test via 'fromCanonical'.+testAllGraphTypes :: (Testable prop)+ => (forall dg. (Eq (dg Int), DotRepr dg Int) => dg Int -> prop)+ -> [prop]+testAllGraphTypes prop = [ prop (undefined :: DotGraph Int)+ , prop (undefined :: G.DotGraph Int)+ , prop (undefined :: Gr.DotGraph Int)+ ]
+ tests/Data/GraphViz/Testing/Instances.hs view
@@ -0,0 +1,27 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Testing.Instances+ Description : 'Arbitrary' instances for graphviz.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ This module exports the 'Arbitrary' instances for the various types+ used to represent Graphviz Dot code.++ Note that they do not generally generate /sensible/ values for the+ various types; in particular, there's no guarantee that the+ 'Attributes' chosen for a particular value type are indeed legal+ for that type.+ -}+module Data.GraphViz.Testing.Instances() where++import Data.GraphViz.Testing.Instances.FGL()+import Data.GraphViz.Testing.Instances.Canonical()+import Data.GraphViz.Testing.Instances.Generalised()+import Data.GraphViz.Testing.Instances.Graph()++-- -----------------------------------------------------------------------------+
+ tests/Data/GraphViz/Testing/Instances/Attributes.hs view
@@ -0,0 +1,960 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Attributes+ Description : Attribute instances for Arbitrary.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Attributes+ ( arbGraphAttrs+ , arbSubGraphAttrs+ , arbClusterAttrs+ , arbNodeAttrs+ , arbEdgeAttrs+ ) where++import Data.GraphViz.Testing.Instances.Helpers++import Data.GraphViz.Attributes.Complete+import qualified Data.GraphViz.Attributes.HTML as Html+import Data.GraphViz.Attributes.Colors.Brewer+import Data.GraphViz.Attributes.Colors.X11(X11Color)+import Data.GraphViz.Attributes.Colors.SVG(SVGColor)+import Data.GraphViz.Attributes.Internal(compassLookup)+import Data.GraphViz.State(initialState, layerSep)+import Data.GraphViz.Util(bool)++import Test.QuickCheck++import Data.List(nub, delete, groupBy)+import qualified Data.Map as Map+import qualified Data.Text.Lazy as T+import Data.Text.Lazy(Text)+import Control.Monad(liftM, liftM2, liftM3, liftM4)+import System.FilePath(searchPathSeparator)++-- -----------------------------------------------------------------------------+-- Defining Arbitrary instances for Attributes++arbGraphAttrs :: Gen Attributes+arbGraphAttrs = arbAttrs usedByGraphs++arbSubGraphAttrs :: Gen Attributes+arbSubGraphAttrs = arbAttrs usedBySubGraphs++arbClusterAttrs :: Gen Attributes+arbClusterAttrs = arbAttrs usedByClusters++arbNodeAttrs :: Gen Attributes+arbNodeAttrs = arbAttrs usedByNodes++arbEdgeAttrs :: Gen Attributes+arbEdgeAttrs = arbAttrs usedByEdges++arbAttrs :: (Attribute -> Bool) -> Gen Attributes+arbAttrs p = liftM (filter p) arbList++instance Arbitrary Attribute where+ arbitrary = oneof [ liftM Damping arbitrary+ , liftM K arbitrary+ , liftM URL arbitrary+ , liftM ArrowHead arbitrary+ , liftM ArrowSize arbitrary+ , liftM ArrowTail arbitrary+ , liftM Aspect arbitrary+ , liftM BoundingBox arbitrary+ , liftM ColorScheme arbitrary+ , liftM BgColor arbList+ , liftM Center arbitrary+ , liftM ClusterRank arbitrary+ , liftM Color arbList+ , liftM Comment arbitrary+ , liftM Compound arbitrary+ , liftM Concentrate arbitrary+ , liftM Constraint arbitrary+ , liftM Decorate arbitrary+ , liftM DefaultDist arbitrary+ , liftM Dim arbitrary+ , liftM Dimen arbitrary+ , liftM Dir arbitrary+ , liftM DirEdgeConstraints arbitrary+ , liftM Distortion arbitrary+ , liftM DPI arbitrary+ , liftM EdgeURL arbitrary+ , liftM EdgeTarget arbitrary+ , liftM EdgeTooltip arbitrary+ , liftM Epsilon arbitrary+ , liftM ESep arbitrary+ , liftM FillColor arbList+ , liftM FixedSize arbitrary+ , liftM FontColor arbitrary+ , liftM FontName arbitrary+ , liftM FontNames arbitrary+ , liftM FontPath arbitrary+ , liftM FontSize arbitrary+ , liftM ForceLabels arbitrary+ , liftM GradientAngle arbitrary+ , liftM Group arbitrary+ , liftM HeadURL arbitrary+ , liftM HeadClip arbitrary+ , liftM HeadLabel arbitrary+ , liftM HeadPort arbitrary+ , liftM HeadTarget arbitrary+ , liftM HeadTooltip arbitrary+ , liftM Height arbitrary+ , liftM ID arbitrary+ , liftM Image arbitrary+ , liftM ImagePath arbitrary+ , liftM ImageScale arbitrary+ , liftM Label arbitrary+ , liftM LabelURL arbitrary+ , liftM LabelScheme arbitrary+ , liftM LabelAngle arbitrary+ , liftM LabelDistance arbitrary+ , liftM LabelFloat arbitrary+ , liftM LabelFontColor arbitrary+ , liftM LabelFontName arbitrary+ , liftM LabelFontSize arbitrary+ , liftM LabelJust arbitrary+ , liftM LabelLoc arbitrary+ , liftM LabelTarget arbitrary+ , liftM LabelTooltip arbitrary+ , liftM Landscape arbitrary+ , liftM Layer arbitrary+ , liftM Layers arbitrary+ , liftM LayerSep arbitrary+ , liftM Layout arbitrary+ , liftM Len arbitrary+ , liftM LevelsGap arbitrary+ , liftM Levels arbitrary+ , liftM LHead arbitrary+ , liftM LHeight arbitrary+ , liftM LPos arbitrary+ , liftM LTail arbitrary+ , liftM LWidth arbitrary+ , liftM Margin arbitrary+ , liftM MaxIter arbitrary+ , liftM MCLimit arbitrary+ , liftM MinDist arbitrary+ , liftM MinLen arbitrary+ , liftM Mode arbitrary+ , liftM Model arbitrary+ , liftM Mosek arbitrary+ , liftM NodeSep arbitrary+ , liftM NoJustify arbitrary+ , liftM Normalize arbitrary+ , liftM Nslimit arbitrary+ , liftM Nslimit1 arbitrary+ , liftM Ordering arbitrary+ , liftM Orientation arbitrary+ , liftM OutputOrder arbitrary+ , liftM Overlap arbitrary+ , liftM OverlapScaling arbitrary+ , liftM Pack arbitrary+ , liftM PackMode arbitrary+ , liftM Pad arbitrary+ , liftM Page arbitrary+ , liftM PageDir arbitrary+ , liftM PenColor arbitrary+ , liftM PenWidth arbitrary+ , liftM Peripheries arbitrary+ , liftM Pin arbitrary+ , liftM Pos arbitrary+ , liftM QuadTree arbitrary+ , liftM Quantum arbitrary+ , liftM Rank arbitrary+ , liftM RankDir arbitrary+ , liftM RankSep arbList+ , liftM Ratio arbitrary+ , liftM Rects arbList+ , liftM Regular arbitrary+ , liftM ReMinCross arbitrary+ , liftM RepulsiveForce arbitrary+ , liftM Root arbitrary+ , liftM Rotate arbitrary+ , liftM Rotation arbitrary+ , liftM SameHead arbitrary+ , liftM SameTail arbitrary+ , liftM SamplePoints arbitrary+ , liftM Scale arbitrary+ , liftM SearchSize arbitrary+ , liftM Sep arbitrary+ , liftM Shape arbitrary+ , liftM ShapeFile arbitrary+ , liftM ShowBoxes arbitrary+ , liftM Sides arbitrary+ , liftM Size arbitrary+ , liftM Skew arbitrary+ , liftM Smoothing arbitrary+ , liftM SortV arbitrary+ , liftM Splines arbitrary+ , liftM Start arbitrary+ , liftM Style arbList+ , liftM StyleSheet arbitrary+ , liftM TailURL arbitrary+ , liftM TailClip arbitrary+ , liftM TailLabel arbitrary+ , liftM TailPort arbitrary+ , liftM TailTarget arbitrary+ , liftM TailTooltip arbitrary+ , liftM Target arbitrary+ , liftM Tooltip arbitrary+ , liftM TrueColor arbitrary+ , liftM Vertices arbList+ , liftM ViewPort arbitrary+ , liftM VoroMargin arbitrary+ , liftM Weight arbitrary+ , liftM Width arbitrary+ , liftM XLabel arbitrary+ , liftM Z arbitrary+ , liftM2 UnknownAttribute (suchThat arbIDString validUnknown) arbitrary+ ]++ shrink (Damping v) = map Damping $ shrink v+ shrink (K v) = map K $ shrink v+ shrink (URL v) = map URL $ shrink v+ shrink (ArrowHead v) = map ArrowHead $ shrink v+ shrink (ArrowSize v) = map ArrowSize $ shrink v+ shrink (ArrowTail v) = map ArrowTail $ shrink v+ shrink (Aspect v) = map Aspect $ shrink v+ shrink (BoundingBox v) = map BoundingBox $ shrink v+ shrink (ColorScheme v) = map ColorScheme $ shrink v+ shrink (BgColor v) = map BgColor $ nonEmptyShrinks v+ shrink (Center v) = map Center $ shrink v+ shrink (ClusterRank v) = map ClusterRank $ shrink v+ shrink (Color v) = map Color $ nonEmptyShrinks v+ shrink (Comment v) = map Comment $ shrink v+ shrink (Compound v) = map Compound $ shrink v+ shrink (Concentrate v) = map Concentrate $ shrink v+ shrink (Constraint v) = map Constraint $ shrink v+ shrink (Decorate v) = map Decorate $ shrink v+ shrink (DefaultDist v) = map DefaultDist $ shrink v+ shrink (Dim v) = map Dim $ shrink v+ shrink (Dimen v) = map Dimen $ shrink v+ shrink (Dir v) = map Dir $ shrink v+ shrink (DirEdgeConstraints v) = map DirEdgeConstraints $ shrink v+ shrink (Distortion v) = map Distortion $ shrink v+ shrink (DPI v) = map DPI $ shrink v+ shrink (EdgeURL v) = map EdgeURL $ shrink v+ shrink (EdgeTarget v) = map EdgeTarget $ shrink v+ shrink (EdgeTooltip v) = map EdgeTooltip $ shrink v+ shrink (Epsilon v) = map Epsilon $ shrink v+ shrink (ESep v) = map ESep $ shrink v+ shrink (FillColor v) = map FillColor $ nonEmptyShrinks v+ shrink (FixedSize v) = map FixedSize $ shrink v+ shrink (FontColor v) = map FontColor $ shrink v+ shrink (FontName v) = map FontName $ shrink v+ shrink (FontNames v) = map FontNames $ shrink v+ shrink (FontPath v) = map FontPath $ shrink v+ shrink (FontSize v) = map FontSize $ shrink v+ shrink (ForceLabels v) = map ForceLabels $ shrink v+ shrink (GradientAngle v) = map GradientAngle $ shrink v+ shrink (Group v) = map Group $ shrink v+ shrink (HeadURL v) = map HeadURL $ shrink v+ shrink (HeadClip v) = map HeadClip $ shrink v+ shrink (HeadLabel v) = map HeadLabel $ shrink v+ shrink (HeadPort v) = map HeadPort $ shrink v+ shrink (HeadTarget v) = map HeadTarget $ shrink v+ shrink (HeadTooltip v) = map HeadTooltip $ shrink v+ shrink (Height v) = map Height $ shrink v+ shrink (ID v) = map ID $ shrink v+ shrink (Image v) = map Image $ shrink v+ shrink (ImagePath v) = map ImagePath $ shrink v+ shrink (ImageScale v) = map ImageScale $ shrink v+ shrink (Label v) = map Label $ shrink v+ shrink (LabelURL v) = map LabelURL $ shrink v+ shrink (LabelScheme v) = map LabelScheme $ shrink v+ shrink (LabelAngle v) = map LabelAngle $ shrink v+ shrink (LabelDistance v) = map LabelDistance $ shrink v+ shrink (LabelFloat v) = map LabelFloat $ shrink v+ shrink (LabelFontColor v) = map LabelFontColor $ shrink v+ shrink (LabelFontName v) = map LabelFontName $ shrink v+ shrink (LabelFontSize v) = map LabelFontSize $ shrink v+ shrink (LabelJust v) = map LabelJust $ shrink v+ shrink (LabelLoc v) = map LabelLoc $ shrink v+ shrink (LabelTarget v) = map LabelTarget $ shrink v+ shrink (LabelTooltip v) = map LabelTooltip $ shrink v+ shrink (Landscape v) = map Landscape $ shrink v+ shrink (Layer v) = map Layer $ shrink v+ shrink (Layers v) = map Layers $ shrink v+ shrink (LayerSep v) = map LayerSep $ shrink v+ shrink (Layout v) = map Layout $ shrink v+ shrink (Len v) = map Len $ shrink v+ shrink (LevelsGap v) = map LevelsGap $ shrink v+ shrink (Levels v) = map Levels $ shrink v+ shrink (LHead v) = map LHead $ shrink v+ shrink (LHeight v) = map LHeight $ shrink v+ shrink (LPos v) = map LPos $ shrink v+ shrink (LTail v) = map LTail $ shrink v+ shrink (LWidth v) = map LWidth $ shrink v+ shrink (Margin v) = map Margin $ shrink v+ shrink (MaxIter v) = map MaxIter $ shrink v+ shrink (MCLimit v) = map MCLimit $ shrink v+ shrink (MinDist v) = map MinDist $ shrink v+ shrink (MinLen v) = map MinLen $ shrink v+ shrink (Mode v) = map Mode $ shrink v+ shrink (Model v) = map Model $ shrink v+ shrink (Mosek v) = map Mosek $ shrink v+ shrink (NodeSep v) = map NodeSep $ shrink v+ shrink (NoJustify v) = map NoJustify $ shrink v+ shrink (Normalize v) = map Normalize $ shrink v+ shrink (Nslimit v) = map Nslimit $ shrink v+ shrink (Nslimit1 v) = map Nslimit1 $ shrink v+ shrink (Ordering v) = map Ordering $ shrink v+ shrink (Orientation v) = map Orientation $ shrink v+ shrink (OutputOrder v) = map OutputOrder $ shrink v+ shrink (Overlap v) = map Overlap $ shrink v+ shrink (OverlapScaling v) = map OverlapScaling $ shrink v+ shrink (Pack v) = map Pack $ shrink v+ shrink (PackMode v) = map PackMode $ shrink v+ shrink (Pad v) = map Pad $ shrink v+ shrink (Page v) = map Page $ shrink v+ shrink (PageDir v) = map PageDir $ shrink v+ shrink (PenColor v) = map PenColor $ shrink v+ shrink (PenWidth v) = map PenWidth $ shrink v+ shrink (Peripheries v) = map Peripheries $ shrink v+ shrink (Pin v) = map Pin $ shrink v+ shrink (Pos v) = map Pos $ shrink v+ shrink (QuadTree v) = map QuadTree $ shrink v+ shrink (Quantum v) = map Quantum $ shrink v+ shrink (Rank v) = map Rank $ shrink v+ shrink (RankDir v) = map RankDir $ shrink v+ shrink (RankSep v) = map RankSep $ nonEmptyShrinks v+ shrink (Ratio v) = map Ratio $ shrink v+ shrink (Rects v) = map Rects $ nonEmptyShrinks v+ shrink (Regular v) = map Regular $ shrink v+ shrink (ReMinCross v) = map ReMinCross $ shrink v+ shrink (RepulsiveForce v) = map RepulsiveForce $ shrink v+ shrink (Root v) = map Root $ shrink v+ shrink (Rotate v) = map Rotate $ shrink v+ shrink (Rotation v) = map Rotation $ shrink v+ shrink (SameHead v) = map SameHead $ shrink v+ shrink (SameTail v) = map SameTail $ shrink v+ shrink (SamplePoints v) = map SamplePoints $ shrink v+ shrink (Scale v) = map Scale $ shrink v+ shrink (SearchSize v) = map SearchSize $ shrink v+ shrink (Sep v) = map Sep $ shrink v+ shrink (Shape v) = map Shape $ shrink v+ shrink (ShapeFile v) = map ShapeFile $ shrink v+ shrink (ShowBoxes v) = map ShowBoxes $ shrink v+ shrink (Sides v) = map Sides $ shrink v+ shrink (Size v) = map Size $ shrink v+ shrink (Skew v) = map Skew $ shrink v+ shrink (Smoothing v) = map Smoothing $ shrink v+ shrink (SortV v) = map SortV $ shrink v+ shrink (Splines v) = map Splines $ shrink v+ shrink (Start v) = map Start $ shrink v+ shrink (Style v) = map Style $ nonEmptyShrinks v+ shrink (StyleSheet v) = map StyleSheet $ shrink v+ shrink (TailURL v) = map TailURL $ shrink v+ shrink (TailClip v) = map TailClip $ shrink v+ shrink (TailLabel v) = map TailLabel $ shrink v+ shrink (TailPort v) = map TailPort $ shrink v+ shrink (TailTarget v) = map TailTarget $ shrink v+ shrink (TailTooltip v) = map TailTooltip $ shrink v+ shrink (Target v) = map Target $ shrink v+ shrink (Tooltip v) = map Tooltip $ shrink v+ shrink (TrueColor v) = map TrueColor $ shrink v+ shrink (Vertices v) = map Vertices $ nonEmptyShrinks v+ shrink (ViewPort v) = map ViewPort $ shrink v+ shrink (VoroMargin v) = map VoroMargin $ shrink v+ shrink (Weight v) = map Weight $ shrink v+ shrink (Width v) = map Width $ shrink v+ shrink (XLabel v) = map XLabel $ shrink v+ shrink (Z v) = map Z $ shrink v+ shrink (UnknownAttribute a v) = liftM2 UnknownAttribute (liftM (filter validUnknown) shrink a) (shrink v)+{- delete to here -}++instance Arbitrary ArrowType where+ arbitrary = liftM AType+ -- Arrow specifications have between 1 and 4 elements.+ $ sized (\ s -> resize (min s 4) arbList)++ shrink (AType as) = map AType $ nonEmptyShrinks as++instance Arbitrary ArrowShape where+ arbitrary = arbBounded++instance Arbitrary ArrowModifier where+ arbitrary = liftM2 ArrMod arbitrary arbitrary++instance Arbitrary ArrowFill where+ arbitrary = arbBounded++instance Arbitrary ArrowSide where+ arbitrary = arbBounded++instance Arbitrary AspectType where+ arbitrary = oneof [ liftM RatioOnly arbitrary+ , liftM2 RatioPassCount arbitrary posArbitrary+ ]++ shrink (RatioOnly d) = map RatioOnly $ shrink d+ shrink (RatioPassCount d i) = do ds <- shrink d+ is <- shrink i+ return $ RatioPassCount ds is++instance Arbitrary LabelScheme where+ arbitrary = arbBounded++instance Arbitrary Rect where+ arbitrary = liftM2 Rect point2D point2D++ shrink (Rect p1 p2) = do p1s <- shrink p1+ p2s <- shrink p2+ return $ Rect p1s p2s++instance Arbitrary Point where+ -- Pretty sure points have to be positive...+ arbitrary = liftM4 Point posArbitrary posArbitrary posZ arbitrary+ where+ posZ = frequency [(1, return Nothing), (3, liftM Just posArbitrary)]++ shrink p = do x' <- shrink $ xCoord p+ y' <- shrink $ yCoord p+ z' <- shrinkM $ zCoord p+ return $ Point x' y' z' False++point2D :: Gen Point+point2D = liftM2 createPoint posArbitrary posArbitrary++instance Arbitrary ClusterMode where+ arbitrary = arbBounded++instance Arbitrary DirType where+ arbitrary = arbBounded++instance Arbitrary DEConstraints where+ arbitrary = arbBounded++instance Arbitrary DPoint where+ arbitrary = oneof [ liftM DVal arbitrary+ , liftM PVal point2D+ ]++ shrink (DVal d) = map DVal $ shrink d+ shrink (PVal p) = map PVal $ shrink p++instance Arbitrary ModeType where+ arbitrary = arbBounded++instance Arbitrary Model where+ arbitrary = arbBounded++instance Arbitrary Label where+ arbitrary = oneof [ liftM StrLabel arbitrary+ , liftM HtmlLabel arbitrary+ , liftM RecordLabel $ suchThat arbList notStr+ ]++ shrink (StrLabel str) = map StrLabel $ shrink str+ shrink (HtmlLabel html) = map HtmlLabel $ shrink html+ shrink (RecordLabel fs) = map RecordLabel . filter notStr $ shrinkList fs++notStr :: RecordFields -> Bool+notStr [FieldLabel{}] = False -- Just in case+notStr _ = True++arbField :: Bool -> Int -> Gen RecordField+arbField b s = resize s'+ . oneof+ . bool id ((:) genFlipped) b+ $ [ liftM2 LabelledTarget arbitrary arbitrary+ , liftM PortName arbitrary+ , liftM FieldLabel arbitrary+ ]+ where+ genFlipped = liftM FlipFields+ $ listOf1 (sized $ arbField False)+ s' = min 3 s++instance Arbitrary RecordField where+ arbitrary = sized (arbField True)++ shrink (LabelledTarget f l) = [PortName f, FieldLabel l]+ shrink (PortName f) = map PortName $ shrink f+ shrink (FieldLabel l) = map FieldLabel $ shrink l+ shrink (FlipFields fs) = map FlipFields $ shrinkList fs++instance Arbitrary Overlap where+ arbitrary = oneof [ simpleOverlap+ , liftM PrismOverlap arbitrary+ ]+ where+ -- Have to do this by hand since Overlap can't have Bounded and+ -- Enum instances+ simpleOverlap = elements [ KeepOverlaps+ , ScaleOverlaps+ , ScaleXYOverlaps+ , CompressOverlap+ , VpscOverlap+ , IpsepOverlap+ ]++ shrink (PrismOverlap mi) = map PrismOverlap $ shrink mi+ shrink _ = []++instance Arbitrary LayerSep where+ -- Since Arbitrary isn't stateful, we can't generate an arbitrary+ -- one because of arbLayerName+ arbitrary = return . LSep . T.pack $ layerSep initialState++instance Arbitrary LayerList where+ arbitrary = liftM LL $ listOf1 arbName+ where+ arbName = suchThat arbitrary isLayerName++ isLayerName LRName{} = True+ isLayerName _ = False++ shrink (LL ll) = map LL $ nonEmptyShrinks ll++instance Arbitrary LayerRange where+ arbitrary = oneof [ liftM LRID arbitrary+ , liftM2 LRS arbitrary arbitrary+ ]++ shrink (LRID nm) = map LRID $ shrink nm+ shrink (LRS l1 l2) = [LRID l1, LRID l2]++instance Arbitrary LayerID where+ arbitrary = oneof [ return AllLayers+ , liftM LRInt arbitrary+ , liftM LRName $ suchThat arbLayerName lrnameCheck+ ]++ shrink AllLayers = []+ shrink (LRInt i) = map LRInt $ shrink i+ shrink (LRName nm) = map LRName+ . filter lrnameCheck+ $ shrink nm++lrnameCheck :: Text -> Bool+lrnameCheck = (/=) "all"++instance Arbitrary Order where+ arbitrary = arbBounded++instance Arbitrary OutputMode where+ arbitrary = arbBounded++instance Arbitrary Pack where+ arbitrary = oneof [ return DoPack+ , return DontPack+ , liftM PackMargin arbitrary+ ]++ shrink (PackMargin m) = map PackMargin $ shrink m+ shrink _ = []++instance Arbitrary PackMode where+ arbitrary = oneof [ return PackNode+ , return PackClust+ , return PackGraph+ , liftM3 PackArray arbitrary arbitrary arbitrary+ ]++ shrink (PackArray c u mi) = map (PackArray c u) $ shrink mi+ shrink _ = []++instance Arbitrary Pos where+ arbitrary = oneof [ liftM PointPos arbitrary+ -- A single spline with only one point overall+ -- is just a point...+ , liftM SplinePos $ suchThat arbList validSplineList+ ]++ shrink (PointPos p) = map PointPos $ shrink p+ shrink (SplinePos ss) = map SplinePos . filter validSplineList+ $ nonEmptyShrinks ss++validSplineList :: [Spline] -> Bool+validSplineList [Spline Nothing Nothing [_]] = False+validSplineList _ = True++instance Arbitrary Spline where+ arbitrary = liftM3 Spline arbitrary arbitrary+ -- list of points must have length of 1 mod 3+ $ suchThat arbitrary ((==) 1 . flip mod 3 . length)++ shrink (Spline Nothing Nothing [p]) = map (Spline Nothing Nothing . return)+ $ shrink p+ -- We're not going to be shrinking the points in the list; just+ -- making sure that its length is === 1 mod 3+ shrink (Spline ms me ps) = do mss <- shrinkM ms+ mes <- shrinkM me+ pss <- rem2 ps+ return $ Spline mss mes pss+ where++ rem1 [] = []+ rem1 (a:as) = as : map (a:) (rem1 as)++ rem2 = nub . concatMap rem1 . rem1++instance Arbitrary EdgeType where+ arbitrary = arbBounded++instance Arbitrary PageDir where+ arbitrary = arbBounded++instance Arbitrary QuadType where+ arbitrary = arbBounded++instance Arbitrary Root where+ arbitrary = oneof [ return IsCentral+ , return NotCentral+ , liftM NodeName arbitrary+ ]++ shrink (NodeName nm) = map NodeName $ shrink nm+ shrink _ = []++instance Arbitrary RankType where+ arbitrary = arbBounded++instance Arbitrary RankDir where+ arbitrary = arbBounded++instance Arbitrary Shape where+ arbitrary = arbBounded++instance Arbitrary SmoothType where+ arbitrary = arbBounded++instance Arbitrary StartType where+ arbitrary = oneof [ liftM StartStyle arbitrary+ , liftM StartSeed arbitrary+ , liftM2 StartStyleSeed arbitrary arbitrary+ ]++ shrink StartStyle{} = [] -- No shrinks for STStyle+ shrink (StartSeed ss) = map StartSeed $ shrink ss+ shrink (StartStyleSeed st ss) = map (StartStyleSeed st) $ shrink ss++instance Arbitrary STStyle where+ arbitrary = arbBounded++instance Arbitrary StyleItem where+ arbitrary = liftM2 SItem arbitrary (listOf arbStyleName)++ -- Can't use this because of what shrink on the individual strings+ -- might do.+ -- shrink (SItem sn opts) = map (SItem sn) $ shrink opts++instance Arbitrary StyleName where+ arbitrary = oneof [ defaultStyles+ , liftM DD $ suchThat arbStyleName notDefault+ ]+ where+ defaultStyles = elements [ Dashed+ , Dotted+ , Bold+ , Invisible+ , Filled+ , Diagonals+ , Rounded+ , Tapered+ , Radial+ ]+ notDefault = flip notElem [ "dashed"+ , "dotted"+ , "solid"+ , "bold"+ , "invis"+ , "filled"+ , "diagonals"+ , "rounded"+ , "tapered"+ , "radial"+ ]++instance Arbitrary PortPos where+ arbitrary = oneof [ liftM2 LabelledPort arbitrary arbitrary+ , liftM CompassPoint arbitrary+ ]++ shrink (LabelledPort pn mc) = map (flip LabelledPort mc) $ shrink pn+ shrink _ = []++instance Arbitrary CompassPoint where+ arbitrary = arbBounded++instance Arbitrary ViewPort where+ arbitrary = liftM4 VP arbitrary arbitrary arbitrary arbitrary++ shrink (VP w h z f) = case sVPs of+ [_] -> []+ _ -> sVPs+ where+ sVPs = do ws <- shrink w+ hs <- shrink h+ zs <- shrink z+ fs <- shrinkM f+ return $ VP ws hs zs fs++instance Arbitrary FocusType where+ arbitrary = oneof [ liftM XY arbitrary+ , liftM NodeFocus $ suchThat arbitrary (T.all ((/=) ','))+ ]++ shrink (XY p) = map XY $ shrink p+ shrink (NodeFocus str) = map NodeFocus $ shrink str++instance Arbitrary VerticalPlacement where+ arbitrary = arbBounded++instance Arbitrary Paths where+ arbitrary = liftM Paths $ listOf1 arbFilePath++ shrink (Paths ps) = map Paths $ nonEmptyShrinks' ps++arbFilePath :: Gen FilePath+arbFilePath = suchThat arbString (searchPathSeparator `notElem`)++instance Arbitrary ScaleType where+ arbitrary = arbBounded++instance Arbitrary Justification where+ arbitrary = arbBounded++instance Arbitrary Ratios where+ arbitrary = oneof [ liftM AspectRatio posArbitrary+ , namedRats+ ]+ where+ namedRats = elements [ FillRatio+ , CompressRatio+ , ExpandRatio+ , AutoRatio+ ]++ shrink (AspectRatio r) = map (AspectRatio . fromPositive)+ . shrink $ Positive r+ shrink _ = []++instance Arbitrary ColorScheme where+ arbitrary = oneof [ return X11+ , liftM Brewer arbitrary+ ]++ shrink (Brewer bs) = map Brewer $ shrink bs+ shrink _ = []++instance Arbitrary BrewerScheme where+ arbitrary = liftM2 BScheme arbitrary arbitrary -- Not /quite/ right, but close enough++ shrink (BScheme nm l) = map (BScheme nm) $ shrink l++instance Arbitrary BrewerName where+ arbitrary = arbBounded++instance Arbitrary Color where+ arbitrary = oneof [ liftM3 RGB arbitrary arbitrary arbitrary+ , liftM4 RGBA arbitrary arbitrary arbitrary arbitrary+ , liftM3 HSV zeroOne zeroOne zeroOne+ , liftM X11Color arbitrary+ , liftM SVGColor arbitrary+ , liftM BrewerColor arbitrary+ ]+ where+ zeroOne = choose (0,1)++ shrink (RGB r g b) = do rs <- shrink r+ gs <- shrink g+ bs <- shrink b+ return $ RGB rs gs bs+ shrink (RGBA r g b a) = RGB r g b+ : do rs <- shrink r+ gs <- shrink g+ bs <- shrink b+ as <- shrink a+ return $ RGBA rs gs bs as+ shrink (BrewerColor c) = map BrewerColor $ shrink c+ shrink _ = [] -- Shrinking 0<=h,s,v<=1 does nothing++instance Arbitrary X11Color where+ arbitrary = arbBounded++instance Arbitrary SVGColor where+ arbitrary = arbBounded++-- | Not quite right as the values can get too high/low, but should+-- suffice for printing/parsing purposes.+instance Arbitrary BrewerColor where+ arbitrary = liftM2 BC arbitrary arbitrary++ shrink (BC s c) = map (BC s) $ shrink c++instance Arbitrary Html.Label where+ arbitrary = sized $ arbHtml True++ shrink ht@(Html.Text txts) = delete ht . map Html.Text $ shrinkL txts+ shrink (Html.Table tbl) = map Html.Table $ shrink tbl++-- Note: for the most part, Html.Label values are very repetitive (and+-- furthermore, they end up chewing a large amount of memory). As+-- such, use resize to limit how large the actual Html.Label values+-- become.+arbHtml :: Bool -> Int -> Gen Html.Label+arbHtml table s = resize' $ frequency options+ where+ s' = min 2 s+ resize' = if not table+ then resize s'+ else id+ allowTable = if table+ then (:) (1, arbTbl)+ else id+ arbTbl = liftM Html.Table arbitrary+ options = allowTable [ (20, liftM Html.Text . sized $ arbHtmlTexts table) ]++arbHtmlTexts :: Bool -> Int -> Gen Html.Text+arbHtmlTexts fnt s = liftM simplifyHtmlText+ . resize s'+ . listOf1+ . sized+ $ arbHtmlText fnt+ where+ s' = min s 10++-- When parsing, all textual characters are parsed together; thus,+-- make sure we generate them like that.+simplifyHtmlText :: Html.Text -> Html.Text+simplifyHtmlText = map head . groupBy sameType+ where+ sameType Html.Str{} Html.Str{} = True+ sameType Html.Newline{} Html.Newline{} = True+ sameType Html.Font{} Html.Font{} = True+ sameType (Html.Format fmt1 _) (Html.Format fmt2 _) = fmt1 == fmt2+ sameType _ _ = False++instance Arbitrary Html.TextItem where+ arbitrary = sized $ arbHtmlText True++ shrink (Html.Str str) = map Html.Str $ shrink str+ shrink (Html.Newline as) = map Html.Newline $ shrink as+ shrink hf@(Html.Font as txt) = do as' <- shrink as+ txt' <- shrinkL txt+ returnCheck hf $ Html.Font as' txt'+ shrink (Html.Format _ txt) = txt++arbHtmlText :: Bool -> Int -> Gen Html.TextItem+arbHtmlText font s = frequency options+ where+ allowFonts = if font+ then (++) recHtmlText+ else id+ s' = min 2 s+ arbRec = resize s' . sized $ arbHtmlTexts False+ recHtmlText = [ (1, liftM2 Html.Font arbitrary arbRec)+ , (3, liftM2 Html.Format arbitrary arbRec)+ ]+ options = allowFonts [ (10, liftM Html.Str arbitrary)+ , (10, liftM Html.Newline arbitrary)+ ]++instance Arbitrary Html.Format where+ arbitrary = arbBounded++instance Arbitrary Html.Table where+ arbitrary = liftM3 Html.HTable arbitrary arbitrary (sized arbRows)+ where+ arbRows s = resize (min s 10) arbList++ shrink (Html.HTable fas as rs) = map (Html.HTable fas as) $ shrinkL rs++instance Arbitrary Html.Row where+ arbitrary = frequency [ (5, liftM Html.Cells arbList)+ , (1, return Html.HorizontalRule)+ ]++ shrink hr@(Html.Cells cs) = delete hr . map Html.Cells $ shrinkL cs+ shrink _ = []++instance Arbitrary Html.Cell where+ arbitrary = frequency [ (5, liftM2 Html.LabelCell arbitrary . sized $ arbHtml False)+ , (3, liftM2 Html.ImgCell arbitrary arbitrary)+ , (1, return Html.VerticalRule)+ ]++ shrink lc@(Html.LabelCell as h) = do as' <- shrink as+ h' <- shrink h+ returnCheck lc $ Html.LabelCell as' h'+ shrink (Html.ImgCell as ic) = map (Html.ImgCell as) $ shrink ic+ shrink _ = []++instance Arbitrary Html.Img where+ arbitrary = liftM Html.Img arbitrary++instance Arbitrary Html.Attribute where+ arbitrary = oneof [ liftM Html.Align arbitrary+ , liftM Html.BAlign arbitrary+ , liftM Html.BGColor arbitrary+ , liftM Html.Border arbitrary+ , liftM Html.CellBorder arbitrary+ , liftM Html.CellPadding arbitrary+ , liftM Html.CellSpacing arbitrary+ , liftM Html.Color arbitrary+ , liftM Html.ColSpan arbitrary+ , liftM Html.Face arbitrary+ , liftM Html.FixedSize arbitrary+ , liftM Html.Height arbitrary+ , liftM Html.HRef arbitrary+ , liftM Html.ID arbitrary+ , liftM Html.PointSize arbitrary+ , liftM Html.Port arbitrary+ , liftM Html.RowSpan arbitrary+ , liftM Html.Scale arbitrary+ , liftM Html.Src arbString+ , liftM Html.Target arbitrary+ , liftM Html.Title arbitrary+ , liftM Html.VAlign arbitrary+ , liftM Html.Width arbitrary+ ]++ shrink (Html.Align v) = map Html.Align $ shrink v+ shrink (Html.BAlign v) = map Html.BAlign $ shrink v+ shrink (Html.BGColor v) = map Html.BGColor $ shrink v+ shrink (Html.Border v) = map Html.Border $ shrink v+ shrink (Html.CellBorder v) = map Html.CellBorder $ shrink v+ shrink (Html.CellPadding v) = map Html.CellPadding $ shrink v+ shrink (Html.CellSpacing v) = map Html.CellSpacing $ shrink v+ shrink (Html.Color v) = map Html.Color $ shrink v+ shrink (Html.ColSpan v) = map Html.ColSpan $ shrink v+ shrink (Html.Face v) = map Html.Face $ shrink v+ shrink (Html.FixedSize v) = map Html.FixedSize $ shrink v+ shrink (Html.Height v) = map Html.Height $ shrink v+ shrink (Html.HRef v) = map Html.HRef $ shrink v+ shrink (Html.ID v) = map Html.ID $ shrink v+ shrink (Html.PointSize v) = map Html.PointSize $ shrink v+ shrink (Html.Port v) = map Html.Port $ shrink v+ shrink (Html.RowSpan v) = map Html.RowSpan $ shrink v+ shrink (Html.Scale v) = map Html.Scale $ shrink v+ shrink (Html.Src v) = map Html.Src $ shrinkString v+ shrink (Html.Target v) = map Html.Target $ shrink v+ shrink (Html.Title v) = map Html.Title $ shrink v+ shrink (Html.VAlign v) = map Html.VAlign $ shrink v+ shrink (Html.Width v) = map Html.Width $ shrink v++instance Arbitrary Html.Scale where+ arbitrary = arbBounded++instance Arbitrary Html.Align where+ arbitrary = arbBounded++instance Arbitrary Html.VAlign where+ arbitrary = arbBounded++instance Arbitrary PortName where+ arbitrary = liftM PN+ $ suchThat arbitrary (liftM2 (&&) (T.all (/=':')) notCP)++ shrink = map PN . filter notCP . shrink . portName++notCP :: Text -> Bool+notCP = flip Map.notMember compassLookup
+ tests/Data/GraphViz/Testing/Instances/Canonical.hs view
@@ -0,0 +1,57 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Canonical+ Description : Canonical dot graph instances for Arbitrary.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Canonical where++import Data.GraphViz.Testing.Instances.Common+import Data.GraphViz.Testing.Instances.Helpers++import Data.GraphViz.Types.Canonical+import Data.GraphViz.Util(bool)++import Test.QuickCheck++import Control.Monad(liftM2, liftM4)++-- -----------------------------------------------------------------------------+-- Defining Arbitrary instances for the overall types++instance (Eq n, Arbitrary n) => Arbitrary (DotGraph n) where+ arbitrary = liftM4 DotGraph arbitrary arbitrary arbitrary arbitrary++ shrink (DotGraph str dir gid stmts) = map (DotGraph str dir gid)+ $ shrink stmts++instance (Eq n, Arbitrary n) => Arbitrary (DotStatements n) where+ arbitrary = sized (arbDS gaGraph True)++ shrink ds@(DotStmts gas sgs ns es) = do gas' <- shrinkL gas+ sgs' <- shrinkL sgs+ ns' <- shrinkL ns+ es' <- shrinkL es+ returnCheck ds+ $ DotStmts gas' sgs' ns' es'++-- | If 'True', generate 'DotSubGraph's; otherwise don't.+arbDS :: (Arbitrary n, Eq n) => Gen GlobalAttributes -> Bool+ -> Int -> Gen (DotStatements n)+arbDS ga haveSGs s = liftM4 DotStmts (listOf ga) genSGs arbitrary arbitrary+ where+ s' = min s 2+ genSGs = if haveSGs+ then resize s' arbitrary+ else return []++instance (Eq n, Arbitrary n) => Arbitrary (DotSubGraph n) where+ arbitrary = do isClust <- arbitrary+ let ga = bool gaSubGraph gaClusters isClust+ liftM2 (DotSG isClust) arbitrary (sized $ arbDS ga False)++ shrink (DotSG isCl mid stmts) = map (DotSG isCl mid) $ shrink stmts
+ tests/Data/GraphViz/Testing/Instances/Common.hs view
@@ -0,0 +1,71 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Common()+ Description : Attribute instances for Arbitrary.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Common+ ( gaGraph+ , gaSubGraph+ , gaClusters+ ) where++import Data.GraphViz.Testing.Instances.Attributes+import Data.GraphViz.Testing.Instances.Helpers++import Data.GraphViz.Attributes(Attributes)+import Data.GraphViz.Types.Common( DotNode(..), DotEdge(..)+ , GlobalAttributes(..), GraphID(..))++import Test.QuickCheck++import Control.Monad(liftM, liftM2, liftM3)++-- -----------------------------------------------------------------------------+-- Common values++instance Arbitrary GraphID where+ arbitrary = oneof [ liftM Str arbitrary+ , liftM Int arbitrary+ , liftM Dbl $ suchThat arbitrary notInt+ ]++ shrink (Str s) = map Str $ shrink s+ shrink (Int i) = map Int $ shrink i+ shrink (Dbl d) = map Dbl $ filter notInt $ shrink d++instance (Arbitrary n) => Arbitrary (DotNode n) where+ arbitrary = liftM2 DotNode arbitrary arbNodeAttrs++ shrink (DotNode n as) = map (DotNode n) $ shrinkList as++instance (Arbitrary n) => Arbitrary (DotEdge n) where+ arbitrary = liftM3 DotEdge arbitrary arbitrary arbEdgeAttrs++ shrink (DotEdge f t as) = map (DotEdge f t) $ shrinkList as++instance Arbitrary GlobalAttributes where+ arbitrary = gaGraph++ shrink (GraphAttrs atts) = map GraphAttrs $ nonEmptyShrinks atts+ shrink (NodeAttrs atts) = map NodeAttrs $ nonEmptyShrinks atts+ shrink (EdgeAttrs atts) = map EdgeAttrs $ nonEmptyShrinks atts++gaGraph :: Gen GlobalAttributes+gaGraph = gaFor arbGraphAttrs++gaSubGraph :: Gen GlobalAttributes+gaSubGraph = gaFor arbSubGraphAttrs++gaClusters :: Gen GlobalAttributes+gaClusters = gaFor arbClusterAttrs++gaFor :: Gen Attributes -> Gen GlobalAttributes+gaFor g = oneof [ liftM GraphAttrs g+ , liftM NodeAttrs arbNodeAttrs+ , liftM EdgeAttrs arbEdgeAttrs+ ]
+ tests/Data/GraphViz/Testing/Instances/FGL.hs view
@@ -0,0 +1,47 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# LANGUAGE FlexibleInstances #-}++{- |+ Module : Data.GraphViz.Testing.Instances.FGL+ Description : 'Arbitrary' instances for FGL graphs.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ This module defines the 'Arbitrary' instances for FGL 'DynGraph'+ graphs. Note that this instance cannot be in+ "Data.GraphViz.Testing.Instances", as this instance requires the+ FlexibleInstances extension, which makes some of the other+ 'Arbitrary' instances fail to type-check.+-}+module Data.GraphViz.Testing.Instances.FGL() where++import Test.QuickCheck++import Data.GraphViz.Util(uniq)++import Data.Graph.Inductive.Graph(Graph, mkGraph, nodes, delNode)+import Data.List(sortBy)+import Data.Function(on)+import Control.Monad(liftM, liftM3)++-- -----------------------------------------------------------------------------+-- Arbitrary instance for FGL graphs.++instance (Graph g, Arbitrary n, Arbitrary e) => Arbitrary (g n e) where+ arbitrary = do ns <- suchThat genNs (not . null)+ let nGen = elements ns+ lns <- mapM makeLNode ns+ les <- liftM (sortBy (compare `on` toE)) . listOf+ $ makeLEdge nGen+ return $ mkGraph lns les+ where+ genNs = liftM uniq arbitrary+ toE (f,t,_) = (f,t)+ makeLNode n = liftM ((,) n) arbitrary+ makeLEdge nGen = liftM3 (,,) nGen nGen arbitrary++ shrink gr = case nodes gr of+ -- Need to have at least 2 nodes before we delete one!+ ns@(_:_:_) -> map (`delNode` gr) ns+ _ -> []
+ tests/Data/GraphViz/Testing/Instances/Generalised.hs view
@@ -0,0 +1,77 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Generalised+ Description : Generalised dot graph instances for Arbitrary.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Generalised where++import Data.GraphViz.Testing.Instances.Attributes()+import Data.GraphViz.Testing.Instances.Common+import Data.GraphViz.Testing.Instances.Helpers()++import Data.GraphViz.Types.Generalised+import Data.GraphViz.Util(bool)++import Test.QuickCheck++import qualified Data.Sequence as Seq+import Control.Monad(liftM, liftM2, liftM4)++-- -----------------------------------------------------------------------------+-- Defining Arbitrary instances for the generalised types++instance (Arbitrary n) => Arbitrary (DotGraph n) where+ arbitrary = liftM4 DotGraph arbitrary arbitrary arbitrary genDStmts++ shrink (DotGraph str dir gid stmts) = map (DotGraph str dir gid)+ $ shrinkDStmts stmts++genDStmts :: (Arbitrary n) => Gen (DotStatements n)+genDStmts = sized (arbDS gaGraph True)++genDStmt :: (Arbitrary n) => Gen GlobalAttributes -> Bool+ -> Gen (DotStatement n)+genDStmt ga haveSGs = frequency+ . bool id ((1,genSG):) haveSGs+ $ [ (3, liftM GA ga)+ , (5, liftM DN arbitrary)+ , (7, liftM DE arbitrary)+ ]+ where+ genSG = liftM SG arbitrary++shrinkDStmts :: (Arbitrary n) => DotStatements n -> [DotStatements n]+shrinkDStmts gds+ | len == 1 = map Seq.singleton . shrink $ Seq.index gds 0+ | otherwise = [gds1, gds2]+ where+ len = Seq.length gds+ -- Halve the sequence+ (gds1, gds2) = (len `div` 2) `Seq.splitAt` gds++instance (Arbitrary n) => Arbitrary (DotStatement n) where+ arbitrary = genDStmt gaGraph True++ shrink (GA ga) = map GA $ shrink ga+ shrink (SG sg) = map SG $ shrink sg+ shrink (DN dn) = map DN $ shrink dn+ shrink (DE de) = map DE $ shrink de++-- | If 'True', generate 'GDotSubGraph's; otherwise don't.+arbDS :: (Arbitrary n) => Gen GlobalAttributes -> Bool -> Int -> Gen (DotStatements n)+arbDS ga haveSGs s = liftM Seq.fromList . resize s' . listOf $ genDStmt ga haveSGs+ where+ s' = min s 10+++instance (Arbitrary n) => Arbitrary (DotSubGraph n) where+ arbitrary = do isClust <- arbitrary+ let ga = bool gaSubGraph gaClusters isClust+ liftM2 (DotSG isClust) arbitrary (sized $ arbDS ga False)++ shrink (DotSG isCl mid stmts) = map (DotSG isCl mid) $ shrinkDStmts stmts
+ tests/Data/GraphViz/Testing/Instances/Graph.hs view
@@ -0,0 +1,31 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}+{-# LANGUAGE FlexibleInstances #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Graph+ Description : Graph dot graph instances for Arbitrary.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Graph where++import Data.GraphViz.Testing.Instances.Canonical()++import Data.GraphViz.Types.Graph+import Data.GraphViz.Types(fromCanonical)++import Test.QuickCheck++import Control.Monad(liftM)++-- -----------------------------------------------------------------------------++-- | Can't directly create one of these as it might not match the+-- internal format directly; as such, have to use the inefficient+-- 'fromCanonical' route.+instance (Arbitrary n, Ord n) => Arbitrary (DotGraph n) where+ arbitrary = liftM fromCanonical arbitrary++ shrink = map fromCanonical . shrink . toCanonical
+ tests/Data/GraphViz/Testing/Instances/Helpers.hs view
@@ -0,0 +1,138 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_HADDOCK hide #-}+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Data.GraphViz.Testing.Instances.Helpers+ Description : Helper functions for graphviz Arbitrary instances.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com+ -}+module Data.GraphViz.Testing.Instances.Helpers where++import Data.GraphViz.Parsing(isNumString)+import Data.GraphViz.State(initialState, layerSep)++import Test.QuickCheck++import qualified Data.Text.Lazy as T+import Data.Text.Lazy(Text)+import Control.Monad(liftM, liftM2)++-- -----------------------------------------------------------------------------+-- Helper Functions++instance Arbitrary Text where+ arbitrary = arbText++ shrink = filter validString+ . map T.pack . nonEmptyShrinks' . T.unpack++arbText :: Gen Text+arbText = suchThat genStr notBool+ where+ genStr = liftM2 T.cons (elements notDigits)+ (liftM T.concat . listOf $ elements strChr)+ notDigits = ['a'..'z'] ++ ['\'', '"', ' ', '(', ')', ',', ':', '\\']+ strChr = map T.singleton $ notDigits ++ '.' : ['0'..'9']++arbString :: Gen String+arbString = liftM T.unpack arbitrary++fromPositive :: Positive a -> a+fromPositive (Positive a) = a++posArbitrary :: (Arbitrary a, Num a, Ord a) => Gen a+posArbitrary = liftM fromPositive arbitrary++arbIDString :: Gen Text+arbIDString = suchThat genStr notBool+ where+ genStr = liftM2 T.cons (elements frst)+ (liftM T.pack . listOf $ elements rest)+ frst = ['a'..'z'] ++ ['_']+ rest = frst ++ ['0'.. '9']++validString :: Text -> Bool+validString = liftM2 (&&) notBool notNumStr++notBool :: Text -> Bool+notBool "true" = False+notBool "false" = False+notBool _ = True++shrinkString :: String -> [String]+shrinkString = map T.unpack . shrink . T.pack++notNumStr :: Text -> Bool+notNumStr = not . isNumString++arbBounded :: (Bounded a, Enum a) => Gen a+arbBounded = elements [minBound .. maxBound]++arbLayerName :: Gen Text+arbLayerName = suchThat arbitrary (T.all notLayerSep)+ where+ defLayerSep = layerSep initialState+ notLayerSep = (`notElem` defLayerSep)++arbStyleName :: Gen Text+arbStyleName = suchThat arbitrary (T.all notBrackCom)+ where+ notBrackCom = flip notElem ['(', ')', ',', ' ']++arbList :: (Arbitrary a) => Gen [a]+arbList = listOf1 arbitrary++nonEmptyShrinks :: (Arbitrary a) => [a] -> [[a]]+nonEmptyShrinks = filter (not . null) . shrinkList++nonEmptyShrinks' :: [a] -> [[a]]+nonEmptyShrinks' = filter (not . null) . shrinkList'++-- Shrink lists with more than one value only by removing values, not+-- by shrinking individual items.+shrinkList :: (Arbitrary a) => [a] -> [[a]]+shrinkList [a] = map return $ shrink a+shrinkList as = shrinkList' as++-- Just shrink the size.+shrinkList' :: [a] -> [[a]]+shrinkList' as = rm (length as) as+ where+ rm 0 _ = []+ rm 1 _ = [[]]+ rm n xs = xs1+ : xs2+ : ( [ xs1' ++ xs2 | xs1' <- rm n1 xs1, not (null xs1') ]+ `ilv` [ xs1 ++ xs2' | xs2' <- rm n2 xs2, not (null xs2') ]+ )+ where+ n1 = n `div` 2+ xs1 = take n1 xs+ n2 = n - n1+ xs2 = drop n1 xs++ [] `ilv` ys = ys+ xs `ilv` [] = xs+ (x:xs) `ilv` (y:ys) = x : y : (xs `ilv` ys)++-- When a Maybe value is a sub-component, and we need shrink to return+-- a value.+shrinkM :: (Arbitrary a) => Maybe a -> [Maybe a]+shrinkM Nothing = [Nothing]+shrinkM j = shrink j++shrinkL :: (Arbitrary a) => [a] -> [[a]]+shrinkL xs = case shrinkList xs of+ [] -> [xs]+ xs' -> xs'++notInt :: Double -> Bool+notInt d = fromIntegral (round d :: Int) /= d++returnCheck :: (Eq a) => a -> a -> [a]+returnCheck o n = if o == n+ then []+ else [n]
+ tests/Data/GraphViz/Testing/Properties.hs view
@@ -0,0 +1,181 @@+{-# LANGUAGE FlexibleContexts, ScopedTypeVariables #-}++{- |+ Module : Data.GraphViz.Testing.Properties+ Description : Properties for testing.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ Various properties that should hold true for the graphviz library.+-}+module Data.GraphViz.Testing.Properties where++import Data.GraphViz( dotizeGraph, graphToDot+ , setDirectedness, nonClusteredParams)+import Data.GraphViz.Types( DotRepr(..), PrintDotRepr+ , DotNode(..), DotEdge(..), GlobalAttributes(..)+ , printDotGraph, graphNodes, graphEdges+ , graphStructureInformation)+import Data.GraphViz.Types.Canonical(DotGraph(..), DotStatements(..))+import qualified Data.GraphViz.Types.Generalised as G+import Data.GraphViz.Printing(PrintDot(..), printIt)+import Data.GraphViz.Parsing(ParseDot(..), parseIt, parseIt')+import Data.GraphViz.PreProcessing(preProcess)+import Data.GraphViz.Util(groupSortBy, isSingle)+import Data.GraphViz.Algorithms++import Test.QuickCheck++import Data.Graph.Inductive( Graph, DynGraph+ , equal, nmap, emap, labNodes, labEdges, nodes, edges)+import Data.List(nub, sort)+import Data.Function(on)+import qualified Data.Map as Map+import qualified Data.Set as Set+import Data.Text.Lazy(Text)+import Control.Arrow((&&&))++-- -----------------------------------------------------------------------------+-- The properties to test for++-- | Checking that @parse . print == id@; that is, graphviz can parse+-- its own output.+prop_printParseID :: (ParseDot a, PrintDot a, Eq a) => a -> Bool+prop_printParseID a = tryParse' a == a++-- | A version of 'prop_printParse' specifically for lists; it ensures+-- that the list is not empty (as most list-based parsers fail on+-- empty lists).+prop_printParseListID :: (ParseDot a, PrintDot a, Eq a) => [a] -> Property+prop_printParseListID as = not (null as) ==> prop_printParseID as++-- | When converting a canonical 'DotGraph' value to any other one,+-- they should generate the same Dot code.+prop_generalisedSameDot :: (Ord n, PrintDot n, ParseDot n) => DotGraph n -> Bool+prop_generalisedSameDot dg = printDotGraph dg == printDotGraph gdg+ where+ gdg = canonicalToType (undefined :: G.DotGraph n) dg++-- | Pre-processing shouldn't change the output of printed Dot code.+-- This should work for all 'PrintDot' instances, but is more+-- specific to 'DotGraph' values.+prop_preProcessingID :: (PrintDotRepr dg n) => dg n -> Bool+prop_preProcessingID dg = preProcess dotCode == dotCode+ where+ dotCode = printDotGraph dg++-- | This property verifies that 'dotizeGraph', etc. only /augment/ the+-- original graph; that is, the actual nodes, edges and labels for+-- each remain unchanged. Whilst 'dotize', etc. only require+-- 'Graph' instances, this property requires 'DynGraph' (which is a+-- sub-class of 'Graph') instances to be able to strip off the+-- 'Attributes' augmentations.+prop_dotizeAugment :: (DynGraph g, Eq n, Ord e) => g n e -> Bool+prop_dotizeAugment g = equal g (unAugment g')+ where+ g' = setDirectedness dotizeGraph nonClusteredParams g+ unAugment = nmap snd . emap snd++-- | After augmentation, each node and edge should have a non-empty+-- | list of 'Attributes'.+prop_dotizeHasAugment :: (DynGraph g, Ord e) => g n e -> Bool+prop_dotizeHasAugment g = all (not . null) nodeAugments+ && all (not . null) edgeAugments+ where+ g' = setDirectedness dotizeGraph nonClusteredParams g+ nodeAugments = map (fst . snd) $ labNodes g'+ edgeAugments = map (fst . \(_,_,l) -> l) $ labEdges g'++-- | When a graph with multiple edges is augmented, then all edges+-- should have unique 'Attributes' (namely the positions). Note+-- that this may not hold true with custom supplied 'Attributes'+-- (i.e. not using one of the @dotize@ functions).+prop_dotizeAugmentUniq :: (DynGraph g, Eq n, Ord e) => g n e -> Bool+prop_dotizeAugmentUniq g = all uniqLs lss+ where+ g' = setDirectedness dotizeGraph nonClusteredParams g+ les = map (\(f,t,l) -> ((f,t),l)) $ labEdges g'+ lss = map (map snd) . filter (not . isSingle)+ $ groupSortBy fst les+ uniqLs [] = False -- Needs to have at least /one/ Attribute!+ uniqLs ls = ls == nub ls++-- | Ensure that the definition of 'nodeInformation' for a DotRepr+-- finds all the nodes.+prop_findAllNodes :: (DotRepr dg Int, Ord el, Graph g)+ => dg Int -> g nl el -> Bool+prop_findAllNodes dg' g = ((==) `on` sort) gns dgns+ where+ gns = nodes g+ dg = canonicalToType dg' $ setDirectedness graphToDot nonClusteredParams g+ dgns = map nodeID $ graphNodes dg++-- | Ensure that the definition of 'nodeInformation' for DotReprs+-- finds all the nodes when the explicit 'DotNode' definitions are+-- removed.+prop_findAllNodesE :: (DotRepr dg Int, Ord el, Graph g)+ => dg Int -> g nl el -> Bool+prop_findAllNodesE dg' g = ((==) `on` sort) gns dgns+ where+ gns = nodes g+ dg = canonicalToType dg' . removeNodes $ setDirectedness graphToDot nonClusteredParams g+ dgns = map nodeID $ graphNodes dg+ removeNodes dot@DotGraph{graphStatements = stmts}+ = dot { graphStatements+ = stmts {nodeStmts = filter notInEdge $ nodeStmts stmts}+ }+ gnes = Set.fromList . concatMap (\(f,t) -> [f,t]) $ edges g+ notInEdge dn = nodeID dn `Set.notMember` gnes++-- | Ensure that the definition of 'edgeInformation' for DotReprs+-- finds all the nodes.+prop_findAllEdges :: (DotRepr dg Int, Ord el, Graph g) => dg Int -> g nl el -> Bool+prop_findAllEdges dg' g = ((==) `on` sort) ges dges+ where+ ges = edges g+ dg = canonicalToType dg' $ graphToDot nonClusteredParams g+ dges = map (fromNode &&& toNode) $ graphEdges dg++-- | There should be no clusters or global attributes when converting+-- a 'Graph' to a DotRepr (via fromCanonical) without any formatting+-- or clustering.+prop_noGraphInfo :: (DotRepr dg Int, Ord el, Graph g)+ => dg Int -> g nl el -> Bool+prop_noGraphInfo dg' g = info == (GraphAttrs [], Map.empty)+ where+ dg = canonicalToType dg'+ $ setDirectedness graphToDot nonClusteredParams g+ info = graphStructureInformation dg++-- | Canonicalisation should be idempotent.+prop_canonicalise :: (ParseDot n, PrintDot n, DotRepr dg n) => dg n -> Bool+prop_canonicalise g = cdg == canonicalise cdg+ where+ cdg = canonicalise g++-- | Removing transitive edges should be idempotent.+prop_transitive :: (DotRepr dg n) => dg n -> Bool+prop_transitive g = tdg == transitiveReduction tdg+ where+ tdg = transitiveReduction g++-- -----------------------------------------------------------------------------+-- Helper utility functions++-- | A utility function to use for debugging purposes for trying to+-- find how graphviz /is/ parsing something. This is easier than+-- using @'parseIt' . 'printIt'@ directly, since it avoids having to+-- enter and explicit type signature.+tryParse :: (ParseDot a, PrintDot a) => a -> (a, Text)+tryParse = parseIt . printIt++-- | Equivalent to 'tryParse' except that it is assumed that the+-- entire 'String' *is* fully consumed.+tryParse' :: (ParseDot a, PrintDot a) => a -> a+tryParse' = parseIt' . printIt++-- | A wrapper around 'fromCanonical' that lets you specify up-front+-- what type to create (it need not be a sensible value).+canonicalToType :: (DotRepr dg n) => dg n -> DotGraph n -> dg n+canonicalToType _ = fromCanonical
+ tests/RunTests.hs view
@@ -0,0 +1,83 @@+{- |+ Module : RunTests+ Description : Run the graphviz test suite.+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ This module exists solely to make a Main module to build and run+ the test suite.+-}+module Main where++import Data.GraphViz.Testing( Test(name, lookupName)+ , defaultTests, runChosenTests)++import Data.Char(toLower)+import Data.Maybe(mapMaybe)+import qualified Data.Map as Map+import Data.Map(Map)+import Control.Arrow((&&&))+import Control.Monad(when)+import System.Environment(getArgs, getProgName)+import System.Exit(ExitCode(ExitSuccess), exitWith)++-- -----------------------------------------------------------------------------++main :: IO ()+main = do opts <- getArgs+ let opts' = map (map toLower) opts+ hasArg arg = any (arg==) opts'+ when (hasArg "help") helpMsg+ let tests = if hasArg "all"+ then defaultTests+ else mapMaybe getTest opts'+ tests' = if null tests+ then defaultTests+ else tests+ runChosenTests tests'++testLookup :: Map String Test+testLookup = Map.fromList+ $ map (lookupName &&& id) defaultTests++getTest :: String -> Maybe Test+getTest = (`Map.lookup` testLookup)++helpMsg :: IO ()+helpMsg = getProgName >>= (putStr . msg) >> exitWith ExitSuccess+ where+ msg nm = unlines+ [ "This utility is the test-suite for the graphviz library for Haskell."+ , "Various tests are available; see the table below for a complete list."+ , "There are several ways of running this program:"+ , ""+ , " " ++ nm ++ " Run all of the tests"+ , " " ++ nm ++ " all Run all of the tests"+ , " " ++ nm ++ " help Get this help message"+ , " " ++ nm ++ " <key> Run the test associated with each key,"+ , " (where <key> denotes a space-separated list of keys"+ , " from the table below)."+ , ""+ , helpTable+ ]++helpTable :: String+helpTable = unlines $ fmtName ((lnHeader,lnHeaderLen),(nHeader,nHeaderLen))+ : line+ : map fmtName testNames+ where+ andLen = ((id &&& length) .)+ testNames = map (andLen lookupName &&& andLen name) defaultTests+ fmtName ((ln,lnl),(n,_)) = concat [ ln+ , replicate (maxLN-lnl+spacerLen) ' '+ , n+ ]+ line = replicate (maxLN + spacerLen + maxN) '-'+ maxLN = maximum $ map (snd . fst) testNames+ maxN = maximum $ map (snd . snd) testNames+ spacerLen = 3+ lnHeader = "Key"+ lnHeaderLen = length lnHeader+ nHeader = "Description"+ nHeaderLen = length nHeader
utils/AttributeGenerator.hs view
@@ -448,6 +448,8 @@ -- The actual attributes +-- ColorScheme is put earlier so that when sorting, it comes before the various *Color attributes.+ attributes :: [Attribute] attributes = [ makeAttr "Damping" ["Damping"] "G" Dbl Nothing (Just "0.99") (Just "@0.99@") (Just "@0.0@") (Just "neato only") , makeAttr "K" ["K"] "GC" Dbl Nothing (Just "0.3") (Just "@0.3@") (Just "@0@") (Just "sfdp, fdp only")@@ -456,20 +458,20 @@ , makeAttr "ArrowSize" ["arrowsize"] "E" Dbl Nothing (Just "1") (Just "@1.0@") (Just "@0.0@") Nothing , makeAttr "ArrowTail" ["arrowtail"] "E" (Cust "ArrowType") Nothing (Just "normal") (Just "@'normal'@") Nothing Nothing , makeAttr "Aspect" ["aspect"] "G" (Cust "AspectType") Nothing Nothing Nothing Nothing (Just "dot only")- , makeAttr "Bb" ["bb"] "G" (Cust "Rect") Nothing Nothing Nothing Nothing (Just "write only")- , makeAttr "BgColor" ["bgcolor"] "GC" (Cust "Color") Nothing (Just "(X11Color Transparent)") (Just "@'X11Color' 'Transparent'@") Nothing Nothing+ , makeAttr "BoundingBox" ["bb"] "G" (Cust "Rect") Nothing Nothing Nothing Nothing (Just "write only")+ , makeAttr "ColorScheme" ["colorscheme"] "ENCG" (Cust "ColorScheme") Nothing (Just "X11") (Just "@'X11'@") Nothing Nothing+ , makeAttr "BgColor" ["bgcolor"] "GC" (Cust "[Color]") Nothing (Just "[X11Color Transparent]") (Just "@['X11Color' 'Transparent']@") Nothing Nothing , makeAttr "Center" ["center"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing , makeAttr "ClusterRank" ["clusterrank"] "G" (Cust "ClusterMode") Nothing (Just "Local") (Just "@'Local'@") Nothing (Just "dot only")- , makeAttr "ColorScheme" ["colorscheme"] "ENCG" (Cust "ColorScheme") Nothing (Just "X11") (Just "@'X11'@") Nothing Nothing , makeAttr "Color" ["color"] "ENC" (Cust "[Color]") Nothing (Just "[X11Color Black]") (Just "@['X11Color' 'Black']@") Nothing Nothing , makeAttr "Comment" ["comment"] "ENG" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing Nothing , makeAttr "Compound" ["compound"] "G" Bl (Just "True") (Just "False")(Just "@'False'@") Nothing (Just "dot only") , makeAttr "Concentrate" ["concentrate"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing , makeAttr "Constraint" ["constraint"] "E" Bl (Just "True") (Just "True") (Just "@'True'@") Nothing (Just "dot only") , makeAttr "Decorate" ["decorate"] "E" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing- , makeAttr "DefaultDist" ["defaultdist"] "G" Dbl Nothing Nothing (Just "@1+(avg. len)*sqrt(|V|)@") (Just "@epsilon@") (Just "neato only")- , makeAttr "Dimen" ["dimen"] "G" Integ Nothing (Just "2") (Just "@2@") (Just "@2@") (Just "sfdp, fdp, neato only")+ , makeAttr "DefaultDist" ["defaultdist"] "G" Dbl Nothing Nothing (Just "@1+(avg. len)*sqrt(|V|)@") (Just "@epsilon@") (Just "neato only, only if @'Pack' 'DontPack'") , makeAttr "Dim" ["dim"] "G" Integ Nothing (Just "2") (Just "@2@") (Just "@2@") (Just "sfdp, fdp, neato only")+ , makeAttr "Dimen" ["dimen"] "G" Integ Nothing (Just "2") (Just "@2@") (Just "@2@") (Just "sfdp, fdp, neato only") , makeAttr "Dir" ["dir"] "E" (Cust "DirType") Nothing Nothing (Just "@'Forward'@ (directed), @'NoDir'@ (undirected)") Nothing Nothing , makeAttr "DirEdgeConstraints" ["diredgeconstraints"] "G" (Cust "DEConstraints") (Just "EdgeConstraints") (Just "NoConstraints") (Just "@'NoConstraints'@") Nothing (Just "neato only") , makeAttr "Distortion" ["distortion"] "N" Dbl Nothing (Just "0") (Just "@0.0@") (Just "@-100.0@") Nothing@@ -479,13 +481,15 @@ , makeAttr "EdgeTooltip" ["edgetooltip"] "E" EStrng Nothing Nothing (Just "@\\\"\\\"@") Nothing (Just "svg, cmap only") , makeAttr "Epsilon" ["epsilon"] "G" Dbl Nothing Nothing (Just "@.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@)") Nothing (Just "neato only") , makeAttr "ESep" ["esep"] "G" (Cust "DPoint") Nothing (Just "(DVal 3)") (Just "@'DVal' 3@") Nothing (Just "not dot")- , makeAttr "FillColor" ["fillcolor"] "NC" (Cust "Color") Nothing (Just "(X11Color Black)")(Just "@'X11Color' 'LightGray'@ (nodes), @'X11Color' 'Black'@ (clusters)") Nothing Nothing+ , makeAttr "FillColor" ["fillcolor"] "NEC" (Cust "[Color]") Nothing (Just "[X11Color Black]")(Just "@['X11Color' 'LightGray']@ (nodes), @['X11Color' 'Black']@ (clusters)") Nothing Nothing , makeAttr "FixedSize" ["fixedsize"] "N" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing , makeAttr "FontColor" ["fontcolor"] "ENGC" (Cust "Color") Nothing (Just "(X11Color Black)") (Just "@'X11Color' 'Black'@") Nothing Nothing , makeAttr "FontName" ["fontname"] "ENGC" Strng Nothing (Just "\"Times-Roman\"") (Just "@\\\"Times-Roman\\\"@") Nothing Nothing , makeAttr "FontNames" ["fontnames"] "G" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg only") , makeAttr "FontPath" ["fontpath"] "G" Strng Nothing Nothing (Just "system dependent") Nothing Nothing , makeAttr "FontSize" ["fontsize"] "ENGC" Dbl Nothing (Just "14") (Just "@14.0@") (Just "@1.0@") Nothing+ , makeAttr "ForceLabels" ["forcelabels"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing (Just "Only for 'XLabel' attributes, requires Graphviz >= 2.29.0")+ , makeAttr "GradientAngle" ["gradientangle"] "NCG" Integ Nothing (Just "0") (Just "0") Nothing (Just "requires Graphviz >= 2.29.0") , makeAttr "Group" ["group"] "N" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only") , makeAttr "HeadURL" ["headURL", "headhref"] "E" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg, map only") , makeAttr "HeadClip" ["headclip"] "E" Bl (Just "True") (Just "True") (Just "@'True'@") Nothing Nothing@@ -494,10 +498,13 @@ , makeAttr "HeadTarget" ["headtarget"] "E" EStrng Nothing (Just "\"\"") (Just "none") Nothing (Just "svg, map only") , makeAttr "HeadTooltip" ["headtooltip"] "E" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg, cmap only") , makeAttr "Height" ["height"] "N" Dbl Nothing (Just "0.5") (Just "@0.5@") (Just "@0.02@") Nothing- , makeAttr "ID" ["id"] "GNE" (Cust "Label") Nothing (Just "(StrLabel \"\")") (Just "@'StrLabel' \\\"\\\"@") Nothing (Just "svg, postscript, map only")+ , makeAttr "ID" ["id"] "GNE" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"") Nothing (Just "svg, postscript, map only") , makeAttr "Image" ["image"] "N" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing Nothing+ , makeAttr "ImagePath" ["imagepath"] "G" (Cust "Paths") Nothing (Just "(Paths [])") (Just "@'Paths' []@") Nothing (Just "Printing and parsing is OS-specific, requires Graphviz >= 2.29.0") , makeAttr "ImageScale" ["imagescale"] "N" (Cust "ScaleType") (Just "UniformScale") (Just "NoScale") (Just "@'NoScale'@") Nothing Nothing+ , makeAttr "Label" ["label"] "ENGC" (Cust "Label") Nothing (Just "(StrLabel \"\")") (Just "@'StrLabel' \\\"\\\\N\\\"@ (nodes), @'StrLabel' \\\"\\\"@ (otherwise)") Nothing Nothing , makeAttr "LabelURL" ["labelURL", "labelhref"] "E" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg, map only")+ , makeAttr "LabelScheme" ["label_scheme"] "G" (Cust "LabelScheme") Nothing (Just "NotEdgeLabel") (Just "@'NotEdgeLabel'@") Nothing (Just "sfdp only, requires Graphviz >= 2.28.0") , makeAttr "LabelAngle" ["labelangle"] "E" Dbl Nothing (Just "(-25)") (Just "@-25.0@") (Just "@-180.0@") Nothing , makeAttr "LabelDistance" ["labeldistance"] "E" Dbl Nothing (Just "1") (Just "@1.0@") (Just "@0.0@") Nothing , makeAttr "LabelFloat" ["labelfloat"] "E" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing@@ -508,41 +515,42 @@ , makeAttr "LabelLoc" ["labelloc"] "GCN" (Cust "VerticalPlacement") Nothing (Just "VTop") (Just "@'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes)") Nothing Nothing , makeAttr "LabelTarget" ["labeltarget"] "E" EStrng Nothing (Just "\"\"") (Just "none") Nothing (Just "svg, map only") , makeAttr "LabelTooltip" ["labeltooltip"] "E" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg, cmap only")- , makeAttr "Label" ["label"] "ENGC" (Cust "Label") Nothing (Just "(StrLabel \"\")") (Just "@'StrLabel' \\\"\\\\N\\\"@ (nodes), @'StrLabel' \\\"\\\"@ (otherwise)") Nothing Nothing , makeAttr "Landscape" ["landscape"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing- , makeAttr "LayerSep" ["layersep"] "G" (Cust "LayerSep") Nothing (Just "(LSep \" :\\t\")") (Just "@'LSep' \\\" :\\t\\\"@") Nothing Nothing- , makeAttr "Layers" ["layers"] "G" (Cust "LayerList") Nothing (Just "(LL [])") (Just "@'LL' []@") Nothing Nothing , makeAttr "Layer" ["layer"] "EN" (Cust "LayerRange") Nothing Nothing Nothing Nothing Nothing+ , makeAttr "Layers" ["layers"] "G" (Cust "LayerList") Nothing (Just "(LL [])") (Just "@'LL' []@") Nothing Nothing+ , makeAttr "LayerSep" ["layersep"] "G" (Cust "LayerSep") Nothing (Just "(LSep \" :\\t\")") (Just "@'LSep' \\\" :\\t\\\"@") Nothing Nothing , makeAttr "Layout" ["layout"] "G" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing Nothing , makeAttr "Len" ["len"] "E" Dbl Nothing Nothing (Just "@1.0@ (neato), @0.3@ (fdp)") Nothing (Just "fdp, neato only") , makeAttr "LevelsGap" ["levelsgap"] "G" Dbl Nothing (Just "0") (Just "@0.0@") Nothing (Just "neato only") , makeAttr "Levels" ["levels"] "G" Integ Nothing (Just "maxBound") (Just "@'maxBound'@") (Just "@0@") (Just "sfdp only") , makeAttr "LHead" ["lhead"] "E" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only")+ , makeAttr "LHeight" ["LHeight"] "GC" Dbl Nothing Nothing Nothing Nothing (Just "write only, requires Graphviz >= 2.28.0") , makeAttr "LPos" ["lp"] "EGC" (Cust "Point") Nothing Nothing Nothing Nothing (Just "write only") , makeAttr "LTail" ["ltail"] "E" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only")+ , makeAttr "LWidth" ["lwidth"] "GC" Dbl Nothing Nothing Nothing Nothing (Just "write only, requires Graphviz >= 2.28.0") , makeAttr "Margin" ["margin"] "NG" (Cust "DPoint") Nothing Nothing (Just "device dependent") Nothing Nothing , makeAttr "MaxIter" ["maxiter"] "G" Integ Nothing Nothing (Just "@100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp)") Nothing (Just "fdp, neato only") , makeAttr "MCLimit" ["mclimit"] "G" Dbl Nothing (Just "1") (Just "@1.0@") Nothing (Just "dot only") , makeAttr "MinDist" ["mindist"] "G" Dbl Nothing (Just "1") (Just "@1.0@") (Just "@0.0@") (Just "circo only") , makeAttr "MinLen" ["minlen"] "E" Integ Nothing (Just "1") (Just "@1@") (Just "@0@") (Just "dot only")- , makeAttr "Model" ["model"] "G" (Cust "Model") Nothing (Just "ShortPath") (Just "@'ShortPath'@") Nothing (Just "neato only") , makeAttr "Mode" ["mode"] "G" (Cust "ModeType") Nothing (Just "Major") (Just "@'Major'@") Nothing (Just "neato only")+ , makeAttr "Model" ["model"] "G" (Cust "Model") Nothing (Just "ShortPath") (Just "@'ShortPath'@") Nothing (Just "neato only") , makeAttr "Mosek" ["mosek"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing (Just "neato only; requires the Mosek software") , makeAttr "NodeSep" ["nodesep"] "G" Dbl Nothing (Just "0.25") (Just "@0.25@") (Just "@0.02@") (Just "dot only") , makeAttr "NoJustify" ["nojustify"] "GCNE" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing , makeAttr "Normalize" ["normalize"] "G" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing (Just "not dot")- , makeAttr "Nslimit1" ["nslimit1"] "G" Dbl Nothing Nothing Nothing Nothing (Just "dot only") , makeAttr "Nslimit" ["nslimit"] "G" Dbl Nothing Nothing Nothing Nothing (Just "dot only")- , makeAttr "Ordering" ["ordering"] "G" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only")+ , makeAttr "Nslimit1" ["nslimit1"] "G" Dbl Nothing Nothing Nothing Nothing (Just "dot only")+ , makeAttr "Ordering" ["ordering"] "GN" (Cust "Order") Nothing Nothing (Just "none") Nothing (Just "dot only") , makeAttr "Orientation" ["orientation"] "N" Dbl Nothing (Just "0") (Just "@0.0@") (Just "@360.0@") Nothing , makeAttr "OutputOrder" ["outputorder"] "G" (Cust "OutputMode") Nothing (Just "BreadthFirst") (Just "@'BreadthFirst'@") Nothing Nothing- , makeAttr "OverlapScaling" ["overlap_scaling"] "G" Dbl Nothing (Just "(-4)") (Just "@-4@") (Just "@-1.0e10@") (Just "prism only") , makeAttr "Overlap" ["overlap"] "G" (Cust "Overlap") (Just "KeepOverlaps") (Just "KeepOverlaps") (Just "@'KeepOverlaps'@") Nothing (Just "not dot")- , makeAttr "PackMode" ["packmode"] "G" (Cust "PackMode") Nothing (Just "PackNode") (Just "@'PackNode'@") Nothing (Just "not dot")+ , makeAttr "OverlapScaling" ["overlap_scaling"] "G" Dbl Nothing (Just "(-4)") (Just "@-4@") (Just "@-1.0e10@") (Just "prism only") , makeAttr "Pack" ["pack"] "G" (Cust "Pack") (Just "DoPack") (Just "DontPack") (Just "@'DontPack'@") Nothing (Just "not dot")+ , makeAttr "PackMode" ["packmode"] "G" (Cust "PackMode") Nothing (Just "PackNode") (Just "@'PackNode'@") Nothing (Just "not dot") , makeAttr "Pad" ["pad"] "G" (Cust "DPoint") Nothing (Just "(DVal 0.0555)") (Just "@'DVal' 0.0555@ (4 points)") Nothing Nothing- , makeAttr "PageDir" ["pagedir"] "G" (Cust "PageDir") Nothing (Just "Bl") (Just "@'Bl'@") Nothing Nothing , makeAttr "Page" ["page"] "G" (Cust "Point") Nothing Nothing Nothing Nothing Nothing+ , makeAttr "PageDir" ["pagedir"] "G" (Cust "PageDir") Nothing (Just "Bl") (Just "@'Bl'@") Nothing Nothing , makeAttr "PenColor" ["pencolor"] "C" (Cust "Color") Nothing (Just "(X11Color Black)") (Just "@'X11Color' 'Black'@") Nothing Nothing , makeAttr "PenWidth" ["penwidth"] "CNE" Dbl Nothing (Just "1") (Just "@1.0@") (Just "@0.0@") Nothing , makeAttr "Peripheries" ["peripheries"] "NC" Integ Nothing (Just "1") (Just "shape default (nodes), @1@ (clusters)") (Just "0") Nothing@@ -550,9 +558,9 @@ , makeAttr "Pos" ["pos"] "EN" (Cust "Pos") Nothing Nothing Nothing Nothing Nothing , makeAttr "QuadTree" ["quadtree"] "G" (Cust "QuadType") (Just "NormalQT") (Just "NormalQT") (Just "@'NormalQT'@") Nothing (Just "sfdp only") , makeAttr "Quantum" ["quantum"] "G" Dbl Nothing (Just "0") (Just "@0.0@") (Just "@0.0@") Nothing+ , makeAttr "Rank" ["rank"] "S" (Cust "RankType") Nothing Nothing Nothing Nothing (Just "dot only") , makeAttr "RankDir" ["rankdir"] "G" (Cust "RankDir") Nothing (Just "FromTop") (Just "@'FromTop'@") Nothing (Just "dot only") , makeAttr "RankSep" ["ranksep"] "G" (Cust "[Double]") Nothing Nothing (Just "@[0.5]@ (dot), @[1.0]@ (twopi)") (Just "[0.02]") (Just "twopi, dot only")- , makeAttr "Rank" ["rank"] "S" (Cust "RankType") Nothing Nothing Nothing Nothing (Just "dot only") , makeAttr "Ratio" ["ratio"] "G" (Cust "Ratios") Nothing Nothing Nothing Nothing Nothing , makeAttr "Rects" ["rects"] "N" (Cust "[Rect]") Nothing Nothing Nothing Nothing (Just "write only") , makeAttr "Regular" ["regular"] "N" Bl (Just "True") (Just "False") (Just "@'False'@") Nothing Nothing@@ -560,13 +568,15 @@ , makeAttr "RepulsiveForce" ["repulsiveforce"] "G" Dbl Nothing (Just "1") (Just "@1.0@") (Just "@0.0@") (Just "sfdp only") , makeAttr "Root" ["root"] "GN" (Cust "Root") (Just "IsCentral") (Just "(NodeName \"\")") (Just "@'NodeName' \\\"\\\"@ (graphs), @'NotCentral'@ (nodes)") Nothing (Just "circo, twopi only") , makeAttr "Rotate" ["rotate"] "G" Integ Nothing (Just "0") (Just "@0@") Nothing Nothing+ , makeAttr "Rotation" ["rotation"] "G" Dbl Nothing (Just "0") (Just "@0@") Nothing (Just "sfdp only, requires Graphviz >= 2.28.0") , makeAttr "SameHead" ["samehead"] "E" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only") , makeAttr "SameTail" ["sametail"] "E" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "dot only") , makeAttr "SamplePoints" ["samplepoints"] "N" Integ Nothing Nothing (Just "@8@ (output), @20@ (overlap and image maps)") Nothing Nothing+ , makeAttr "Scale" ["scale"] "G" (Cust "DPoint") Nothing Nothing Nothing Nothing (Just "twopi only, requires Graphviz >= 2.28.0") , makeAttr "SearchSize" ["searchsize"] "G" Integ Nothing (Just "30") (Just "@30@") Nothing (Just "dot only") , makeAttr "Sep" ["sep"] "G" (Cust "DPoint") Nothing (Just "(DVal 4)") (Just "@'DVal' 4@") Nothing (Just "not dot")- , makeAttr "ShapeFile" ["shapefile"] "N" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing Nothing , makeAttr "Shape" ["shape"] "N" (Cust "Shape") Nothing (Just "Ellipse") (Just "@'Ellipse'@") Nothing Nothing+ , makeAttr "ShapeFile" ["shapefile"] "N" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing Nothing , makeAttr "ShowBoxes" ["showboxes"] "ENG" Integ Nothing (Just "0") (Just "@0@") (Just "@0@") (Just "dot only") , makeAttr "Sides" ["sides"] "N" Integ Nothing (Just "4") (Just "@4@") (Just "@0@") Nothing , makeAttr "Size" ["size"] "G" (Cust "Point") Nothing Nothing Nothing Nothing Nothing@@ -575,8 +585,8 @@ , makeAttr "SortV" ["sortv"] "GCN" (Cust "Word16") Nothing (Just "0") (Just "@0@") (Just "@0@") Nothing , makeAttr "Splines" ["splines"] "G" (Cust "EdgeType") (Just "SplineEdges") (Just "SplineEdges") Nothing Nothing Nothing , makeAttr "Start" ["start"] "G" (Cust "StartType") Nothing Nothing Nothing Nothing (Just "fdp, neato only")- , makeAttr "StyleSheet" ["stylesheet"] "G" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg only") , makeAttr "Style" ["style"] "ENC" (Cust "[StyleItem]") Nothing Nothing Nothing Nothing Nothing+ , makeAttr "StyleSheet" ["stylesheet"] "G" Strng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg only") , makeAttr "TailURL" ["tailURL", "tailhref"] "E" EStrng Nothing (Just "\"\"") (Just "@\\\"\\\"@") Nothing (Just "svg, map only") , makeAttr "TailClip" ["tailclip"] "E" Bl (Just "True") (Just "True") (Just "@'True'@") Nothing Nothing , makeAttr "TailLabel" ["taillabel"] "E" (Cust "Label") Nothing (Just "(StrLabel \"\")") (Just "@'StrLabel' \\\"\\\"@") Nothing Nothing@@ -591,6 +601,7 @@ , makeAttr "VoroMargin" ["voro_margin"] "G" Dbl Nothing (Just "0.05") (Just "@0.05@") (Just "@0.0@") (Just "not dot") , makeAttr "Weight" ["weight"] "E" Dbl Nothing Nothing (Just "@1.0@") (Just "@0@ (dot), @1@ (neato,fdp,sfdp)") Nothing , makeAttr "Width" ["width"] "N" Dbl Nothing (Just "0.75") (Just "@0.75@") (Just "@0.01@") Nothing+ , makeAttr "XLabel" ["xlabel"] "EN" (Cust "Label") Nothing (Just "(StrLabel \"\")") (Just "@'StrLabel' \\\"\\\"@") Nothing (Just "requires Graphviz >= 2.29.0") , makeAttr "Z" ["z"] "N" Dbl Nothing (Just "0") (Just "@0.0@") (Just "@-MAXFLOAT@, @-1000@") Nothing ]
+ utils/Benchmark.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE OverloadedStrings #-}++{- |+ Module : Benchmark+ Description : Benchmarking utilities for graphviz+ Copyright : (c) Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++-}+module Main where++import Data.GraphViz hiding (DotGraph)+import Data.GraphViz.Types.Generalised++import Criterion.Main++import Control.DeepSeq+import Data.Text.Lazy(Text)++-- -----------------------------------------------------------------------------++main :: IO ()+main = defaultMain [ bench "Parsing in-memory GDotGraph" $ nf parseGDG largeDefined+ , bench "Printing GDotGraph" $ nf printDotGraph largeGraph+ ]++parseGDG :: Text -> DotGraph Int+parseGDG = parseDotGraph++instance (Show a) => NFData (DotGraph a) where+ rnf = rnf . show++largeGraph :: DotGraph Int+largeGraph = parseGDG largeDefined++largeDefined :: Text+largeDefined = "digraph \"Entire Codebase\" {\n\tnode [label=\"\\N\", margin=\"0.4,0.1\", style=filled];\n\tsubgraph cluster_Class_Arbitrary {\n\t\tgraph [label=\"Class: Arbitrary\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_Arbitrary_Data_DotEdgea {\n\t\t\tgraph [label=\"Instance for: (DotEdge a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1530 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1614 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DotGrapha {\n\t\t\tgraph [label=\"Instance for: (DotGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1531 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1615 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DotNodea {\n\t\t\tgraph [label=\"Instance for: (DotNode a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1532 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1616 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DotStatementsa {\n\t\t\tgraph [label=\"Instance for: (DotStatements a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1533 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1617 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DotSubGrapha {\n\t\t\tgraph [label=\"Instance for: (DotSubGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1534 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1618 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_GDotGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1535 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1619 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_GDotStatementa {\n\t\t\tgraph [label=\"Instance for: (GDotStatement a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1536 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1620 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_GDotSubGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotSubGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1537 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1621 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_gne {\n\t\t\tgraph [label=\"Instance for: (g n e)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1665 [label=\"Data.GraphViz.Testing.Instances.FGL\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1666 [label=\"Data.GraphViz.Testing.Instances.FGL\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ArrowFill {\n\t\t\tgraph [label=\"Instance for: ArrowFill\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1538 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ArrowModifier {\n\t\t\tgraph [label=\"Instance for: ArrowModifier\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1539 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ArrowShape {\n\t\t\tgraph [label=\"Instance for: ArrowShape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1540 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ArrowSide {\n\t\t\tgraph [label=\"Instance for: ArrowSide\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1541 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ArrowType {\n\t\t\tgraph [label=\"Instance for: ArrowType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1542 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1622 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_AspectType {\n\t\t\tgraph [label=\"Instance for: AspectType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1543 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1623 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Attribute {\n\t\t\tgraph [label=\"Instance for: Attribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1544 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1624 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_BrewerName {\n\t\t\tgraph [label=\"Instance for: BrewerName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1545 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ClusterMode {\n\t\t\tgraph [label=\"Instance for: ClusterMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1546 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Color {\n\t\t\tgraph [label=\"Instance for: Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1547 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1625 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ColorScheme {\n\t\t\tgraph [label=\"Instance for: ColorScheme\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1548 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1626 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_CompassPoint {\n\t\t\tgraph [label=\"Instance for: CompassPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1549 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DEConstraints {\n\t\t\tgraph [label=\"Instance for: DEConstraints\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1550 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DPoint {\n\t\t\tgraph [label=\"Instance for: DPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1551 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1627 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_DirType {\n\t\t\tgraph [label=\"Instance for: DirType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1552 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_EdgeType {\n\t\t\tgraph [label=\"Instance for: EdgeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1553 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_FocusType {\n\t\t\tgraph [label=\"Instance for: FocusType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1554 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1628 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_GlobalAttributes {\n\t\t\tgraph [label=\"Instance for: GlobalAttributes\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1555 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1629 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_GraphID {\n\t\t\tgraph [label=\"Instance for: GraphID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1556 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1630 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlAlign {\n\t\t\tgraph [label=\"Instance for: HtmlAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1557 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlAttribute {\n\t\t\tgraph [label=\"Instance for: HtmlAttribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1558 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1631 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlCell {\n\t\t\tgraph [label=\"Instance for: HtmlCell\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1559 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1632 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlImg {\n\t\t\tgraph [label=\"Instance for: HtmlImg\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1560 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlLabel {\n\t\t\tgraph [label=\"Instance for: HtmlLabel\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1561 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1633 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlRow {\n\t\t\tgraph [label=\"Instance for: HtmlRow\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1562 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1634 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlScale {\n\t\t\tgraph [label=\"Instance for: HtmlScale\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1563 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlTable {\n\t\t\tgraph [label=\"Instance for: HtmlTable\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1564 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1635 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlTextItem {\n\t\t\tgraph [label=\"Instance for: HtmlTextItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1565 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1636 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_HtmlVAlign {\n\t\t\tgraph [label=\"Instance for: HtmlVAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1566 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Justification {\n\t\t\tgraph [label=\"Instance for: Justification\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1567 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Label {\n\t\t\tgraph [label=\"Instance for: Label\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1568 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1637 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_LayerID {\n\t\t\tgraph [label=\"Instance for: LayerID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1569 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1638 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_LayerList {\n\t\t\tgraph [label=\"Instance for: LayerList\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1570 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1639 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_LayerRange {\n\t\t\tgraph [label=\"Instance for: LayerRange\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1571 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1640 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ModeType {\n\t\t\tgraph [label=\"Instance for: ModeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1572 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Model {\n\t\t\tgraph [label=\"Instance for: Model\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1573 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_OutputMode {\n\t\t\tgraph [label=\"Instance for: OutputMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1574 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Overlap {\n\t\t\tgraph [label=\"Instance for: Overlap\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1575 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1641 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Pack {\n\t\t\tgraph [label=\"Instance for: Pack\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1576 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1642 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_PackMode {\n\t\t\tgraph [label=\"Instance for: PackMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1577 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1643 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_PageDir {\n\t\t\tgraph [label=\"Instance for: PageDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1578 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Point {\n\t\t\tgraph [label=\"Instance for: Point\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1579 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1644 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_PortName {\n\t\t\tgraph [label=\"Instance for: PortName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1580 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1645 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_PortPos {\n\t\t\tgraph [label=\"Instance for: PortPos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1581 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1646 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Pos {\n\t\t\tgraph [label=\"Instance for: Pos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1582 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1647 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_QuadType {\n\t\t\tgraph [label=\"Instance for: QuadType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1583 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_RankDir {\n\t\t\tgraph [label=\"Instance for: RankDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1584 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_RankType {\n\t\t\tgraph [label=\"Instance for: RankType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1585 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Ratios {\n\t\t\tgraph [label=\"Instance for: Ratios\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1586 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1648 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_RecordField {\n\t\t\tgraph [label=\"Instance for: RecordField\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1587 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1649 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Rect {\n\t\t\tgraph [label=\"Instance for: Rect\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1588 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1650 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Root {\n\t\t\tgraph [label=\"Instance for: Root\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1589 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1651 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_STStyle {\n\t\t\tgraph [label=\"Instance for: STStyle\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1590 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ScaleType {\n\t\t\tgraph [label=\"Instance for: ScaleType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1591 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Shape {\n\t\t\tgraph [label=\"Instance for: Shape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1592 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_SmoothType {\n\t\t\tgraph [label=\"Instance for: SmoothType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1593 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_Spline {\n\t\t\tgraph [label=\"Instance for: Spline\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1594 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1652 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_StartType {\n\t\t\tgraph [label=\"Instance for: StartType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1595 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1653 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_StyleItem {\n\t\t\tgraph [label=\"Instance for: StyleItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1596 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_StyleName {\n\t\t\tgraph [label=\"Instance for: StyleName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1597 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_VerticalPlacement {\n\t\t\tgraph [label=\"Instance for: VerticalPlacement\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1598 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_ViewPort {\n\t\t\tgraph [label=\"Instance for: ViewPort\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1599 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1654 [label=\"Data.GraphViz.Testing.Instances\\nshrink\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Arbitrary_Data_X11Color {\n\t\t\tgraph [label=\"Instance for: X11Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1600 [label=\"Data.GraphViz.Testing.Instances\\narbitrary\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1889 [label=\"Unknown Module\\narbitrary\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1900 [label=\"Unknown Module\\nshrink\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1530 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t\t1531 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t\t1532 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1534 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1535 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1536 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t\t1537 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1539 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1543 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1544 -> 1889 [penwidth=\"5.68213122712422\", color=black];\n\t\t1547 -> 1889 [penwidth=\"3.1972245773362196\", color=black];\n\t\t1548 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1551 -> 1889 [penwidth=1, color=black];\n\t\t1554 -> 1889 [penwidth=1, color=black];\n\t\t1556 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1558 -> 1889 [penwidth=\"3.833213344056216\", color=black];\n\t\t1559 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1560 -> 1889 [penwidth=1, color=black];\n\t\t1564 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1568 -> 1889 [penwidth=1, color=black];\n\t\t1569 -> 1889 [penwidth=1, color=black];\n\t\t1570 -> 1889 [penwidth=1, color=black];\n\t\t1571 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1575 -> 1889 [penwidth=1, color=black];\n\t\t1576 -> 1889 [penwidth=1, color=black];\n\t\t1577 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1579 -> 1889 [penwidth=1, color=black];\n\t\t1581 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1582 -> 1889 [penwidth=1, color=black];\n\t\t1594 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1595 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t\t1596 -> 1889 [penwidth=1, color=black];\n\t\t1599 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t\t1615 -> 1900 [penwidth=1, color=black];\n\t\t1618 -> 1900 [penwidth=1, color=black];\n\t\t1620 -> 1900 [penwidth=\"2.386294361119891\", color=black];\n\t\t1623 -> 1900 [penwidth=\"2.09861228866811\", color=black];\n\t\t1624 -> 1900 [penwidth=\"5.68213122712422\", color=black];\n\t\t1625 -> 1900 [penwidth=\"3.0794415416798357\", color=black];\n\t\t1626 -> 1900 [penwidth=1, color=black];\n\t\t1627 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1628 -> 1900 [penwidth=1, color=black];\n\t\t1630 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1631 -> 1900 [penwidth=\"4.091042453358316\", color=black];\n\t\t1632 -> 1900 [penwidth=\"2.09861228866811\", color=black];\n\t\t1633 -> 1900 [penwidth=1, color=black];\n\t\t1636 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1637 -> 1900 [penwidth=1, color=black];\n\t\t1638 -> 1900 [penwidth=1, color=black];\n\t\t1640 -> 1900 [penwidth=1, color=black];\n\t\t1641 -> 1900 [penwidth=1, color=black];\n\t\t1642 -> 1900 [penwidth=1, color=black];\n\t\t1643 -> 1900 [penwidth=1, color=black];\n\t\t1644 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1646 -> 1900 [penwidth=1, color=black];\n\t\t1647 -> 1900 [penwidth=1, color=black];\n\t\t1648 -> 1900 [penwidth=1, color=black];\n\t\t1649 -> 1900 [penwidth=1, color=black];\n\t\t1650 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1652 -> 1900 [penwidth=1, color=black];\n\t\t1653 -> 1900 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1654 -> 1900 [penwidth=\"2.09861228866811\", color=black];\n\t\t1665 -> 1889 [penwidth=\"2.09861228866811\", color=black];\n\t\t1889 -> 1530 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1531 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1532 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1533 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1534 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1535 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1536 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1537 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1538 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1539 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1540 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1541 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1542 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1543 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1544 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1545 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1546 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1547 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1548 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1549 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1550 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1551 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1552 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1553 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1554 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1555 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1556 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1557 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1558 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1559 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1560 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1561 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1562 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1563 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1564 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1565 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1566 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1567 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1568 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1569 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1570 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1571 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1572 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1573 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1574 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1575 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1576 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1577 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1578 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1579 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1580 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1581 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1582 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1583 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1584 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1585 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1586 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1587 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1588 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1589 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1590 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1591 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1592 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1593 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1594 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1595 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1596 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1597 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1598 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1599 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1600 [penwidth=1, color=navy, dir=none];\n\t\t1889 -> 1665 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1614 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1615 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1616 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1617 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1618 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1619 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1620 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1900 -> 1621 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1622 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1623 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1624 [penwidth=\"5.976733742420574\", color=navy, dir=none];\n\t\t1900 -> 1625 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1900 -> 1626 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1627 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1628 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1629 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1630 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1631 [penwidth=\"4.091042453358316\", color=navy, dir=none];\n\t\t1900 -> 1632 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1633 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1634 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1635 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1636 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1637 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1638 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1639 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1640 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1641 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1642 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1643 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1644 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1645 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1646 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1647 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1648 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1649 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1900 -> 1650 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1651 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1652 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1900 -> 1653 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1900 -> 1654 [penwidth=1, color=navy, dir=none];\n\t\t1900 -> 1666 [penwidth=1, color=navy, dir=none];\n\t}\n\tsubgraph cluster_Class_DotRepr {\n\t\tgraph [label=\"Class: DotRepr\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_DotRepr_Data_GDotGraphn {\n\t\t\tgraph [label=\"Instance for: GDotGraph n\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1779 [label=\"Data.GraphViz.Types.Generalised\\nedgeInformation\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1793 [label=\"Data.GraphViz.Types.Generalised\\ngetID\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1794 [label=\"Data.GraphViz.Types.Generalised\\ngraphIsDirected\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1795 [label=\"Data.GraphViz.Types.Generalised\\ngraphIsStrict\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1796 [label=\"Data.GraphViz.Types.Generalised\\ngraphStructureInformation\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1799 [label=\"Data.GraphViz.Types.Generalised\\nmakeStrict\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1800 [label=\"Data.GraphViz.Types.Generalised\\nnodeInformation\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1814 [label=\"Data.GraphViz.Types.Generalised\\nsetID\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1891 [label=\"Unknown Module\\nedgeInformation\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1893 [label=\"Unknown Module\\ngetID\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1894 [label=\"Unknown Module\\ngraphIsDirected\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1895 [label=\"Unknown Module\\ngraphIsStrict\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1896 [label=\"Unknown Module\\ngraphStructureInformation\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1897 [label=\"Unknown Module\\nmakeStrict\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1898 [label=\"Unknown Module\\nnodeInformation\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1899 [label=\"Unknown Module\\nsetID\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1891 -> 1779 [penwidth=1, color=navy, dir=none];\n\t\t1893 -> 1793 [penwidth=1, color=navy, dir=none];\n\t\t1894 -> 1794 [penwidth=1, color=navy, dir=none];\n\t\t1895 -> 1795 [penwidth=1, color=navy, dir=none];\n\t\t1896 -> 1796 [penwidth=1, color=navy, dir=none];\n\t\t1897 -> 1799 [penwidth=1, color=navy, dir=none];\n\t\t1898 -> 1800 [penwidth=1, color=navy, dir=none];\n\t\t1899 -> 1814 [penwidth=1, color=navy, dir=none];\n\t}\n\tsubgraph cluster_Class_Eq {\n\t\tgraph [label=\"Class: Eq\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_Eq_Data_SameAttr {\n\t\t\tgraph [label=\"Instance for: SameAttr\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1827 [label=\"Data.GraphViz.Types.State\\n==\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1888 [label=\"Unknown Module\\n==\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1888 -> 1827 [penwidth=1, color=navy, dir=none];\n\t}\n\tsubgraph cluster_Class_Functor {\n\t\tgraph [label=\"Class: Functor\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_Functor_Data_DotEdge {\n\t\t\tgraph [label=\"Instance for: DotEdge\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1703 [label=\"Data.GraphViz.Types.Common\\nfmap\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Functor_Data_DotNode {\n\t\t\tgraph [label=\"Instance for: DotNode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1704 [label=\"Data.GraphViz.Types.Common\\nfmap\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Functor_Data_GDotGraph {\n\t\t\tgraph [label=\"Instance for: GDotGraph\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1780 [label=\"Data.GraphViz.Types.Generalised\\nfmap\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Functor_Data_GDotStatement {\n\t\t\tgraph [label=\"Instance for: GDotStatement\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1781 [label=\"Data.GraphViz.Types.Generalised\\nfmap\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Functor_Data_GDotSubGraph {\n\t\t\tgraph [label=\"Instance for: GDotSubGraph\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1782 [label=\"Data.GraphViz.Types.Generalised\\nfmap\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1892 [label=\"Unknown Module\\nfmap\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1780 -> 1892 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1781 -> 1892 [penwidth=\"2.09861228866811\", color=black];\n\t\t1782 -> 1892 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1892 -> 1703 [penwidth=1, color=navy, dir=none];\n\t\t1892 -> 1704 [penwidth=1, color=navy, dir=none];\n\t\t1892 -> 1780 [penwidth=1, color=navy, dir=none];\n\t\t1892 -> 1781 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1892 -> 1782 [penwidth=1, color=navy, dir=none];\n\t}\n\tsubgraph cluster_Class_Labellable {\n\t\tgraph [label=\"Class: Labellable\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_Labellable_Data_PortNameEscString {\n\t\t\tgraph [label=\"Instance for: (PortName, EscString)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t538 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_Bool {\n\t\t\tgraph [label=\"Instance for: Bool\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t539 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_Char {\n\t\t\tgraph [label=\"Instance for: Char\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t540 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_Double {\n\t\t\tgraph [label=\"Instance for: Double\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t541 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_EscString {\n\t\t\tgraph [label=\"Instance for: EscString\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t542 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_HtmlLabel {\n\t\t\tgraph [label=\"Instance for: HtmlLabel\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t543 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_HtmlTable {\n\t\t\tgraph [label=\"Instance for: HtmlTable\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t544 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_HtmlText {\n\t\t\tgraph [label=\"Instance for: HtmlText\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t545 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_Int {\n\t\t\tgraph [label=\"Instance for: Int\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t546 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_PortName {\n\t\t\tgraph [label=\"Instance for: PortName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t547 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_RecordField {\n\t\t\tgraph [label=\"Instance for: RecordField\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t548 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_Labellable_Data_RecordFields {\n\t\t\tgraph [label=\"Instance for: RecordFields\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t549 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t537 [label=\"Data.GraphViz.Attributes\\ntoLabel\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t537 -> 538 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 539 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 540 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 541 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 542 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 543 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 544 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 545 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 546 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 547 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 548 [penwidth=1, color=navy, dir=none];\n\t\t537 -> 549 [penwidth=1, color=navy, dir=none];\n\t\t538 -> 537 [penwidth=1, color=black];\n\t\t539 -> 537 [penwidth=1, color=black];\n\t\t540 -> 537 [penwidth=1, color=black];\n\t\t541 -> 537 [penwidth=1, color=black];\n\t\t544 -> 537 [penwidth=1, color=black];\n\t\t545 -> 537 [penwidth=1, color=black];\n\t\t546 -> 537 [penwidth=1, color=black];\n\t\t547 -> 537 [penwidth=1, color=black];\n\t\t548 -> 537 [penwidth=1, color=black];\n\t}\n\tsubgraph cluster_Class_Ord {\n\t\tgraph [label=\"Class: Ord\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_Ord_Data_SameAttr {\n\t\t\tgraph [label=\"Instance for: SameAttr\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1842 [label=\"Data.GraphViz.Types.State\\ncompare\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1890 [label=\"Unknown Module\\ncompare\", style=\"filled,dotted\", shape=doubleoctagon, fillcolor=khaki];\n\t\t1842 -> 1890 [penwidth=1, color=black];\n\t\t1890 -> 1842 [penwidth=1, color=navy, dir=none];\n\t}\n\tsubgraph cluster_Class_ParseDot {\n\t\tgraph [label=\"Class: ParseDot\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_ParseDot_Data_DotEdgea {\n\t\t\tgraph [label=\"Instance for: (DotEdge a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1715 [label=\"Data.GraphViz.Types.Common\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1729 [label=\"Data.GraphViz.Types.Common\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1737 [label=\"Data.GraphViz.Types.Common\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1741 [label=\"Data.GraphViz.Types.Common\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_DotNodea {\n\t\t\tgraph [label=\"Instance for: (DotNode a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1716 [label=\"Data.GraphViz.Types.Common\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1730 [label=\"Data.GraphViz.Types.Common\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1738 [label=\"Data.GraphViz.Types.Common\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1742 [label=\"Data.GraphViz.Types.Common\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_GDotGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1801 [label=\"Data.GraphViz.Types.Generalised\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1807 [label=\"Data.GraphViz.Types.Generalised\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_GDotStatementa {\n\t\t\tgraph [label=\"Instance for: (GDotStatement a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1802 [label=\"Data.GraphViz.Types.Generalised\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1805 [label=\"Data.GraphViz.Types.Generalised\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1808 [label=\"Data.GraphViz.Types.Generalised\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1810 [label=\"Data.GraphViz.Types.Generalised\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_GDotSubGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotSubGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1803 [label=\"Data.GraphViz.Types.Generalised\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1806 [label=\"Data.GraphViz.Types.Generalised\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1809 [label=\"Data.GraphViz.Types.Generalised\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1811 [label=\"Data.GraphViz.Types.Generalised\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ArrowFill {\n\t\t\tgraph [label=\"Instance for: ArrowFill\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t437 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t467 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ArrowModifier {\n\t\t\tgraph [label=\"Instance for: ArrowModifier\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t468 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ArrowShape {\n\t\t\tgraph [label=\"Instance for: ArrowShape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t469 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ArrowSide {\n\t\t\tgraph [label=\"Instance for: ArrowSide\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t438 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t470 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ArrowType {\n\t\t\tgraph [label=\"Instance for: ArrowType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t471 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_AspectType {\n\t\t\tgraph [label=\"Instance for: AspectType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t439 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t472 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Attribute {\n\t\t\tgraph [label=\"Instance for: Attribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t440 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t461 [label=\"Data.GraphViz.Attributes\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t473 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Bool {\n\t\t\tgraph [label=\"Instance for: Bool\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1417 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_BrewerName {\n\t\t\tgraph [label=\"Instance for: BrewerName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1210 [label=\"Data.GraphViz.Attributes.Colors\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Char {\n\t\t\tgraph [label=\"Instance for: Char\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1389 [label=\"Data.GraphViz.Parsing\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1411 [label=\"Data.GraphViz.Parsing\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1418 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1426 [label=\"Data.GraphViz.Parsing\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ClusterMode {\n\t\t\tgraph [label=\"Instance for: ClusterMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t474 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Color {\n\t\t\tgraph [label=\"Instance for: Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1208 [label=\"Data.GraphViz.Attributes.Colors\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1209 [label=\"Data.GraphViz.Attributes.Colors\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1211 [label=\"Data.GraphViz.Attributes.Colors\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1214 [label=\"Data.GraphViz.Attributes.Colors\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ColorScheme {\n\t\t\tgraph [label=\"Instance for: ColorScheme\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1212 [label=\"Data.GraphViz.Attributes.Colors\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_CompassPoint {\n\t\t\tgraph [label=\"Instance for: CompassPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1360 [label=\"Data.GraphViz.Attributes.Internal\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_DEConstraints {\n\t\t\tgraph [label=\"Instance for: DEConstraints\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t475 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_DPoint {\n\t\t\tgraph [label=\"Instance for: DPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t441 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t476 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_DirType {\n\t\t\tgraph [label=\"Instance for: DirType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t477 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Double {\n\t\t\tgraph [label=\"Instance for: Double\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1412 [label=\"Data.GraphViz.Parsing\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1419 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1427 [label=\"Data.GraphViz.Parsing\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_EdgeType {\n\t\t\tgraph [label=\"Instance for: EdgeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t442 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t478 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_FocusType {\n\t\t\tgraph [label=\"Instance for: FocusType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t443 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t479 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_GlobalAttributes {\n\t\t\tgraph [label=\"Instance for: GlobalAttributes\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1717 [label=\"Data.GraphViz.Types.Common\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1731 [label=\"Data.GraphViz.Types.Common\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1739 [label=\"Data.GraphViz.Types.Common\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1743 [label=\"Data.GraphViz.Types.Common\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_GraphID {\n\t\t\tgraph [label=\"Instance for: GraphID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1718 [label=\"Data.GraphViz.Types.Common\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1740 [label=\"Data.GraphViz.Types.Common\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlAlign {\n\t\t\tgraph [label=\"Instance for: HtmlAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1281 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1301 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlAttribute {\n\t\t\tgraph [label=\"Instance for: HtmlAttribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1282 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1297 [label=\"Data.GraphViz.Attributes.HTML\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1302 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1311 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlCell {\n\t\t\tgraph [label=\"Instance for: HtmlCell\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1283 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1298 [label=\"Data.GraphViz.Attributes.HTML\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1303 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1312 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlImg {\n\t\t\tgraph [label=\"Instance for: HtmlImg\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1284 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1304 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlLabel {\n\t\t\tgraph [label=\"Instance for: HtmlLabel\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1285 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1305 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlRow {\n\t\t\tgraph [label=\"Instance for: HtmlRow\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1286 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1299 [label=\"Data.GraphViz.Attributes.HTML\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1306 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1313 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlScale {\n\t\t\tgraph [label=\"Instance for: HtmlScale\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1287 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1307 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlTable {\n\t\t\tgraph [label=\"Instance for: HtmlTable\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1288 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1308 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlTextItem {\n\t\t\tgraph [label=\"Instance for: HtmlTextItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1289 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1300 [label=\"Data.GraphViz.Attributes.HTML\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1309 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1314 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_HtmlVAlign {\n\t\t\tgraph [label=\"Instance for: HtmlVAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1290 [label=\"Data.GraphViz.Attributes.HTML\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1310 [label=\"Data.GraphViz.Attributes.HTML\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Int {\n\t\t\tgraph [label=\"Instance for: Int\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1420 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Justification {\n\t\t\tgraph [label=\"Instance for: Justification\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t480 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Label {\n\t\t\tgraph [label=\"Instance for: Label\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t444 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t481 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_LayerID {\n\t\t\tgraph [label=\"Instance for: LayerID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t445 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t482 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_LayerList {\n\t\t\tgraph [label=\"Instance for: LayerList\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t446 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t483 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_LayerRange {\n\t\t\tgraph [label=\"Instance for: LayerRange\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t447 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t484 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ModeType {\n\t\t\tgraph [label=\"Instance for: ModeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t485 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Model {\n\t\t\tgraph [label=\"Instance for: Model\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t486 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_OutputMode {\n\t\t\tgraph [label=\"Instance for: OutputMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t487 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Overlap {\n\t\t\tgraph [label=\"Instance for: Overlap\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t488 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Pack {\n\t\t\tgraph [label=\"Instance for: Pack\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t489 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_PackMode {\n\t\t\tgraph [label=\"Instance for: PackMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t490 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_PageDir {\n\t\t\tgraph [label=\"Instance for: PageDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t491 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Point {\n\t\t\tgraph [label=\"Instance for: Point\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t448 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t492 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t511 [label=\"Data.GraphViz.Attributes\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_PortName {\n\t\t\tgraph [label=\"Instance for: PortName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1357 [label=\"Data.GraphViz.Attributes.Internal\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1361 [label=\"Data.GraphViz.Attributes.Internal\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_PortPos {\n\t\t\tgraph [label=\"Instance for: PortPos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1358 [label=\"Data.GraphViz.Attributes.Internal\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1362 [label=\"Data.GraphViz.Attributes.Internal\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Pos {\n\t\t\tgraph [label=\"Instance for: Pos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t449 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t493 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_QuadType {\n\t\t\tgraph [label=\"Instance for: QuadType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t494 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_RankDir {\n\t\t\tgraph [label=\"Instance for: RankDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t495 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_RankType {\n\t\t\tgraph [label=\"Instance for: RankType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t496 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Ratios {\n\t\t\tgraph [label=\"Instance for: Ratios\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t497 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_RecordField {\n\t\t\tgraph [label=\"Instance for: RecordField\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t450 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t462 [label=\"Data.GraphViz.Attributes\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t498 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t512 [label=\"Data.GraphViz.Attributes\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Rect {\n\t\t\tgraph [label=\"Instance for: Rect\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t451 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t499 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Root {\n\t\t\tgraph [label=\"Instance for: Root\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t452 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t500 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_STStyle {\n\t\t\tgraph [label=\"Instance for: STStyle\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t501 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ScaleType {\n\t\t\tgraph [label=\"Instance for: ScaleType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t502 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Shape {\n\t\t\tgraph [label=\"Instance for: Shape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t503 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_SmoothType {\n\t\t\tgraph [label=\"Instance for: SmoothType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t504 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Spline {\n\t\t\tgraph [label=\"Instance for: Spline\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t453 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t505 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t513 [label=\"Data.GraphViz.Attributes\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_StartType {\n\t\t\tgraph [label=\"Instance for: StartType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t506 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_StyleItem {\n\t\t\tgraph [label=\"Instance for: StyleItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t454 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t463 [label=\"Data.GraphViz.Attributes\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t507 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t514 [label=\"Data.GraphViz.Attributes\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_StyleName {\n\t\t\tgraph [label=\"Instance for: StyleName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t455 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t508 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_VerticalPlacement {\n\t\t\tgraph [label=\"Instance for: VerticalPlacement\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t509 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_ViewPort {\n\t\t\tgraph [label=\"Instance for: ViewPort\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t456 [label=\"Data.GraphViz.Attributes\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t510 [label=\"Data.GraphViz.Attributes\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Word16 {\n\t\t\tgraph [label=\"Instance for: Word16\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1421 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_Word8 {\n\t\t\tgraph [label=\"Instance for: Word8\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1422 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_X11Color {\n\t\t\tgraph [label=\"Instance for: X11Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1213 [label=\"Data.GraphViz.Attributes.Colors\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_ParseDot_Data_a {\n\t\t\tgraph [label=\"Instance for: [a]\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1390 [label=\"Data.GraphViz.Parsing\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1423 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_DefaultInstance_ParseDot {\n\t\t\tgraph [label=\"Default Instance\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1388 [label=\"Data.GraphViz.Parsing\\nparse\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1410 [label=\"Data.GraphViz.Parsing\\nparseList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1425 [label=\"Data.GraphViz.Parsing\\nparseUnqtList\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1387 [label=\"Data.GraphViz.Parsing\\nparse\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1409 [label=\"Data.GraphViz.Parsing\\nparseList\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1416 [label=\"Data.GraphViz.Parsing\\nparseUnqt\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1424 [label=\"Data.GraphViz.Parsing\\nparseUnqtList\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t437 -> 1416 [penwidth=1, color=black];\n\t\t438 -> 1416 [penwidth=1, color=black];\n\t\t439 -> 1387 [penwidth=1, color=black];\n\t\t440 -> 1416 [penwidth=1, color=black];\n\t\t441 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t442 -> 1416 [penwidth=1, color=black];\n\t\t443 -> 1387 [penwidth=\"1.6931471805599454\", color=black];\n\t\t444 -> 1387 [penwidth=\"2.09861228866811\", color=black];\n\t\t445 -> 1387 [penwidth=1, color=black];\n\t\t446 -> 1416 [penwidth=1, color=black];\n\t\t447 -> 1387 [penwidth=1, color=black];\n\t\t447 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t448 -> 1416 [penwidth=1, color=black];\n\t\t449 -> 1416 [penwidth=1, color=black];\n\t\t450 -> 1416 [penwidth=1, color=black];\n\t\t451 -> 1416 [penwidth=1, color=black];\n\t\t452 -> 1387 [penwidth=1, color=black];\n\t\t453 -> 1416 [penwidth=1, color=black];\n\t\t454 -> 1387 [penwidth=1, color=black];\n\t\t454 -> 1416 [penwidth=1, color=black];\n\t\t455 -> 1416 [penwidth=1, color=black];\n\t\t456 -> 1416 [penwidth=1, color=black];\n\t\t461 -> 1424 [penwidth=1, color=black];\n\t\t462 -> 1424 [penwidth=1, color=black];\n\t\t463 -> 1387 [penwidth=1, color=black];\n\t\t463 -> 1424 [penwidth=1, color=black];\n\t\t468 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t471 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t472 -> 1416 [penwidth=1, color=black];\n\t\t473 -> 1387 [penwidth=1, color=black];\n\t\t475 -> 1387 [penwidth=1, color=black];\n\t\t476 -> 1416 [penwidth=1, color=black];\n\t\t478 -> 1387 [penwidth=1, color=black];\n\t\t479 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t481 -> 1416 [penwidth=\"2.09861228866811\", color=black];\n\t\t483 -> 1416 [penwidth=1, color=black];\n\t\t484 -> 1416 [penwidth=\"2.09861228866811\", color=black];\n\t\t488 -> 1387 [penwidth=1, color=black];\n\t\t489 -> 1416 [penwidth=1, color=black];\n\t\t490 -> 1416 [penwidth=1, color=black];\n\t\t492 -> 1416 [penwidth=1, color=black];\n\t\t493 -> 1416 [penwidth=1, color=black];\n\t\t494 -> 1387 [penwidth=1, color=black];\n\t\t497 -> 1416 [penwidth=1, color=black];\n\t\t498 -> 1416 [penwidth=1, color=black];\n\t\t500 -> 1416 [penwidth=1, color=black];\n\t\t505 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t506 -> 1416 [penwidth=\"2.386294361119891\", color=black];\n\t\t507 -> 1416 [penwidth=1, color=black];\n\t\t510 -> 1416 [penwidth=\"2.386294361119891\", color=black];\n\t\t511 -> 1416 [penwidth=1, color=black];\n\t\t512 -> 1416 [penwidth=1, color=black];\n\t\t513 -> 1416 [penwidth=1, color=black];\n\t\t514 -> 1416 [penwidth=1, color=black];\n\t\t1208 -> 1416 [penwidth=\"2.09861228866811\", color=black];\n\t\t1209 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1209 -> 1424 [penwidth=1, color=black];\n\t\t1211 -> 1387 [penwidth=\"2.09861228866811\", color=black];\n\t\t1211 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1212 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1214 -> 1416 [penwidth=1, color=black];\n\t\t1281 -> 1416 [penwidth=1, color=black];\n\t\t1282 -> 1416 [penwidth=1, color=black];\n\t\t1283 -> 1416 [penwidth=1, color=black];\n\t\t1284 -> 1416 [penwidth=1, color=black];\n\t\t1285 -> 1416 [penwidth=1, color=black];\n\t\t1286 -> 1416 [penwidth=1, color=black];\n\t\t1287 -> 1416 [penwidth=1, color=black];\n\t\t1288 -> 1416 [penwidth=1, color=black];\n\t\t1289 -> 1416 [penwidth=1, color=black];\n\t\t1290 -> 1416 [penwidth=1, color=black];\n\t\t1297 -> 1424 [penwidth=1, color=black];\n\t\t1298 -> 1424 [penwidth=1, color=black];\n\t\t1299 -> 1424 [penwidth=1, color=black];\n\t\t1300 -> 1424 [penwidth=1, color=black];\n\t\t1303 -> 1387 [penwidth=1, color=black];\n\t\t1303 -> 1416 [penwidth=1, color=black];\n\t\t1305 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1306 -> 1416 [penwidth=1, color=black];\n\t\t1308 -> 1416 [penwidth=1, color=black];\n\t\t1309 -> 1416 [penwidth=1, color=black];\n\t\t1311 -> 1416 [penwidth=1, color=black];\n\t\t1312 -> 1416 [penwidth=1, color=black];\n\t\t1313 -> 1416 [penwidth=1, color=black];\n\t\t1314 -> 1416 [penwidth=1, color=black];\n\t\t1357 -> 1416 [penwidth=1, color=black];\n\t\t1358 -> 1416 [penwidth=1, color=black];\n\t\t1362 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1387 -> 437 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 438 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 439 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 440 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 441 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 442 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 443 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 444 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 445 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 446 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 447 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 448 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 449 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 450 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 451 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 452 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 453 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 454 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 455 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 456 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1208 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1281 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1282 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1283 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1284 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1285 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1286 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1287 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1288 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1289 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1290 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1357 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1358 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1388 [penwidth=1, color=turquoise, dir=none];\n\t\t1387 -> 1389 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1390 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1715 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1716 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1717 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1718 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1801 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1802 [penwidth=1, color=navy, dir=none];\n\t\t1387 -> 1803 [penwidth=1, color=navy, dir=none];\n\t\t1388 -> 1416 [penwidth=1, color=black];\n\t\t1389 -> 1416 [penwidth=1, color=black];\n\t\t1390 -> 1409 [penwidth=1, color=chartreuse];\n\t\t1409 -> 461 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 462 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 463 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1209 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1297 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1298 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1299 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1300 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1410 [penwidth=1, color=turquoise, dir=none];\n\t\t1409 -> 1411 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1412 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1729 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1730 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1731 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1805 [penwidth=1, color=navy, dir=none];\n\t\t1409 -> 1806 [penwidth=1, color=navy, dir=none];\n\t\t1410 -> 1424 [penwidth=1, color=black];\n\t\t1412 -> 1387 [penwidth=1, color=black];\n\t\t1412 -> 1424 [penwidth=1, color=black];\n\t\t1416 -> 467 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 468 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 469 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 470 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 471 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 472 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 473 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 474 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 475 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 476 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 477 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 478 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 479 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 480 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 481 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 482 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 483 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 484 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 485 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 486 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 487 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 488 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 489 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 490 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 491 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 492 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 493 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 494 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 495 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 496 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 497 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 498 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 499 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 500 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 501 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 502 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 503 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 504 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 505 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 506 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 507 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 508 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 509 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 510 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1210 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1211 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1212 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1213 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1301 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1302 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1303 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1304 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1305 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1306 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1307 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1308 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1309 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1310 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1360 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1361 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1362 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1417 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1418 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1419 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1420 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1421 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1422 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1423 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1737 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1738 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1739 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1740 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1807 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1808 [penwidth=1, color=navy, dir=none];\n\t\t1416 -> 1809 [penwidth=1, color=navy, dir=none];\n\t\t1423 -> 1424 [penwidth=1, color=black];\n\t\t1424 -> 511 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 512 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 513 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 514 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1214 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1311 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1312 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1313 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1314 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1425 [penwidth=1, color=turquoise, dir=none];\n\t\t1424 -> 1426 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1427 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1741 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1742 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1743 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1810 [penwidth=1, color=navy, dir=none];\n\t\t1424 -> 1811 [penwidth=1, color=navy, dir=none];\n\t\t1425 -> 1416 [penwidth=1, color=black];\n\t\t1427 -> 1416 [penwidth=1, color=black];\n\t\t1715 -> 1416 [penwidth=1, color=black];\n\t\t1716 -> 1416 [penwidth=1, color=black];\n\t\t1717 -> 1416 [penwidth=1, color=black];\n\t\t1718 -> 1387 [penwidth=1, color=black];\n\t\t1729 -> 1424 [penwidth=1, color=black];\n\t\t1730 -> 1424 [penwidth=1, color=black];\n\t\t1731 -> 1424 [penwidth=1, color=black];\n\t\t1739 -> 1387 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1740 -> 1416 [penwidth=1, color=black];\n\t\t1743 -> 1387 [penwidth=1, color=black];\n\t\t1801 -> 1416 [penwidth=1, color=black];\n\t\t1802 -> 1416 [penwidth=1, color=black];\n\t\t1803 -> 1416 [penwidth=1, color=black];\n\t\t1805 -> 1424 [penwidth=1, color=black];\n\t\t1806 -> 1424 [penwidth=1, color=black];\n\t\t1808 -> 1416 [penwidth=\"2.386294361119891\", color=black];\n\t\t1810 -> 1387 [penwidth=1, color=black];\n\t\t1811 -> 1416 [penwidth=1, color=black];\n\t}\n\tsubgraph cluster_Class_PrintDot {\n\t\tgraph [label=\"Class: PrintDot\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=rosybrown1];\n\t\tsubgraph cluster_Class_PrintDot_Data_DotEdgea {\n\t\t\tgraph [label=\"Instance for: (DotEdge a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1708 [label=\"Data.GraphViz.Types.Common\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1766 [label=\"Data.GraphViz.Types.Common\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1770 [label=\"Data.GraphViz.Types.Common\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_DotNodea {\n\t\t\tgraph [label=\"Instance for: (DotNode a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1709 [label=\"Data.GraphViz.Types.Common\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1767 [label=\"Data.GraphViz.Types.Common\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1771 [label=\"Data.GraphViz.Types.Common\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_GDotGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1821 [label=\"Data.GraphViz.Types.Generalised\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_GDotStatementa {\n\t\t\tgraph [label=\"Instance for: (GDotStatement a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1797 [label=\"Data.GraphViz.Types.Generalised\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1822 [label=\"Data.GraphViz.Types.Generalised\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1824 [label=\"Data.GraphViz.Types.Generalised\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_GDotSubGrapha {\n\t\t\tgraph [label=\"Instance for: (GDotSubGraph a)\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1798 [label=\"Data.GraphViz.Types.Generalised\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1823 [label=\"Data.GraphViz.Types.Generalised\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1825 [label=\"Data.GraphViz.Types.Generalised\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ArrowFill {\n\t\t\tgraph [label=\"Instance for: ArrowFill\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t550 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ArrowModifier {\n\t\t\tgraph [label=\"Instance for: ArrowModifier\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t551 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ArrowShape {\n\t\t\tgraph [label=\"Instance for: ArrowShape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t552 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ArrowSide {\n\t\t\tgraph [label=\"Instance for: ArrowSide\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t553 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ArrowType {\n\t\t\tgraph [label=\"Instance for: ArrowType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t554 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_AspectType {\n\t\t\tgraph [label=\"Instance for: AspectType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t520 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t555 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Attribute {\n\t\t\tgraph [label=\"Instance for: Attribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t422 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t556 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Bool {\n\t\t\tgraph [label=\"Instance for: Bool\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1476 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_BrewerName {\n\t\t\tgraph [label=\"Instance for: BrewerName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1220 [label=\"Data.GraphViz.Attributes.Colors\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Char {\n\t\t\tgraph [label=\"Instance for: Char\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1460 [label=\"Data.GraphViz.Printing\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1472 [label=\"Data.GraphViz.Printing\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1477 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t\t1486 [label=\"Data.GraphViz.Printing\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ClusterMode {\n\t\t\tgraph [label=\"Instance for: ClusterMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t557 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Color {\n\t\t\tgraph [label=\"Instance for: Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1206 [label=\"Data.GraphViz.Attributes.Colors\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1218 [label=\"Data.GraphViz.Attributes.Colors\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1221 [label=\"Data.GraphViz.Attributes.Colors\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1224 [label=\"Data.GraphViz.Attributes.Colors\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ColorScheme {\n\t\t\tgraph [label=\"Instance for: ColorScheme\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1222 [label=\"Data.GraphViz.Attributes.Colors\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_CompassPoint {\n\t\t\tgraph [label=\"Instance for: CompassPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1366 [label=\"Data.GraphViz.Attributes.Internal\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_DEConstraints {\n\t\t\tgraph [label=\"Instance for: DEConstraints\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t558 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_DPoint {\n\t\t\tgraph [label=\"Instance for: DPoint\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t521 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t559 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_DirType {\n\t\t\tgraph [label=\"Instance for: DirType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t560 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Double {\n\t\t\tgraph [label=\"Instance for: Double\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1461 [label=\"Data.GraphViz.Printing\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1473 [label=\"Data.GraphViz.Printing\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1478 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t\t1487 [label=\"Data.GraphViz.Printing\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_EdgeType {\n\t\t\tgraph [label=\"Instance for: EdgeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t522 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t561 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_FocusType {\n\t\t\tgraph [label=\"Instance for: FocusType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t523 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t562 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_GlobalAttributes {\n\t\t\tgraph [label=\"Instance for: GlobalAttributes\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1710 [label=\"Data.GraphViz.Types.Common\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1768 [label=\"Data.GraphViz.Types.Common\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1772 [label=\"Data.GraphViz.Types.Common\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_GraphID {\n\t\t\tgraph [label=\"Instance for: GraphID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1761 [label=\"Data.GraphViz.Types.Common\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1769 [label=\"Data.GraphViz.Types.Common\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlAlign {\n\t\t\tgraph [label=\"Instance for: HtmlAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1328 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlAttribute {\n\t\t\tgraph [label=\"Instance for: HtmlAttribute\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1277 [label=\"Data.GraphViz.Attributes.HTML\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1329 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1338 [label=\"Data.GraphViz.Attributes.HTML\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlCell {\n\t\t\tgraph [label=\"Instance for: HtmlCell\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1278 [label=\"Data.GraphViz.Attributes.HTML\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1330 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1339 [label=\"Data.GraphViz.Attributes.HTML\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlImg {\n\t\t\tgraph [label=\"Instance for: HtmlImg\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1331 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlLabel {\n\t\t\tgraph [label=\"Instance for: HtmlLabel\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1332 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlRow {\n\t\t\tgraph [label=\"Instance for: HtmlRow\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1279 [label=\"Data.GraphViz.Attributes.HTML\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1333 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1340 [label=\"Data.GraphViz.Attributes.HTML\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlScale {\n\t\t\tgraph [label=\"Instance for: HtmlScale\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1334 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlTable {\n\t\t\tgraph [label=\"Instance for: HtmlTable\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1335 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlTextItem {\n\t\t\tgraph [label=\"Instance for: HtmlTextItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1280 [label=\"Data.GraphViz.Attributes.HTML\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1336 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1341 [label=\"Data.GraphViz.Attributes.HTML\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_HtmlVAlign {\n\t\t\tgraph [label=\"Instance for: HtmlVAlign\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1337 [label=\"Data.GraphViz.Attributes.HTML\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Int {\n\t\t\tgraph [label=\"Instance for: Int\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1479 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Justification {\n\t\t\tgraph [label=\"Instance for: Justification\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t563 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Label {\n\t\t\tgraph [label=\"Instance for: Label\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t524 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t564 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_LayerID {\n\t\t\tgraph [label=\"Instance for: LayerID\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t423 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t525 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t565 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t594 [label=\"Data.GraphViz.Attributes\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_LayerList {\n\t\t\tgraph [label=\"Instance for: LayerList\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t526 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t566 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_LayerRange {\n\t\t\tgraph [label=\"Instance for: LayerRange\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t527 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t567 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ModeType {\n\t\t\tgraph [label=\"Instance for: ModeType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t568 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Model {\n\t\t\tgraph [label=\"Instance for: Model\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t569 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_OutputMode {\n\t\t\tgraph [label=\"Instance for: OutputMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t570 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Overlap {\n\t\t\tgraph [label=\"Instance for: Overlap\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t571 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Pack {\n\t\t\tgraph [label=\"Instance for: Pack\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t572 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_PackMode {\n\t\t\tgraph [label=\"Instance for: PackMode\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t573 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_PageDir {\n\t\t\tgraph [label=\"Instance for: PageDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t574 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Point {\n\t\t\tgraph [label=\"Instance for: Point\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t424 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t528 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t575 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t595 [label=\"Data.GraphViz.Attributes\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_PortName {\n\t\t\tgraph [label=\"Instance for: PortName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1364 [label=\"Data.GraphViz.Attributes.Internal\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1367 [label=\"Data.GraphViz.Attributes.Internal\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_PortPos {\n\t\t\tgraph [label=\"Instance for: PortPos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1365 [label=\"Data.GraphViz.Attributes.Internal\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1368 [label=\"Data.GraphViz.Attributes.Internal\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Pos {\n\t\t\tgraph [label=\"Instance for: Pos\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t529 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t576 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_QuadType {\n\t\t\tgraph [label=\"Instance for: QuadType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t577 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_RankDir {\n\t\t\tgraph [label=\"Instance for: RankDir\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t578 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_RankType {\n\t\t\tgraph [label=\"Instance for: RankType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t579 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Ratios {\n\t\t\tgraph [label=\"Instance for: Ratios\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t580 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_RecordField {\n\t\t\tgraph [label=\"Instance for: RecordField\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t425 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t530 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t581 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t596 [label=\"Data.GraphViz.Attributes\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Rect {\n\t\t\tgraph [label=\"Instance for: Rect\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t531 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t582 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Root {\n\t\t\tgraph [label=\"Instance for: Root\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t532 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t583 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_STStyle {\n\t\t\tgraph [label=\"Instance for: STStyle\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t584 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ScaleType {\n\t\t\tgraph [label=\"Instance for: ScaleType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t585 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Shape {\n\t\t\tgraph [label=\"Instance for: Shape\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t586 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_SmoothType {\n\t\t\tgraph [label=\"Instance for: SmoothType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t587 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Spline {\n\t\t\tgraph [label=\"Instance for: Spline\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t426 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t533 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t588 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t597 [label=\"Data.GraphViz.Attributes\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_StartType {\n\t\t\tgraph [label=\"Instance for: StartType\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t589 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_StyleItem {\n\t\t\tgraph [label=\"Instance for: StyleItem\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t427 [label=\"Data.GraphViz.Attributes\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t534 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t590 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t598 [label=\"Data.GraphViz.Attributes\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_StyleName {\n\t\t\tgraph [label=\"Instance for: StyleName\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t535 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t591 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_VerticalPlacement {\n\t\t\tgraph [label=\"Instance for: VerticalPlacement\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t592 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_ViewPort {\n\t\t\tgraph [label=\"Instance for: ViewPort\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t536 [label=\"Data.GraphViz.Attributes\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t593 [label=\"Data.GraphViz.Attributes\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Word16 {\n\t\t\tgraph [label=\"Instance for: Word16\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1480 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_Word8 {\n\t\t\tgraph [label=\"Instance for: Word8\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1481 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=cyan];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_X11Color {\n\t\t\tgraph [label=\"Instance for: X11Color\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1223 [label=\"Data.GraphViz.Attributes.Colors\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_Class_PrintDot_Data_a {\n\t\t\tgraph [label=\"Instance for: [a]\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1474 [label=\"Data.GraphViz.Printing\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1482 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\tsubgraph cluster_DefaultInstance_PrintDot {\n\t\t\tgraph [label=\"Default Instance\",\n\t\t\t\tfillcolor=slategray1];\n\t\t\t1459 [label=\"Data.GraphViz.Printing\\nlistToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1471 [label=\"Data.GraphViz.Printing\\ntoDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t\t1485 [label=\"Data.GraphViz.Printing\\nunqtListToDot\", style=\"filled,solid\", shape=octagon, fillcolor=bisque];\n\t\t}\n\t\t1458 [label=\"Data.GraphViz.Printing\\nlistToDot\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1470 [label=\"Data.GraphViz.Printing\\ntoDot\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1475 [label=\"Data.GraphViz.Printing\\nunqtDot\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t1484 [label=\"Data.GraphViz.Printing\\nunqtListToDot\", style=\"filled,solid\", shape=doubleoctagon, fillcolor=goldenrod];\n\t\t422 -> 1484 [penwidth=1, color=black];\n\t\t423 -> 1470 [penwidth=1, color=black];\n\t\t423 -> 1475 [penwidth=1, color=black];\n\t\t424 -> 1484 [penwidth=1, color=black];\n\t\t425 -> 1470 [penwidth=1, color=black];\n\t\t425 -> 1484 [penwidth=1, color=black];\n\t\t426 -> 1484 [penwidth=1, color=black];\n\t\t427 -> 1470 [penwidth=1, color=black];\n\t\t427 -> 1484 [penwidth=1, color=black];\n\t\t520 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t521 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t522 -> 1475 [penwidth=1, color=black];\n\t\t523 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t524 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t524 -> 1475 [penwidth=1, color=black];\n\t\t525 -> 1470 [penwidth=1, color=black];\n\t\t525 -> 1475 [penwidth=1, color=black];\n\t\t526 -> 1470 [penwidth=1, color=black];\n\t\t527 -> 1470 [penwidth=1, color=black];\n\t\t527 -> 1475 [penwidth=1, color=black];\n\t\t528 -> 1475 [penwidth=1, color=black];\n\t\t529 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t530 -> 1475 [penwidth=1, color=black];\n\t\t531 -> 1475 [penwidth=1, color=black];\n\t\t532 -> 1470 [penwidth=1, color=black];\n\t\t532 -> 1475 [penwidth=1, color=black];\n\t\t533 -> 1475 [penwidth=1, color=black];\n\t\t534 -> 1470 [penwidth=1, color=black];\n\t\t534 -> 1475 [penwidth=1, color=black];\n\t\t535 -> 1470 [penwidth=1, color=black];\n\t\t535 -> 1475 [penwidth=1, color=black];\n\t\t536 -> 1475 [penwidth=1, color=black];\n\t\t551 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t552 -> 1475 [penwidth=\"3.1972245773362196\", color=black];\n\t\t554 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t555 -> 1475 [penwidth=1, color=black];\n\t\t556 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t557 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t558 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t559 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t560 -> 1475 [penwidth=\"2.386294361119891\", color=black];\n\t\t561 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t562 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t564 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t565 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t566 -> 1475 [penwidth=1, color=black];\n\t\t567 -> 1475 [penwidth=\"2.386294361119891\", color=black];\n\t\t571 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t572 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t573 -> 1475 [penwidth=1, color=black];\n\t\t575 -> 1475 [penwidth=1, color=black];\n\t\t576 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t580 -> 1475 [penwidth=1, color=black];\n\t\t581 -> 1475 [penwidth=1, color=black];\n\t\t583 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t585 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t588 -> 1475 [penwidth=1, color=black];\n\t\t589 -> 1475 [penwidth=\"2.386294361119891\", color=black];\n\t\t590 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t591 -> 1475 [penwidth=1, color=black];\n\t\t593 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t594 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t595 -> 1475 [penwidth=1, color=black];\n\t\t596 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t597 -> 1475 [penwidth=1, color=black];\n\t\t598 -> 1475 [penwidth=1, color=black];\n\t\t1206 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1206 -> 1484 [penwidth=1, color=black];\n\t\t1218 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1218 -> 1475 [penwidth=1, color=black];\n\t\t1220 -> 1475 [penwidth=\"4.555348061489413\", color=black];\n\t\t1221 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t1222 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t1223 -> 1475 [penwidth=\"7.302618975744905\", color=black];\n\t\t1224 -> 1475 [penwidth=1, color=black];\n\t\t1277 -> 1484 [penwidth=1, color=black];\n\t\t1278 -> 1484 [penwidth=1, color=black];\n\t\t1279 -> 1484 [penwidth=1, color=black];\n\t\t1280 -> 1484 [penwidth=1, color=black];\n\t\t1330 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1332 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1333 -> 1475 [penwidth=1, color=black];\n\t\t1335 -> 1470 [penwidth=1, color=black];\n\t\t1336 -> 1475 [penwidth=1, color=black];\n\t\t1338 -> 1475 [penwidth=1, color=black];\n\t\t1339 -> 1475 [penwidth=1, color=black];\n\t\t1340 -> 1475 [penwidth=1, color=black];\n\t\t1341 -> 1475 [penwidth=1, color=black];\n\t\t1364 -> 1470 [penwidth=1, color=black];\n\t\t1365 -> 1470 [penwidth=1, color=black];\n\t\t1365 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t\t1367 -> 1475 [penwidth=1, color=black];\n\t\t1368 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t1458 -> 422 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 423 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1458 -> 424 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 425 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1458 -> 426 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 427 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1458 -> 1206 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1458 -> 1277 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1278 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1279 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1280 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1459 [penwidth=1, color=turquoise, dir=none];\n\t\t1458 -> 1460 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1461 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1458 -> 1708 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1709 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1710 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1797 [penwidth=1, color=navy, dir=none];\n\t\t1458 -> 1798 [penwidth=1, color=navy, dir=none];\n\t\t1459 -> 1484 [penwidth=1, color=black];\n\t\t1461 -> 1470 [penwidth=1, color=black];\n\t\t1461 -> 1484 [penwidth=1, color=black];\n\t\t1470 -> 520 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 521 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 522 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 523 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 524 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1470 -> 525 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 526 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 527 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 528 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 529 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 530 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 531 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 532 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 533 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 534 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 535 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1470 -> 536 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 1218 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1470 -> 1364 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 1365 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1470 -> 1471 [penwidth=1, color=turquoise, dir=none];\n\t\t1470 -> 1472 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 1473 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 1474 [penwidth=1, color=navy, dir=none];\n\t\t1470 -> 1761 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1471 -> 1475 [penwidth=1, color=black];\n\t\t1473 -> 1475 [penwidth=1, color=black];\n\t\t1474 -> 1458 [penwidth=1, color=chartreuse];\n\t\t1475 -> 550 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 551 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 552 [penwidth=\"3.1972245773362196\", color=navy, dir=none];\n\t\t1475 -> 553 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 554 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 555 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 556 [penwidth=\"5.976733742420574\", color=navy, dir=none];\n\t\t1475 -> 557 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 558 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 559 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 560 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 561 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 562 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 563 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 564 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 565 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 566 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 567 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 568 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 569 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 570 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 571 [penwidth=\"3.0794415416798357\", color=navy, dir=none];\n\t\t1475 -> 572 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 573 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 574 [penwidth=\"3.0794415416798357\", color=navy, dir=none];\n\t\t1475 -> 575 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 576 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 577 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 578 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 579 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 580 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 581 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 582 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 583 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 584 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 585 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 586 [penwidth=\"4.465735902799727\", color=navy, dir=none];\n\t\t1475 -> 587 [penwidth=\"2.9459101490553135\", color=navy, dir=none];\n\t\t1475 -> 588 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 589 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 590 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 591 [penwidth=\"3.1972245773362196\", color=navy, dir=none];\n\t\t1475 -> 592 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 593 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1220 [penwidth=\"4.555348061489413\", color=navy, dir=none];\n\t\t1475 -> 1221 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 1222 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 1223 [penwidth=\"7.302618975744905\", color=navy, dir=none];\n\t\t1475 -> 1328 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 1329 [penwidth=\"4.091042453358316\", color=navy, dir=none];\n\t\t1475 -> 1330 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 1331 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1332 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 1333 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1334 [penwidth=\"2.6094379124341005\", color=navy, dir=none];\n\t\t1475 -> 1335 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1336 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 1337 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 1366 [penwidth=\"3.302585092994046\", color=navy, dir=none];\n\t\t1475 -> 1367 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1368 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 1476 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1475 -> 1477 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1478 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1479 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1480 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1481 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1482 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1766 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1767 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1768 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1769 [penwidth=\"2.09861228866811\", color=navy, dir=none];\n\t\t1475 -> 1821 [penwidth=1, color=navy, dir=none];\n\t\t1475 -> 1822 [penwidth=\"2.386294361119891\", color=navy, dir=none];\n\t\t1475 -> 1823 [penwidth=1, color=navy, dir=none];\n\t\t1482 -> 1484 [penwidth=1, color=black];\n\t\t1484 -> 594 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 595 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 596 [penwidth=\"1.6931471805599454\", color=navy, dir=none];\n\t\t1484 -> 597 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 598 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1224 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1338 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1339 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1340 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1341 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1485 [penwidth=1, color=turquoise, dir=none];\n\t\t1484 -> 1486 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1487 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1770 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1771 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1772 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1824 [penwidth=1, color=navy, dir=none];\n\t\t1484 -> 1825 [penwidth=1, color=navy, dir=none];\n\t\t1485 -> 1475 [penwidth=1, color=black];\n\t\t1487 -> 1475 [penwidth=1, color=black];\n\t\t1708 -> 1484 [penwidth=1, color=black];\n\t\t1709 -> 1484 [penwidth=1, color=black];\n\t\t1710 -> 1484 [penwidth=1, color=black];\n\t\t1761 -> 1470 [penwidth=1, color=black];\n\t\t1761 -> 1475 [penwidth=1, color=black];\n\t\t1768 -> 1470 [penwidth=1, color=black];\n\t\t1769 -> 1475 [penwidth=\"2.09861228866811\", color=black];\n\t\t1797 -> 1484 [penwidth=1, color=black];\n\t\t1798 -> 1484 [penwidth=1, color=black];\n\t\t1822 -> 1475 [penwidth=\"2.386294361119891\", color=black];\n\t\t1824 -> 1475 [penwidth=1, color=black];\n\t}\n\tsubgraph cluster_Data_ArrowFill {\n\t\tgraph [label=\"Data: ArrowFill\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t159 [label=\"Data.GraphViz.Attributes\\nFilledArrow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t275 [label=\"Data.GraphViz.Attributes\\nOpenArrow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ArrowModifier {\n\t\tgraph [label=\"Data: ArrowModifier\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t84 [label=\"Data.GraphViz.Attributes\\nArrMod\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t402 [label=\"Data.GraphViz.Attributes\\narrowFill\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t403 [label=\"Data.GraphViz.Attributes\\narrowSide\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t402 -> 84 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t403 -> 84 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_ArrowShape {\n\t\tgraph [label=\"Data: ArrowShape\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t99 [label=\"Data.GraphViz.Attributes\\nBox\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t119 [label=\"Data.GraphViz.Attributes\\nCrow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t128 [label=\"Data.GraphViz.Attributes\\nDiamond\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t137 [label=\"Data.GraphViz.Attributes\\nDotArrow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t191 [label=\"Data.GraphViz.Attributes\\nInv\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t254 [label=\"Data.GraphViz.Attributes\\nNoArrow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t267 [label=\"Data.GraphViz.Attributes\\nNormal\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t377 [label=\"Data.GraphViz.Attributes\\nTee\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t393 [label=\"Data.GraphViz.Attributes\\nVee\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ArrowSide {\n\t\tgraph [label=\"Data: ArrowSide\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t98 [label=\"Data.GraphViz.Attributes\\nBothSides\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t232 [label=\"Data.GraphViz.Attributes\\nLeftSide\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t328 [label=\"Data.GraphViz.Attributes\\nRightSide\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ArrowType {\n\t\tgraph [label=\"Data: ArrowType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t82 [label=\"Data.GraphViz.Attributes\\nAType\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_AspectType {\n\t\tgraph [label=\"Data: AspectType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t316 [label=\"Data.GraphViz.Attributes\\nRatioOnly\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t317 [label=\"Data.GraphViz.Attributes\\nRatioPassCount\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Attribute {\n\t\tgraph [label=\"Data: Attribute\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t31 [label=\"Data.GraphViz.AttributeGenerator\\nA\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t48 [label=\"Data.GraphViz.AttributeGenerator\\ncnst\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t49 [label=\"Data.GraphViz.AttributeGenerator\\ncomment\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t57 [label=\"Data.GraphViz.AttributeGenerator\\nforClusters\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t58 [label=\"Data.GraphViz.AttributeGenerator\\nforEdges\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t59 [label=\"Data.GraphViz.AttributeGenerator\\nforGraphs\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t60 [label=\"Data.GraphViz.AttributeGenerator\\nforNodes\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t61 [label=\"Data.GraphViz.AttributeGenerator\\nforSubGraphs\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t66 [label=\"Data.GraphViz.AttributeGenerator\\nname\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t67 [label=\"Data.GraphViz.AttributeGenerator\\nparseDef\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t69 [label=\"Data.GraphViz.AttributeGenerator\\nparseNames\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t77 [label=\"Data.GraphViz.AttributeGenerator\\nvaltype\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t85 [label=\"Data.GraphViz.Attributes\\nArrowHead\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t86 [label=\"Data.GraphViz.Attributes\\nArrowSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t87 [label=\"Data.GraphViz.Attributes\\nArrowTail\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t88 [label=\"Data.GraphViz.Attributes\\nAspect\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t93 [label=\"Data.GraphViz.Attributes\\nBb\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t94 [label=\"Data.GraphViz.Attributes\\nBgColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t104 [label=\"Data.GraphViz.Attributes\\nCenter\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t105 [label=\"Data.GraphViz.Attributes\\nCharset\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t108 [label=\"Data.GraphViz.Attributes\\nClusterRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t109 [label=\"Data.GraphViz.Attributes\\nColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t110 [label=\"Data.GraphViz.Attributes\\nColorScheme\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t111 [label=\"Data.GraphViz.Attributes\\nComment\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t113 [label=\"Data.GraphViz.Attributes\\nCompound\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t117 [label=\"Data.GraphViz.Attributes\\nConcentrate\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t118 [label=\"Data.GraphViz.Attributes\\nConstraint\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t121 [label=\"Data.GraphViz.Attributes\\nDPI\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t123 [label=\"Data.GraphViz.Attributes\\nDamping\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t125 [label=\"Data.GraphViz.Attributes\\nDecorate\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t126 [label=\"Data.GraphViz.Attributes\\nDefaultDist\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t130 [label=\"Data.GraphViz.Attributes\\nDim\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t131 [label=\"Data.GraphViz.Attributes\\nDimen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t132 [label=\"Data.GraphViz.Attributes\\nDir\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t133 [label=\"Data.GraphViz.Attributes\\nDirEdgeConstraints\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t134 [label=\"Data.GraphViz.Attributes\\nDistortion\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t141 [label=\"Data.GraphViz.Attributes\\nESep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t143 [label=\"Data.GraphViz.Attributes\\nEdgeTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t144 [label=\"Data.GraphViz.Attributes\\nEdgeTooltip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t145 [label=\"Data.GraphViz.Attributes\\nEdgeURL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t149 [label=\"Data.GraphViz.Attributes\\nEpsilon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t154 [label=\"Data.GraphViz.Attributes\\nFillColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t160 [label=\"Data.GraphViz.Attributes\\nFixedSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t163 [label=\"Data.GraphViz.Attributes\\nFontColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t164 [label=\"Data.GraphViz.Attributes\\nFontName\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t165 [label=\"Data.GraphViz.Attributes\\nFontNames\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t166 [label=\"Data.GraphViz.Attributes\\nFontPath\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t167 [label=\"Data.GraphViz.Attributes\\nFontSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t175 [label=\"Data.GraphViz.Attributes\\nGroup\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t176 [label=\"Data.GraphViz.Attributes\\nHeadClip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t177 [label=\"Data.GraphViz.Attributes\\nHeadLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t178 [label=\"Data.GraphViz.Attributes\\nHeadPort\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t179 [label=\"Data.GraphViz.Attributes\\nHeadTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t180 [label=\"Data.GraphViz.Attributes\\nHeadTooltip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t181 [label=\"Data.GraphViz.Attributes\\nHeadURL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t182 [label=\"Data.GraphViz.Attributes\\nHeight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t188 [label=\"Data.GraphViz.Attributes\\nID\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t189 [label=\"Data.GraphViz.Attributes\\nImage\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t190 [label=\"Data.GraphViz.Attributes\\nImageScale\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t202 [label=\"Data.GraphViz.Attributes\\nK\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t205 [label=\"Data.GraphViz.Attributes\\nLHead\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t207 [label=\"Data.GraphViz.Attributes\\nLPos\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t212 [label=\"Data.GraphViz.Attributes\\nLTail\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t213 [label=\"Data.GraphViz.Attributes\\nLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t214 [label=\"Data.GraphViz.Attributes\\nLabelAngle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t215 [label=\"Data.GraphViz.Attributes\\nLabelDistance\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t216 [label=\"Data.GraphViz.Attributes\\nLabelFloat\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t217 [label=\"Data.GraphViz.Attributes\\nLabelFontColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t218 [label=\"Data.GraphViz.Attributes\\nLabelFontName\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t219 [label=\"Data.GraphViz.Attributes\\nLabelFontSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t220 [label=\"Data.GraphViz.Attributes\\nLabelJust\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t221 [label=\"Data.GraphViz.Attributes\\nLabelLoc\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t222 [label=\"Data.GraphViz.Attributes\\nLabelTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t223 [label=\"Data.GraphViz.Attributes\\nLabelTooltip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t224 [label=\"Data.GraphViz.Attributes\\nLabelURL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t226 [label=\"Data.GraphViz.Attributes\\nLandscape\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t227 [label=\"Data.GraphViz.Attributes\\nLayer\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t228 [label=\"Data.GraphViz.Attributes\\nLayerSep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t229 [label=\"Data.GraphViz.Attributes\\nLayers\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t230 [label=\"Data.GraphViz.Attributes\\nLayout\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t233 [label=\"Data.GraphViz.Attributes\\nLen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t234 [label=\"Data.GraphViz.Attributes\\nLevels\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t235 [label=\"Data.GraphViz.Attributes\\nLevelsGap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t239 [label=\"Data.GraphViz.Attributes\\nMCLimit\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t245 [label=\"Data.GraphViz.Attributes\\nMargin\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t246 [label=\"Data.GraphViz.Attributes\\nMaxIter\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t248 [label=\"Data.GraphViz.Attributes\\nMinDist\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t249 [label=\"Data.GraphViz.Attributes\\nMinLen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t251 [label=\"Data.GraphViz.Attributes\\nMode\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t252 [label=\"Data.GraphViz.Attributes\\nModel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t253 [label=\"Data.GraphViz.Attributes\\nMosek\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t259 [label=\"Data.GraphViz.Attributes\\nNoJustify\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t265 [label=\"Data.GraphViz.Attributes\\nNodeSep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t269 [label=\"Data.GraphViz.Attributes\\nNormalize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t272 [label=\"Data.GraphViz.Attributes\\nNslimit\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t273 [label=\"Data.GraphViz.Attributes\\nNslimit1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t276 [label=\"Data.GraphViz.Attributes\\nOrdering\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t277 [label=\"Data.GraphViz.Attributes\\nOrientation\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t278 [label=\"Data.GraphViz.Attributes\\nOutputOrder\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t279 [label=\"Data.GraphViz.Attributes\\nOverlap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t280 [label=\"Data.GraphViz.Attributes\\nOverlapScaling\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t282 [label=\"Data.GraphViz.Attributes\\nPack\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t287 [label=\"Data.GraphViz.Attributes\\nPackMode\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t289 [label=\"Data.GraphViz.Attributes\\nPad\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t290 [label=\"Data.GraphViz.Attributes\\nPage\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t291 [label=\"Data.GraphViz.Attributes\\nPageDir\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t293 [label=\"Data.GraphViz.Attributes\\nPenColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t294 [label=\"Data.GraphViz.Attributes\\nPenWidth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t296 [label=\"Data.GraphViz.Attributes\\nPeripheries\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t297 [label=\"Data.GraphViz.Attributes\\nPin\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t305 [label=\"Data.GraphViz.Attributes\\nPos\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t308 [label=\"Data.GraphViz.Attributes\\nQuadTree\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t309 [label=\"Data.GraphViz.Attributes\\nQuantum\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t312 [label=\"Data.GraphViz.Attributes\\nRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t313 [label=\"Data.GraphViz.Attributes\\nRankDir\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t314 [label=\"Data.GraphViz.Attributes\\nRankSep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t315 [label=\"Data.GraphViz.Attributes\\nRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t319 [label=\"Data.GraphViz.Attributes\\nReMinCross\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t323 [label=\"Data.GraphViz.Attributes\\nRects\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t324 [label=\"Data.GraphViz.Attributes\\nRegular\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t327 [label=\"Data.GraphViz.Attributes\\nRepulsiveForce\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t329 [label=\"Data.GraphViz.Attributes\\nRoot\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t330 [label=\"Data.GraphViz.Attributes\\nRotate\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t334 [label=\"Data.GraphViz.Attributes\\nSameHead\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t336 [label=\"Data.GraphViz.Attributes\\nSameTail\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t337 [label=\"Data.GraphViz.Attributes\\nSamplePoints\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t340 [label=\"Data.GraphViz.Attributes\\nSearchSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t342 [label=\"Data.GraphViz.Attributes\\nSep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t344 [label=\"Data.GraphViz.Attributes\\nShape\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t345 [label=\"Data.GraphViz.Attributes\\nShapeFile\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t347 [label=\"Data.GraphViz.Attributes\\nShowBoxes\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t348 [label=\"Data.GraphViz.Attributes\\nSides\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t350 [label=\"Data.GraphViz.Attributes\\nSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t351 [label=\"Data.GraphViz.Attributes\\nSkew\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t352 [label=\"Data.GraphViz.Attributes\\nSmoothing\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t354 [label=\"Data.GraphViz.Attributes\\nSortV\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t359 [label=\"Data.GraphViz.Attributes\\nSplines\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t361 [label=\"Data.GraphViz.Attributes\\nStart\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t366 [label=\"Data.GraphViz.Attributes\\nStyle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t367 [label=\"Data.GraphViz.Attributes\\nStyleSheet\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t370 [label=\"Data.GraphViz.Attributes\\nTailClip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t371 [label=\"Data.GraphViz.Attributes\\nTailLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t372 [label=\"Data.GraphViz.Attributes\\nTailPort\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t373 [label=\"Data.GraphViz.Attributes\\nTailTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t374 [label=\"Data.GraphViz.Attributes\\nTailTooltip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t375 [label=\"Data.GraphViz.Attributes\\nTailURL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t376 [label=\"Data.GraphViz.Attributes\\nTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t379 [label=\"Data.GraphViz.Attributes\\nTooltip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t385 [label=\"Data.GraphViz.Attributes\\nTrueColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t386 [label=\"Data.GraphViz.Attributes\\nURL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t388 [label=\"Data.GraphViz.Attributes\\nUnknownAttribute\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t394 [label=\"Data.GraphViz.Attributes\\nVertices\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t395 [label=\"Data.GraphViz.Attributes\\nViewPort\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t396 [label=\"Data.GraphViz.Attributes\\nVoroMargin\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t398 [label=\"Data.GraphViz.Attributes\\nWeight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t399 [label=\"Data.GraphViz.Attributes\\nWidth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t401 [label=\"Data.GraphViz.Attributes\\nZ\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t48 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t49 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t57 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t58 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t59 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t60 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t61 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t66 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t67 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t69 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t77 -> 31 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_Atts {\n\t\tgraph [label=\"Data: Atts\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t32 [label=\"Data.GraphViz.AttributeGenerator\\nAS\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t46 [label=\"Data.GraphViz.AttributeGenerator\\natts\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t74 [label=\"Data.GraphViz.AttributeGenerator\\ntpNm\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t46 -> 32 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t74 -> 32 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_BrewerName {\n\t\tgraph [label=\"Data: BrewerName\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t611 [label=\"Data.GraphViz.Attributes.Colors\\nAccent\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t642 [label=\"Data.GraphViz.Attributes.Colors\\nBlues\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t643 [label=\"Data.GraphViz.Attributes.Colors\\nBrbg\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t651 [label=\"Data.GraphViz.Attributes.Colors\\nBugn\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t652 [label=\"Data.GraphViz.Attributes.Colors\\nBupu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t690 [label=\"Data.GraphViz.Attributes.Colors\\nDark2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t752 [label=\"Data.GraphViz.Attributes.Colors\\nGnbu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t871 [label=\"Data.GraphViz.Attributes.Colors\\nGreens\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t872 [label=\"Data.GraphViz.Attributes.Colors\\nGreys\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1018 [label=\"Data.GraphViz.Attributes.Colors\\nOranges\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1024 [label=\"Data.GraphViz.Attributes.Colors\\nOrrd\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1025 [label=\"Data.GraphViz.Attributes.Colors\\nPaired\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1043 [label=\"Data.GraphViz.Attributes.Colors\\nPastel1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1044 [label=\"Data.GraphViz.Attributes.Colors\\nPastel2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1056 [label=\"Data.GraphViz.Attributes.Colors\\nPiyg\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1063 [label=\"Data.GraphViz.Attributes.Colors\\nPrgn\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1064 [label=\"Data.GraphViz.Attributes.Colors\\nPubu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1065 [label=\"Data.GraphViz.Attributes.Colors\\nPubugn\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1066 [label=\"Data.GraphViz.Attributes.Colors\\nPuor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1067 [label=\"Data.GraphViz.Attributes.Colors\\nPurd\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1073 [label=\"Data.GraphViz.Attributes.Colors\\nPurples\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1076 [label=\"Data.GraphViz.Attributes.Colors\\nRdbu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1077 [label=\"Data.GraphViz.Attributes.Colors\\nRdgy\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1078 [label=\"Data.GraphViz.Attributes.Colors\\nRdpu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1079 [label=\"Data.GraphViz.Attributes.Colors\\nRdylbu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1080 [label=\"Data.GraphViz.Attributes.Colors\\nRdylgn\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1086 [label=\"Data.GraphViz.Attributes.Colors\\nReds\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1114 [label=\"Data.GraphViz.Attributes.Colors\\nSet1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1115 [label=\"Data.GraphViz.Attributes.Colors\\nSet2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1116 [label=\"Data.GraphViz.Attributes.Colors\\nSet3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1142 [label=\"Data.GraphViz.Attributes.Colors\\nSpectral\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1195 [label=\"Data.GraphViz.Attributes.Colors\\nYlgn\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1196 [label=\"Data.GraphViz.Attributes.Colors\\nYlgnbu\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1197 [label=\"Data.GraphViz.Attributes.Colors\\nYlorbr\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1198 [label=\"Data.GraphViz.Attributes.Colors\\nYlorrd\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ClusterMode {\n\t\tgraph [label=\"Data: ClusterMode\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t173 [label=\"Data.GraphViz.Attributes\\nGlobal\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t237 [label=\"Data.GraphViz.Attributes\\nLocal\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t255 [label=\"Data.GraphViz.Attributes\\nNoCluster\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ClusterTree {\n\t\tgraph [label=\"Data: ClusterTree\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1668 [label=\"Data.GraphViz.Types.Clustering\\nCT\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1670 [label=\"Data.GraphViz.Types.Clustering\\nNT\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t}\n\tsubgraph cluster_Data_Color {\n\t\tgraph [label=\"Data: Color\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t644 [label=\"Data.GraphViz.Attributes.Colors\\nBrewerColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t873 [label=\"Data.GraphViz.Attributes.Colors\\nHSV\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1074 [label=\"Data.GraphViz.Attributes.Colors\\nRGB\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1075 [label=\"Data.GraphViz.Attributes.Colors\\nRGBA\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1188 [label=\"Data.GraphViz.Attributes.Colors\\nX11Color\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1199 [label=\"Data.GraphViz.Attributes.Colors\\nalpha\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1200 [label=\"Data.GraphViz.Attributes.Colors\\nblue\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1203 [label=\"Data.GraphViz.Attributes.Colors\\ngreen\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1205 [label=\"Data.GraphViz.Attributes.Colors\\nhue\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1215 [label=\"Data.GraphViz.Attributes.Colors\\nred\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1216 [label=\"Data.GraphViz.Attributes.Colors\\nsaturation\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1225 [label=\"Data.GraphViz.Attributes.Colors\\nvalue\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t1199 -> 1075 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1200 -> 1074 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1200 -> 1075 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1203 -> 1074 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1203 -> 1075 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1205 -> 873 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1215 -> 1074 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1215 -> 1075 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1216 -> 873 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1225 -> 873 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_ColorScheme {\n\t\tgraph [label=\"Data: ColorScheme\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t645 [label=\"Data.GraphViz.Attributes.Colors\\nBrewerScheme\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1187 [label=\"Data.GraphViz.Attributes.Colors\\nX11\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_CompassPoint {\n\t\tgraph [label=\"Data: CompassPoint\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1342 [label=\"Data.GraphViz.Attributes.Internal\\nCenterPoint\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1344 [label=\"Data.GraphViz.Attributes.Internal\\nEast\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1346 [label=\"Data.GraphViz.Attributes.Internal\\nNoCP\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1347 [label=\"Data.GraphViz.Attributes.Internal\\nNorth\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1348 [label=\"Data.GraphViz.Attributes.Internal\\nNorthEast\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1349 [label=\"Data.GraphViz.Attributes.Internal\\nNorthWest\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1351 [label=\"Data.GraphViz.Attributes.Internal\\nSouth\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1352 [label=\"Data.GraphViz.Attributes.Internal\\nSouthEast\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1353 [label=\"Data.GraphViz.Attributes.Internal\\nSouthWest\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1354 [label=\"Data.GraphViz.Attributes.Internal\\nWest\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t}\n\tsubgraph cluster_Data_DEConstraints {\n\t\tgraph [label=\"Data: DEConstraints\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t142 [label=\"Data.GraphViz.Attributes\\nEdgeConstraints\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t185 [label=\"Data.GraphViz.Attributes\\nHierConstraints\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t256 [label=\"Data.GraphViz.Attributes\\nNoConstraints\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_DPoint {\n\t\tgraph [label=\"Data: DPoint\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t122 [label=\"Data.GraphViz.Attributes\\nDVal\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t281 [label=\"Data.GraphViz.Attributes\\nPVal\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_DirType {\n\t\tgraph [label=\"Data: DirType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t92 [label=\"Data.GraphViz.Attributes\\nBack\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t97 [label=\"Data.GraphViz.Attributes\\nBoth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t168 [label=\"Data.GraphViz.Attributes\\nForward\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t257 [label=\"Data.GraphViz.Attributes\\nNoDir\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_DotEdge {\n\t\tgraph [label=\"Data: DotEdge\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1680 [label=\"Data.GraphViz.Types.Common\\nDotEdge\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1699 [label=\"Data.GraphViz.Types.Common\\ndirectedEdge\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1700 [label=\"Data.GraphViz.Types.Common\\nedgeAttributes\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1701 [label=\"Data.GraphViz.Types.Common\\nedgeFromNodeID\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1702 [label=\"Data.GraphViz.Types.Common\\nedgeToNodeID\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1699 -> 1680 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1700 -> 1680 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1701 -> 1680 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1702 -> 1680 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_DotError {\n\t\tgraph [label=\"Data: DotError\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1683 [label=\"Data.GraphViz.Types.Common\\nEdgeError\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t1685 [label=\"Data.GraphViz.Types.Common\\nGraphError\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t1688 [label=\"Data.GraphViz.Types.Common\\nNodeError\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t}\n\tsubgraph cluster_Data_DotNode {\n\t\tgraph [label=\"Data: DotNode\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1681 [label=\"Data.GraphViz.Types.Common\\nDotNode\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1713 [label=\"Data.GraphViz.Types.Common\\nnodeAttributes\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1714 [label=\"Data.GraphViz.Types.Common\\nnodeID\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1713 -> 1681 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1714 -> 1681 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_EdgeID {\n\t\tgraph [label=\"Data: EdgeID\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1 [label=\"Data.GraphViz\\nEID\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t13 [label=\"Data.GraphViz\\neID\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t14 [label=\"Data.GraphViz\\neLbl\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t13 -> 1 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t14 -> 1 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_EdgeType {\n\t\tgraph [label=\"Data: EdgeType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t114 [label=\"Data.GraphViz.Attributes\\nCompoundEdge\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t236 [label=\"Data.GraphViz.Attributes\\nLineEdges\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t258 [label=\"Data.GraphViz.Attributes\\nNoEdges\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t302 [label=\"Data.GraphViz.Attributes\\nPolyLine\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t357 [label=\"Data.GraphViz.Attributes\\nSplineEdges\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_FocusType {\n\t\tgraph [label=\"Data: FocusType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t263 [label=\"Data.GraphViz.Attributes\\nNodeFocus\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t400 [label=\"Data.GraphViz.Attributes\\nXY\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_GDotGraph {\n\t\tgraph [label=\"Data: GDotGraph\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1776 [label=\"Data.GraphViz.Types.Generalised\\nGDotGraph\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1783 [label=\"Data.GraphViz.Types.Generalised\\ngDirectedGraph\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1784 [label=\"Data.GraphViz.Types.Generalised\\ngGraphID\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1785 [label=\"Data.GraphViz.Types.Generalised\\ngGraphStatements\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1787 [label=\"Data.GraphViz.Types.Generalised\\ngStrictGraph\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1783 -> 1776 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1784 -> 1776 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1785 -> 1776 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1787 -> 1776 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_GDotStatement {\n\t\tgraph [label=\"Data: GDotStatement\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1773 [label=\"Data.GraphViz.Types.Generalised\\nDE\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1774 [label=\"Data.GraphViz.Types.Generalised\\nDN\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1775 [label=\"Data.GraphViz.Types.Generalised\\nGA\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1778 [label=\"Data.GraphViz.Types.Generalised\\nSG\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_GDotSubGraph {\n\t\tgraph [label=\"Data: GDotSubGraph\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1777 [label=\"Data.GraphViz.Types.Generalised\\nGDotSG\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1786 [label=\"Data.GraphViz.Types.Generalised\\ngIsCluster\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1788 [label=\"Data.GraphViz.Types.Generalised\\ngSubGraphID\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1789 [label=\"Data.GraphViz.Types.Generalised\\ngSubGraphStmts\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1786 -> 1777 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1788 -> 1777 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1789 -> 1777 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_GlobalAttributes {\n\t\tgraph [label=\"Data: GlobalAttributes\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1682 [label=\"Data.GraphViz.Types.Common\\nEdgeAttrs\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1684 [label=\"Data.GraphViz.Types.Common\\nGraphAttrs\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1687 [label=\"Data.GraphViz.Types.Common\\nNodeAttrs\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1691 [label=\"Data.GraphViz.Types.Common\\nattrs\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1691 -> 1682 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1691 -> 1684 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1691 -> 1687 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_GraphID {\n\t\tgraph [label=\"Data: GraphID\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1679 [label=\"Data.GraphViz.Types.Common\\nDbl\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1686 [label=\"Data.GraphViz.Types.Common\\nInt\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1689 [label=\"Data.GraphViz.Types.Common\\nStr\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t}\n\tsubgraph cluster_Data_GraphvizParams {\n\t\tgraph [label=\"Data: GraphvizParams\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t2 [label=\"Data.GraphViz\\nParams\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t7 [label=\"Data.GraphViz\\nclusterBy\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t8 [label=\"Data.GraphViz\\nclusterID\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t15 [label=\"Data.GraphViz\\nfmtCluster\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t16 [label=\"Data.GraphViz\\nfmtEdge\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t17 [label=\"Data.GraphViz\\nfmtNode\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t19 [label=\"Data.GraphViz\\nglobalAttributes\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t22 [label=\"Data.GraphViz\\nisDirected\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t7 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t8 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t15 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t16 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t17 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t19 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t22 -> 2 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_HtmlAlign {\n\t\tgraph [label=\"Data: HtmlAlign\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1229 [label=\"Data.GraphViz.Attributes.HTML\\nHCenter\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1230 [label=\"Data.GraphViz.Attributes.HTML\\nHLeft\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1232 [label=\"Data.GraphViz.Attributes.HTML\\nHRight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1234 [label=\"Data.GraphViz.Attributes.HTML\\nHText\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlAttribute {\n\t\tgraph [label=\"Data: HtmlAttribute\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1236 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlAlign\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1237 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlBAlign\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1238 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlBGColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1239 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlBorder\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1240 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlCellBorder\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1241 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlCellPadding\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1242 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlCellSpacing\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1243 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlColSpan\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1244 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlColor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1248 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlFace\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1249 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlFixedSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1251 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlHRef\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1252 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlHeight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1258 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlPointSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1259 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlPort\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1261 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlRowSpan\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1262 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlScale\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1264 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlSrc\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1267 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1269 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlTitle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1270 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlVAlign\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1271 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlWidth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlCell {\n\t\tgraph [label=\"Data: HtmlCell\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1254 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlImgCell\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1255 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlLabelCell\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlImg {\n\t\tgraph [label=\"Data: HtmlImg\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1253 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlImg\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlLabel {\n\t\tgraph [label=\"Data: HtmlLabel\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1266 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlTable\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1268 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlText\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlRow {\n\t\tgraph [label=\"Data: HtmlRow\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1260 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlRow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlScale {\n\t\tgraph [label=\"Data: HtmlScale\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1245 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlExpandBoth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1246 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlExpandHeight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1247 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlExpandWidth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1256 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlNaturalSize\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1263 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlScaleUniformly\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlTable {\n\t\tgraph [label=\"Data: HtmlTable\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1233 [label=\"Data.GraphViz.Attributes.HTML\\nHTable\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1322 [label=\"Data.GraphViz.Attributes.HTML\\ntableAttrs\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1323 [label=\"Data.GraphViz.Attributes.HTML\\ntableFontAttrs\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1324 [label=\"Data.GraphViz.Attributes.HTML\\ntableRows\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t1322 -> 1233 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1323 -> 1233 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1324 -> 1233 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_HtmlTextItem {\n\t\tgraph [label=\"Data: HtmlTextItem\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1250 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlFont\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1257 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlNewline\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1265 [label=\"Data.GraphViz.Attributes.HTML\\nHtmlStr\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_HtmlVAlign {\n\t\tgraph [label=\"Data: HtmlVAlign\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1228 [label=\"Data.GraphViz.Attributes.HTML\\nHBottom\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1231 [label=\"Data.GraphViz.Attributes.HTML\\nHMiddle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1235 [label=\"Data.GraphViz.Attributes.HTML\\nHTop\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Justification {\n\t\tgraph [label=\"Data: Justification\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t199 [label=\"Data.GraphViz.Attributes\\nJCenter\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t200 [label=\"Data.GraphViz.Attributes\\nJLeft\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t201 [label=\"Data.GraphViz.Attributes\\nJRight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Label {\n\t\tgraph [label=\"Data: Label\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t187 [label=\"Data.GraphViz.Attributes\\nHtmlLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t321 [label=\"Data.GraphViz.Attributes\\nRecordLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t365 [label=\"Data.GraphViz.Attributes\\nStrLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_LayerID {\n\t\tgraph [label=\"Data: LayerID\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t83 [label=\"Data.GraphViz.Attributes\\nAllLayers\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t209 [label=\"Data.GraphViz.Attributes\\nLRInt\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t210 [label=\"Data.GraphViz.Attributes\\nLRName\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_LayerList {\n\t\tgraph [label=\"Data: LayerList\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t206 [label=\"Data.GraphViz.Attributes\\nLL\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_LayerRange {\n\t\tgraph [label=\"Data: LayerRange\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t208 [label=\"Data.GraphViz.Attributes\\nLRID\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t211 [label=\"Data.GraphViz.Attributes\\nLRS\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ModeType {\n\t\tgraph [label=\"Data: ModeType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t184 [label=\"Data.GraphViz.Attributes\\nHier\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t196 [label=\"Data.GraphViz.Attributes\\nIpSep\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t203 [label=\"Data.GraphViz.Attributes\\nKK\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t244 [label=\"Data.GraphViz.Attributes\\nMajor\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Model {\n\t\tgraph [label=\"Data: Model\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t107 [label=\"Data.GraphViz.Attributes\\nCircuit\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t346 [label=\"Data.GraphViz.Attributes\\nShortPath\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t368 [label=\"Data.GraphViz.Attributes\\nSubSet\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_NodeCluster {\n\t\tgraph [label=\"Data: NodeCluster\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1667 [label=\"Data.GraphViz.Types.Clustering\\nC\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1669 [label=\"Data.GraphViz.Types.Clustering\\nN\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t}\n\tsubgraph cluster_Data_NodeInfo {\n\t\tgraph [label=\"Data: NodeInfo\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1828 [label=\"Data.GraphViz.Types.State\\nNI\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1841 [label=\"Data.GraphViz.Types.State\\natts\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1844 [label=\"Data.GraphViz.Types.State\\ngAtts\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1853 [label=\"Data.GraphViz.Types.State\\nlocation\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1841 -> 1828 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1844 -> 1828 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1853 -> 1828 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_OutputMode {\n\t\tgraph [label=\"Data: OutputMode\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t103 [label=\"Data.GraphViz.Attributes\\nBreadthFirst\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t146 [label=\"Data.GraphViz.Attributes\\nEdgesFirst\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t266 [label=\"Data.GraphViz.Attributes\\nNodesFirst\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Overlap {\n\t\tgraph [label=\"Data: Overlap\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t115 [label=\"Data.GraphViz.Attributes\\nCompressOverlap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t197 [label=\"Data.GraphViz.Attributes\\nIpsepOverlap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t204 [label=\"Data.GraphViz.Attributes\\nKeepOverlaps\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t307 [label=\"Data.GraphViz.Attributes\\nPrismOverlap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t326 [label=\"Data.GraphViz.Attributes\\nRemoveOverlaps\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t338 [label=\"Data.GraphViz.Attributes\\nScaleOverlaps\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t339 [label=\"Data.GraphViz.Attributes\\nScaleXYOverlaps\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t397 [label=\"Data.GraphViz.Attributes\\nVpscOverlap\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Pack {\n\t\tgraph [label=\"Data: Pack\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t135 [label=\"Data.GraphViz.Attributes\\nDoPack\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t136 [label=\"Data.GraphViz.Attributes\\nDontPack\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t286 [label=\"Data.GraphViz.Attributes\\nPackMargin\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_PackMode {\n\t\tgraph [label=\"Data: PackMode\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t283 [label=\"Data.GraphViz.Attributes\\nPackArray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t284 [label=\"Data.GraphViz.Attributes\\nPackClust\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t285 [label=\"Data.GraphViz.Attributes\\nPackGraph\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t288 [label=\"Data.GraphViz.Attributes\\nPackNode\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_PageDir {\n\t\tgraph [label=\"Data: PageDir\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t95 [label=\"Data.GraphViz.Attributes\\nBl\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t102 [label=\"Data.GraphViz.Attributes\\nBr\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t231 [label=\"Data.GraphViz.Attributes\\nLb\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t238 [label=\"Data.GraphViz.Attributes\\nLt\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t318 [label=\"Data.GraphViz.Attributes\\nRb\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t332 [label=\"Data.GraphViz.Attributes\\nRt\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t378 [label=\"Data.GraphViz.Attributes\\nTl\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t380 [label=\"Data.GraphViz.Attributes\\nTr\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Point {\n\t\tgraph [label=\"Data: Point\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t299 [label=\"Data.GraphViz.Attributes\\nPoint\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t415 [label=\"Data.GraphViz.Attributes\\nforcePos\", style=\"filled,solid\", shape=component, fillcolor=gold];\n\t\t607 [label=\"Data.GraphViz.Attributes\\nxCoord\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t608 [label=\"Data.GraphViz.Attributes\\nyCoord\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t609 [label=\"Data.GraphViz.Attributes\\nzCoord\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t415 -> 299 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t607 -> 299 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t608 -> 299 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t609 -> 299 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_PortName {\n\t\tgraph [label=\"Data: PortName\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1350 [label=\"Data.GraphViz.Attributes.Internal\\nPN\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1363 [label=\"Data.GraphViz.Attributes.Internal\\nportName\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1363 -> 1350 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_PortPos {\n\t\tgraph [label=\"Data: PortPos\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1343 [label=\"Data.GraphViz.Attributes.Internal\\nCompassPoint\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1345 [label=\"Data.GraphViz.Attributes.Internal\\nLabelledPort\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t}\n\tsubgraph cluster_Data_Pos {\n\t\tgraph [label=\"Data: Pos\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t300 [label=\"Data.GraphViz.Attributes\\nPointPos\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t358 [label=\"Data.GraphViz.Attributes\\nSplinePos\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_QuadType {\n\t\tgraph [label=\"Data: QuadType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t151 [label=\"Data.GraphViz.Attributes\\nFastQT\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t260 [label=\"Data.GraphViz.Attributes\\nNoQT\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t268 [label=\"Data.GraphViz.Attributes\\nNormalQT\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_RankDir {\n\t\tgraph [label=\"Data: RankDir\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t169 [label=\"Data.GraphViz.Attributes\\nFromBottom\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t170 [label=\"Data.GraphViz.Attributes\\nFromLeft\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t171 [label=\"Data.GraphViz.Attributes\\nFromRight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t172 [label=\"Data.GraphViz.Attributes\\nFromTop\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_RankType {\n\t\tgraph [label=\"Data: RankType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t247 [label=\"Data.GraphViz.Attributes\\nMaxRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t250 [label=\"Data.GraphViz.Attributes\\nMinRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t335 [label=\"Data.GraphViz.Attributes\\nSameRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t349 [label=\"Data.GraphViz.Attributes\\nSinkRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t355 [label=\"Data.GraphViz.Attributes\\nSourceRank\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Ratios {\n\t\tgraph [label=\"Data: Ratios\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t89 [label=\"Data.GraphViz.Attributes\\nAspectRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t90 [label=\"Data.GraphViz.Attributes\\nAutoRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t116 [label=\"Data.GraphViz.Attributes\\nCompressRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t150 [label=\"Data.GraphViz.Attributes\\nExpandRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t156 [label=\"Data.GraphViz.Attributes\\nFillRatio\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_RecordField {\n\t\tgraph [label=\"Data: RecordField\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t152 [label=\"Data.GraphViz.Attributes\\nFieldLabel\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t161 [label=\"Data.GraphViz.Attributes\\nFlipFields\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t225 [label=\"Data.GraphViz.Attributes\\nLabelledTarget\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t304 [label=\"Data.GraphViz.Attributes\\nPortName\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Rect {\n\t\tgraph [label=\"Data: Rect\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t322 [label=\"Data.GraphViz.Attributes\\nRect\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Root {\n\t\tgraph [label=\"Data: Root\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t198 [label=\"Data.GraphViz.Attributes\\nIsCentral\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t264 [label=\"Data.GraphViz.Attributes\\nNodeName\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t270 [label=\"Data.GraphViz.Attributes\\nNotCentral\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_STStyle {\n\t\tgraph [label=\"Data: STStyle\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t311 [label=\"Data.GraphViz.Attributes\\nRandomStyle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t325 [label=\"Data.GraphViz.Attributes\\nRegularStyle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t341 [label=\"Data.GraphViz.Attributes\\nSelfStyle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_SameAttr {\n\t\tgraph [label=\"Data: SameAttr\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1829 [label=\"Data.GraphViz.Types.State\\nSA\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1845 [label=\"Data.GraphViz.Types.State\\ngetAttr\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1845 -> 1829 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_ScaleType {\n\t\tgraph [label=\"Data: ScaleType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t153 [label=\"Data.GraphViz.Attributes\\nFillBoth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t155 [label=\"Data.GraphViz.Attributes\\nFillHeight\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t157 [label=\"Data.GraphViz.Attributes\\nFillWidth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t261 [label=\"Data.GraphViz.Attributes\\nNoScale\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t387 [label=\"Data.GraphViz.Attributes\\nUniformScale\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Shape {\n\t\tgraph [label=\"Data: Shape\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t100 [label=\"Data.GraphViz.Attributes\\nBox3D\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t101 [label=\"Data.GraphViz.Attributes\\nBoxShape\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t106 [label=\"Data.GraphViz.Attributes\\nCircle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t112 [label=\"Data.GraphViz.Attributes\\nComponent\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t129 [label=\"Data.GraphViz.Attributes\\nDiamondShape\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t139 [label=\"Data.GraphViz.Attributes\\nDoubleCircle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t140 [label=\"Data.GraphViz.Attributes\\nDoubleOctagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t147 [label=\"Data.GraphViz.Attributes\\nEgg\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t148 [label=\"Data.GraphViz.Attributes\\nEllipse\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t162 [label=\"Data.GraphViz.Attributes\\nFolder\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t183 [label=\"Data.GraphViz.Attributes\\nHexagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t186 [label=\"Data.GraphViz.Attributes\\nHouse\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t192 [label=\"Data.GraphViz.Attributes\\nInvHouse\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t193 [label=\"Data.GraphViz.Attributes\\nInvTrapezium\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t194 [label=\"Data.GraphViz.Attributes\\nInvTriangle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t240 [label=\"Data.GraphViz.Attributes\\nMCircle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t241 [label=\"Data.GraphViz.Attributes\\nMDiamond\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t242 [label=\"Data.GraphViz.Attributes\\nMRecord\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t243 [label=\"Data.GraphViz.Attributes\\nMSquare\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t271 [label=\"Data.GraphViz.Attributes\\nNote\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t274 [label=\"Data.GraphViz.Attributes\\nOctagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t292 [label=\"Data.GraphViz.Attributes\\nParallelogram\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t295 [label=\"Data.GraphViz.Attributes\\nPentagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t298 [label=\"Data.GraphViz.Attributes\\nPlainText\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t301 [label=\"Data.GraphViz.Attributes\\nPointShape\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t303 [label=\"Data.GraphViz.Attributes\\nPolygon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t320 [label=\"Data.GraphViz.Attributes\\nRecord\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t343 [label=\"Data.GraphViz.Attributes\\nSeptagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t369 [label=\"Data.GraphViz.Attributes\\nTab\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t381 [label=\"Data.GraphViz.Attributes\\nTrapezium\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t382 [label=\"Data.GraphViz.Attributes\\nTriangle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t384 [label=\"Data.GraphViz.Attributes\\nTripleOctagon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_SmoothType {\n\t\tgraph [label=\"Data: SmoothType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t91 [label=\"Data.GraphViz.Attributes\\nAvgDist\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t174 [label=\"Data.GraphViz.Attributes\\nGraphDist\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t262 [label=\"Data.GraphViz.Attributes\\nNoSmooth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t306 [label=\"Data.GraphViz.Attributes\\nPowerDist\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t310 [label=\"Data.GraphViz.Attributes\\nRNG\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t360 [label=\"Data.GraphViz.Attributes\\nSpring\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t383 [label=\"Data.GraphViz.Attributes\\nTriangleSmooth\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Spline {\n\t\tgraph [label=\"Data: Spline\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t356 [label=\"Data.GraphViz.Attributes\\nSpline\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_StartType {\n\t\tgraph [label=\"Data: StartType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t362 [label=\"Data.GraphViz.Attributes\\nStartSeed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t363 [label=\"Data.GraphViz.Attributes\\nStartStyle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t364 [label=\"Data.GraphViz.Attributes\\nStartStyleSeed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_StateValue {\n\t\tgraph [label=\"Data: StateValue\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1830 [label=\"Data.GraphViz.Types.State\\nSV\", style=\"filled,solid\", shape=box3d, fillcolor=cyan];\n\t\t1851 [label=\"Data.GraphViz.Types.State\\nglobalAttrs\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1852 [label=\"Data.GraphViz.Types.State\\nglobalPath\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1869 [label=\"Data.GraphViz.Types.State\\nuseGlobals\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1870 [label=\"Data.GraphViz.Types.State\\nvalue\", style=\"filled,solid\", shape=component, fillcolor=bisque];\n\t\t1851 -> 1830 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1852 -> 1830 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1869 -> 1830 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1870 -> 1830 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_StyleItem {\n\t\tgraph [label=\"Data: StyleItem\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t333 [label=\"Data.GraphViz.Attributes\\nSItem\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_StyleName {\n\t\tgraph [label=\"Data: StyleName\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t96 [label=\"Data.GraphViz.Attributes\\nBold\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t120 [label=\"Data.GraphViz.Attributes\\nDD\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t124 [label=\"Data.GraphViz.Attributes\\nDashed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t127 [label=\"Data.GraphViz.Attributes\\nDiagonals\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t138 [label=\"Data.GraphViz.Attributes\\nDotted\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t158 [label=\"Data.GraphViz.Attributes\\nFilled\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t195 [label=\"Data.GraphViz.Attributes\\nInvisible\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t331 [label=\"Data.GraphViz.Attributes\\nRounded\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t353 [label=\"Data.GraphViz.Attributes\\nSolid\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_Test {\n\t\tgraph [label=\"Data: Test\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t1490 [label=\"Data.GraphViz.Testing\\nTest\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t1493 [label=\"Data.GraphViz.Testing\\ndesc\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t1495 [label=\"Data.GraphViz.Testing\\nlookupName\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t1496 [label=\"Data.GraphViz.Testing\\nname\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t1501 [label=\"Data.GraphViz.Testing\\ntest\", style=\"filled,solid\", shape=component, fillcolor=crimson];\n\t\t1493 -> 1490 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1495 -> 1490 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1496 -> 1490 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t1501 -> 1490 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_VType {\n\t\tgraph [label=\"Data: VType\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t33 [label=\"Data.GraphViz.AttributeGenerator\\nBl\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t34 [label=\"Data.GraphViz.AttributeGenerator\\nCust\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t35 [label=\"Data.GraphViz.AttributeGenerator\\nDbl\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t36 [label=\"Data.GraphViz.AttributeGenerator\\nEStrng\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t37 [label=\"Data.GraphViz.AttributeGenerator\\nInteg\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t\t38 [label=\"Data.GraphViz.AttributeGenerator\\nStrng\", style=\"filled,solid\", shape=box3d, fillcolor=crimson];\n\t}\n\tsubgraph cluster_Data_VerticalPlacement {\n\t\tgraph [label=\"Data: VerticalPlacement\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t389 [label=\"Data.GraphViz.Attributes\\nVBottom\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t390 [label=\"Data.GraphViz.Attributes\\nVCenter\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t392 [label=\"Data.GraphViz.Attributes\\nVTop\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\tsubgraph cluster_Data_ViewPort {\n\t\tgraph [label=\"Data: ViewPort\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t391 [label=\"Data.GraphViz.Attributes\\nVP\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t414 [label=\"Data.GraphViz.Attributes\\nfocus\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t416 [label=\"Data.GraphViz.Attributes\\nhVal\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t606 [label=\"Data.GraphViz.Attributes\\nwVal\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t610 [label=\"Data.GraphViz.Attributes\\nzVal\", style=\"filled,solid\", shape=component, fillcolor=goldenrod];\n\t\t414 -> 391 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t416 -> 391 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t606 -> 391 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t\t610 -> 391 [penwidth=1, color=magenta, arrowtail=odot, arrowhead=vee];\n\t}\n\tsubgraph cluster_Data_X11Color {\n\t\tgraph [label=\"Data: X11Color\",\n\t\t\tstyle=\"filled,rounded\",\n\t\t\tfillcolor=papayawhip];\n\t\t612 [label=\"Data.GraphViz.Attributes.Colors\\nAliceBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t613 [label=\"Data.GraphViz.Attributes.Colors\\nAntiqueWhite\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t614 [label=\"Data.GraphViz.Attributes.Colors\\nAntiqueWhite1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t615 [label=\"Data.GraphViz.Attributes.Colors\\nAntiqueWhite2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t616 [label=\"Data.GraphViz.Attributes.Colors\\nAntiqueWhite3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t617 [label=\"Data.GraphViz.Attributes.Colors\\nAntiqueWhite4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t618 [label=\"Data.GraphViz.Attributes.Colors\\nAquamarine\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t619 [label=\"Data.GraphViz.Attributes.Colors\\nAquamarine1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t620 [label=\"Data.GraphViz.Attributes.Colors\\nAquamarine2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t621 [label=\"Data.GraphViz.Attributes.Colors\\nAquamarine3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t622 [label=\"Data.GraphViz.Attributes.Colors\\nAquamarine4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t623 [label=\"Data.GraphViz.Attributes.Colors\\nAzure\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t624 [label=\"Data.GraphViz.Attributes.Colors\\nAzure1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t625 [label=\"Data.GraphViz.Attributes.Colors\\nAzure2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t626 [label=\"Data.GraphViz.Attributes.Colors\\nAzure3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t627 [label=\"Data.GraphViz.Attributes.Colors\\nAzure4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t628 [label=\"Data.GraphViz.Attributes.Colors\\nBeige\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t629 [label=\"Data.GraphViz.Attributes.Colors\\nBisque\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t630 [label=\"Data.GraphViz.Attributes.Colors\\nBisque1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t631 [label=\"Data.GraphViz.Attributes.Colors\\nBisque2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t632 [label=\"Data.GraphViz.Attributes.Colors\\nBisque3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t633 [label=\"Data.GraphViz.Attributes.Colors\\nBisque4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t634 [label=\"Data.GraphViz.Attributes.Colors\\nBlack\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t635 [label=\"Data.GraphViz.Attributes.Colors\\nBlanchedAlmond\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t636 [label=\"Data.GraphViz.Attributes.Colors\\nBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t637 [label=\"Data.GraphViz.Attributes.Colors\\nBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t638 [label=\"Data.GraphViz.Attributes.Colors\\nBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t639 [label=\"Data.GraphViz.Attributes.Colors\\nBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t640 [label=\"Data.GraphViz.Attributes.Colors\\nBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t641 [label=\"Data.GraphViz.Attributes.Colors\\nBlueViolet\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t646 [label=\"Data.GraphViz.Attributes.Colors\\nBrown\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t647 [label=\"Data.GraphViz.Attributes.Colors\\nBrown1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t648 [label=\"Data.GraphViz.Attributes.Colors\\nBrown2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t649 [label=\"Data.GraphViz.Attributes.Colors\\nBrown3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t650 [label=\"Data.GraphViz.Attributes.Colors\\nBrown4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t653 [label=\"Data.GraphViz.Attributes.Colors\\nBurlywood\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t654 [label=\"Data.GraphViz.Attributes.Colors\\nBurlywood1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t655 [label=\"Data.GraphViz.Attributes.Colors\\nBurlywood2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t656 [label=\"Data.GraphViz.Attributes.Colors\\nBurlywood3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t657 [label=\"Data.GraphViz.Attributes.Colors\\nBurlywood4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t658 [label=\"Data.GraphViz.Attributes.Colors\\nCadetBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t659 [label=\"Data.GraphViz.Attributes.Colors\\nCadetBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t660 [label=\"Data.GraphViz.Attributes.Colors\\nCadetBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t661 [label=\"Data.GraphViz.Attributes.Colors\\nCadetBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t662 [label=\"Data.GraphViz.Attributes.Colors\\nCadetBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t663 [label=\"Data.GraphViz.Attributes.Colors\\nChartreuse\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t664 [label=\"Data.GraphViz.Attributes.Colors\\nChartreuse1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t665 [label=\"Data.GraphViz.Attributes.Colors\\nChartreuse2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t666 [label=\"Data.GraphViz.Attributes.Colors\\nChartreuse3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t667 [label=\"Data.GraphViz.Attributes.Colors\\nChartreuse4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t668 [label=\"Data.GraphViz.Attributes.Colors\\nChocolate\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t669 [label=\"Data.GraphViz.Attributes.Colors\\nChocolate1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t670 [label=\"Data.GraphViz.Attributes.Colors\\nChocolate2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t671 [label=\"Data.GraphViz.Attributes.Colors\\nChocolate3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t672 [label=\"Data.GraphViz.Attributes.Colors\\nChocolate4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t673 [label=\"Data.GraphViz.Attributes.Colors\\nCoral\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t674 [label=\"Data.GraphViz.Attributes.Colors\\nCoral1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t675 [label=\"Data.GraphViz.Attributes.Colors\\nCoral2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t676 [label=\"Data.GraphViz.Attributes.Colors\\nCoral3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t677 [label=\"Data.GraphViz.Attributes.Colors\\nCoral4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t678 [label=\"Data.GraphViz.Attributes.Colors\\nCornFlowerBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t679 [label=\"Data.GraphViz.Attributes.Colors\\nCornSilk\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t680 [label=\"Data.GraphViz.Attributes.Colors\\nCornSilk1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t681 [label=\"Data.GraphViz.Attributes.Colors\\nCornSilk2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t682 [label=\"Data.GraphViz.Attributes.Colors\\nCornSilk3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t683 [label=\"Data.GraphViz.Attributes.Colors\\nCornSilk4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t684 [label=\"Data.GraphViz.Attributes.Colors\\nCrimson\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t685 [label=\"Data.GraphViz.Attributes.Colors\\nCyan\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t686 [label=\"Data.GraphViz.Attributes.Colors\\nCyan1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t687 [label=\"Data.GraphViz.Attributes.Colors\\nCyan2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t688 [label=\"Data.GraphViz.Attributes.Colors\\nCyan3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t689 [label=\"Data.GraphViz.Attributes.Colors\\nCyan4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t691 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGoldenrod\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t692 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGoldenrod1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t693 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGoldenrod2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t694 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGoldenrod3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t695 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGoldenrod4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t696 [label=\"Data.GraphViz.Attributes.Colors\\nDarkGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t697 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOliveGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t698 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOliveGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t699 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOliveGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t700 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOliveGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t701 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOliveGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t702 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrange\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t703 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrange1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t704 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrange2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t705 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrange3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t706 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrange4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t707 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrchid\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t708 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrchid1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t709 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrchid2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t710 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrchid3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t711 [label=\"Data.GraphViz.Attributes.Colors\\nDarkOrchid4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t712 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSalmon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t713 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSeaGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t714 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSeaGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t715 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSeaGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t716 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSeaGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t717 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSeaGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t718 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t719 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t720 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateGray1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t721 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateGray2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t722 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateGray3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t723 [label=\"Data.GraphViz.Attributes.Colors\\nDarkSlateGray4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t724 [label=\"Data.GraphViz.Attributes.Colors\\nDarkTurquoise\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t725 [label=\"Data.GraphViz.Attributes.Colors\\nDarkViolet\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t726 [label=\"Data.GraphViz.Attributes.Colors\\nDarkkhaki\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t727 [label=\"Data.GraphViz.Attributes.Colors\\nDeepPink\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t728 [label=\"Data.GraphViz.Attributes.Colors\\nDeepPink1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t729 [label=\"Data.GraphViz.Attributes.Colors\\nDeepPink2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t730 [label=\"Data.GraphViz.Attributes.Colors\\nDeepPink3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t731 [label=\"Data.GraphViz.Attributes.Colors\\nDeepPink4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t732 [label=\"Data.GraphViz.Attributes.Colors\\nDeepSkyBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t733 [label=\"Data.GraphViz.Attributes.Colors\\nDeepSkyBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t734 [label=\"Data.GraphViz.Attributes.Colors\\nDeepSkyBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t735 [label=\"Data.GraphViz.Attributes.Colors\\nDeepSkyBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t736 [label=\"Data.GraphViz.Attributes.Colors\\nDeepSkyBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t737 [label=\"Data.GraphViz.Attributes.Colors\\nDimGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t738 [label=\"Data.GraphViz.Attributes.Colors\\nDodgerBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t739 [label=\"Data.GraphViz.Attributes.Colors\\nDodgerBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t740 [label=\"Data.GraphViz.Attributes.Colors\\nDodgerBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t741 [label=\"Data.GraphViz.Attributes.Colors\\nDodgerBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t742 [label=\"Data.GraphViz.Attributes.Colors\\nDodgerBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t743 [label=\"Data.GraphViz.Attributes.Colors\\nFirebrick\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t744 [label=\"Data.GraphViz.Attributes.Colors\\nFirebrick1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t745 [label=\"Data.GraphViz.Attributes.Colors\\nFirebrick2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t746 [label=\"Data.GraphViz.Attributes.Colors\\nFirebrick3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t747 [label=\"Data.GraphViz.Attributes.Colors\\nFirebrick4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t748 [label=\"Data.GraphViz.Attributes.Colors\\nFloralWhite\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t749 [label=\"Data.GraphViz.Attributes.Colors\\nForestGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t750 [label=\"Data.GraphViz.Attributes.Colors\\nGainsboro\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t751 [label=\"Data.GraphViz.Attributes.Colors\\nGhostWhite\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t753 [label=\"Data.GraphViz.Attributes.Colors\\nGold\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t754 [label=\"Data.GraphViz.Attributes.Colors\\nGold1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t755 [label=\"Data.GraphViz.Attributes.Colors\\nGold2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t756 [label=\"Data.GraphViz.Attributes.Colors\\nGold3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t757 [label=\"Data.GraphViz.Attributes.Colors\\nGold4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t758 [label=\"Data.GraphViz.Attributes.Colors\\nGoldenrod\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t759 [label=\"Data.GraphViz.Attributes.Colors\\nGoldenrod1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t760 [label=\"Data.GraphViz.Attributes.Colors\\nGoldenrod2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t761 [label=\"Data.GraphViz.Attributes.Colors\\nGoldenrod3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t762 [label=\"Data.GraphViz.Attributes.Colors\\nGoldenrod4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t763 [label=\"Data.GraphViz.Attributes.Colors\\nGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t764 [label=\"Data.GraphViz.Attributes.Colors\\nGray0\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t765 [label=\"Data.GraphViz.Attributes.Colors\\nGray1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t766 [label=\"Data.GraphViz.Attributes.Colors\\nGray10\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t767 [label=\"Data.GraphViz.Attributes.Colors\\nGray100\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t768 [label=\"Data.GraphViz.Attributes.Colors\\nGray11\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t769 [label=\"Data.GraphViz.Attributes.Colors\\nGray12\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t770 [label=\"Data.GraphViz.Attributes.Colors\\nGray13\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t771 [label=\"Data.GraphViz.Attributes.Colors\\nGray14\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t772 [label=\"Data.GraphViz.Attributes.Colors\\nGray15\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t773 [label=\"Data.GraphViz.Attributes.Colors\\nGray16\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t774 [label=\"Data.GraphViz.Attributes.Colors\\nGray17\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t775 [label=\"Data.GraphViz.Attributes.Colors\\nGray18\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t776 [label=\"Data.GraphViz.Attributes.Colors\\nGray19\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t777 [label=\"Data.GraphViz.Attributes.Colors\\nGray2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t778 [label=\"Data.GraphViz.Attributes.Colors\\nGray20\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t779 [label=\"Data.GraphViz.Attributes.Colors\\nGray21\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t780 [label=\"Data.GraphViz.Attributes.Colors\\nGray22\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t781 [label=\"Data.GraphViz.Attributes.Colors\\nGray23\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t782 [label=\"Data.GraphViz.Attributes.Colors\\nGray24\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t783 [label=\"Data.GraphViz.Attributes.Colors\\nGray25\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t784 [label=\"Data.GraphViz.Attributes.Colors\\nGray26\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t785 [label=\"Data.GraphViz.Attributes.Colors\\nGray27\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t786 [label=\"Data.GraphViz.Attributes.Colors\\nGray28\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t787 [label=\"Data.GraphViz.Attributes.Colors\\nGray29\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t788 [label=\"Data.GraphViz.Attributes.Colors\\nGray3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t789 [label=\"Data.GraphViz.Attributes.Colors\\nGray30\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t790 [label=\"Data.GraphViz.Attributes.Colors\\nGray31\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t791 [label=\"Data.GraphViz.Attributes.Colors\\nGray32\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t792 [label=\"Data.GraphViz.Attributes.Colors\\nGray33\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t793 [label=\"Data.GraphViz.Attributes.Colors\\nGray34\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t794 [label=\"Data.GraphViz.Attributes.Colors\\nGray35\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t795 [label=\"Data.GraphViz.Attributes.Colors\\nGray36\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t796 [label=\"Data.GraphViz.Attributes.Colors\\nGray37\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t797 [label=\"Data.GraphViz.Attributes.Colors\\nGray38\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t798 [label=\"Data.GraphViz.Attributes.Colors\\nGray39\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t799 [label=\"Data.GraphViz.Attributes.Colors\\nGray4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t800 [label=\"Data.GraphViz.Attributes.Colors\\nGray40\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t801 [label=\"Data.GraphViz.Attributes.Colors\\nGray41\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t802 [label=\"Data.GraphViz.Attributes.Colors\\nGray42\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t803 [label=\"Data.GraphViz.Attributes.Colors\\nGray43\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t804 [label=\"Data.GraphViz.Attributes.Colors\\nGray44\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t805 [label=\"Data.GraphViz.Attributes.Colors\\nGray45\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t806 [label=\"Data.GraphViz.Attributes.Colors\\nGray46\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t807 [label=\"Data.GraphViz.Attributes.Colors\\nGray47\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t808 [label=\"Data.GraphViz.Attributes.Colors\\nGray48\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t809 [label=\"Data.GraphViz.Attributes.Colors\\nGray49\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t810 [label=\"Data.GraphViz.Attributes.Colors\\nGray5\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t811 [label=\"Data.GraphViz.Attributes.Colors\\nGray50\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t812 [label=\"Data.GraphViz.Attributes.Colors\\nGray51\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t813 [label=\"Data.GraphViz.Attributes.Colors\\nGray52\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t814 [label=\"Data.GraphViz.Attributes.Colors\\nGray53\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t815 [label=\"Data.GraphViz.Attributes.Colors\\nGray54\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t816 [label=\"Data.GraphViz.Attributes.Colors\\nGray55\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t817 [label=\"Data.GraphViz.Attributes.Colors\\nGray56\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t818 [label=\"Data.GraphViz.Attributes.Colors\\nGray57\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t819 [label=\"Data.GraphViz.Attributes.Colors\\nGray58\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t820 [label=\"Data.GraphViz.Attributes.Colors\\nGray59\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t821 [label=\"Data.GraphViz.Attributes.Colors\\nGray6\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t822 [label=\"Data.GraphViz.Attributes.Colors\\nGray60\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t823 [label=\"Data.GraphViz.Attributes.Colors\\nGray61\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t824 [label=\"Data.GraphViz.Attributes.Colors\\nGray62\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t825 [label=\"Data.GraphViz.Attributes.Colors\\nGray63\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t826 [label=\"Data.GraphViz.Attributes.Colors\\nGray64\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t827 [label=\"Data.GraphViz.Attributes.Colors\\nGray65\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t828 [label=\"Data.GraphViz.Attributes.Colors\\nGray66\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t829 [label=\"Data.GraphViz.Attributes.Colors\\nGray67\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t830 [label=\"Data.GraphViz.Attributes.Colors\\nGray68\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t831 [label=\"Data.GraphViz.Attributes.Colors\\nGray69\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t832 [label=\"Data.GraphViz.Attributes.Colors\\nGray7\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t833 [label=\"Data.GraphViz.Attributes.Colors\\nGray70\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t834 [label=\"Data.GraphViz.Attributes.Colors\\nGray71\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t835 [label=\"Data.GraphViz.Attributes.Colors\\nGray72\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t836 [label=\"Data.GraphViz.Attributes.Colors\\nGray73\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t837 [label=\"Data.GraphViz.Attributes.Colors\\nGray74\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t838 [label=\"Data.GraphViz.Attributes.Colors\\nGray75\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t839 [label=\"Data.GraphViz.Attributes.Colors\\nGray76\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t840 [label=\"Data.GraphViz.Attributes.Colors\\nGray77\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t841 [label=\"Data.GraphViz.Attributes.Colors\\nGray78\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t842 [label=\"Data.GraphViz.Attributes.Colors\\nGray79\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t843 [label=\"Data.GraphViz.Attributes.Colors\\nGray8\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t844 [label=\"Data.GraphViz.Attributes.Colors\\nGray80\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t845 [label=\"Data.GraphViz.Attributes.Colors\\nGray81\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t846 [label=\"Data.GraphViz.Attributes.Colors\\nGray82\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t847 [label=\"Data.GraphViz.Attributes.Colors\\nGray83\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t848 [label=\"Data.GraphViz.Attributes.Colors\\nGray84\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t849 [label=\"Data.GraphViz.Attributes.Colors\\nGray85\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t850 [label=\"Data.GraphViz.Attributes.Colors\\nGray86\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t851 [label=\"Data.GraphViz.Attributes.Colors\\nGray87\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t852 [label=\"Data.GraphViz.Attributes.Colors\\nGray88\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t853 [label=\"Data.GraphViz.Attributes.Colors\\nGray89\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t854 [label=\"Data.GraphViz.Attributes.Colors\\nGray9\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t855 [label=\"Data.GraphViz.Attributes.Colors\\nGray90\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t856 [label=\"Data.GraphViz.Attributes.Colors\\nGray91\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t857 [label=\"Data.GraphViz.Attributes.Colors\\nGray92\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t858 [label=\"Data.GraphViz.Attributes.Colors\\nGray93\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t859 [label=\"Data.GraphViz.Attributes.Colors\\nGray94\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t860 [label=\"Data.GraphViz.Attributes.Colors\\nGray95\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t861 [label=\"Data.GraphViz.Attributes.Colors\\nGray96\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t862 [label=\"Data.GraphViz.Attributes.Colors\\nGray97\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t863 [label=\"Data.GraphViz.Attributes.Colors\\nGray98\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t864 [label=\"Data.GraphViz.Attributes.Colors\\nGray99\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t865 [label=\"Data.GraphViz.Attributes.Colors\\nGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t866 [label=\"Data.GraphViz.Attributes.Colors\\nGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t867 [label=\"Data.GraphViz.Attributes.Colors\\nGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t868 [label=\"Data.GraphViz.Attributes.Colors\\nGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t869 [label=\"Data.GraphViz.Attributes.Colors\\nGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t870 [label=\"Data.GraphViz.Attributes.Colors\\nGreenYellow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t874 [label=\"Data.GraphViz.Attributes.Colors\\nHoneyDew\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t875 [label=\"Data.GraphViz.Attributes.Colors\\nHoneyDew1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t876 [label=\"Data.GraphViz.Attributes.Colors\\nHoneyDew2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t877 [label=\"Data.GraphViz.Attributes.Colors\\nHoneyDew3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t878 [label=\"Data.GraphViz.Attributes.Colors\\nHoneyDew4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t879 [label=\"Data.GraphViz.Attributes.Colors\\nHotPink\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t880 [label=\"Data.GraphViz.Attributes.Colors\\nHotPink1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t881 [label=\"Data.GraphViz.Attributes.Colors\\nHotPink2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t882 [label=\"Data.GraphViz.Attributes.Colors\\nHotPink3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t883 [label=\"Data.GraphViz.Attributes.Colors\\nHotPink4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t884 [label=\"Data.GraphViz.Attributes.Colors\\nIndianRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t885 [label=\"Data.GraphViz.Attributes.Colors\\nIndianRed1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t886 [label=\"Data.GraphViz.Attributes.Colors\\nIndianRed2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t887 [label=\"Data.GraphViz.Attributes.Colors\\nIndianRed3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t888 [label=\"Data.GraphViz.Attributes.Colors\\nIndianRed4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t889 [label=\"Data.GraphViz.Attributes.Colors\\nIndigo\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t890 [label=\"Data.GraphViz.Attributes.Colors\\nIvory\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t891 [label=\"Data.GraphViz.Attributes.Colors\\nIvory1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t892 [label=\"Data.GraphViz.Attributes.Colors\\nIvory2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t893 [label=\"Data.GraphViz.Attributes.Colors\\nIvory3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t894 [label=\"Data.GraphViz.Attributes.Colors\\nIvory4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t895 [label=\"Data.GraphViz.Attributes.Colors\\nKhaki\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t896 [label=\"Data.GraphViz.Attributes.Colors\\nKhaki1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t897 [label=\"Data.GraphViz.Attributes.Colors\\nKhaki2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t898 [label=\"Data.GraphViz.Attributes.Colors\\nKhaki3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t899 [label=\"Data.GraphViz.Attributes.Colors\\nKhaki4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t900 [label=\"Data.GraphViz.Attributes.Colors\\nLavender\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t901 [label=\"Data.GraphViz.Attributes.Colors\\nLavenderBlush\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t902 [label=\"Data.GraphViz.Attributes.Colors\\nLavenderBlush1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t903 [label=\"Data.GraphViz.Attributes.Colors\\nLavenderBlush2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t904 [label=\"Data.GraphViz.Attributes.Colors\\nLavenderBlush3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t905 [label=\"Data.GraphViz.Attributes.Colors\\nLavenderBlush4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t906 [label=\"Data.GraphViz.Attributes.Colors\\nLawnGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t907 [label=\"Data.GraphViz.Attributes.Colors\\nLemonChiffon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t908 [label=\"Data.GraphViz.Attributes.Colors\\nLemonChiffon1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t909 [label=\"Data.GraphViz.Attributes.Colors\\nLemonChiffon2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t910 [label=\"Data.GraphViz.Attributes.Colors\\nLemonChiffon3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t911 [label=\"Data.GraphViz.Attributes.Colors\\nLemonChiffon4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t912 [label=\"Data.GraphViz.Attributes.Colors\\nLightBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t913 [label=\"Data.GraphViz.Attributes.Colors\\nLightBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t914 [label=\"Data.GraphViz.Attributes.Colors\\nLightBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t915 [label=\"Data.GraphViz.Attributes.Colors\\nLightBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t916 [label=\"Data.GraphViz.Attributes.Colors\\nLightBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t917 [label=\"Data.GraphViz.Attributes.Colors\\nLightCoral\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t918 [label=\"Data.GraphViz.Attributes.Colors\\nLightCyan\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t919 [label=\"Data.GraphViz.Attributes.Colors\\nLightCyan1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t920 [label=\"Data.GraphViz.Attributes.Colors\\nLightCyan2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t921 [label=\"Data.GraphViz.Attributes.Colors\\nLightCyan3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t922 [label=\"Data.GraphViz.Attributes.Colors\\nLightCyan4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t923 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrod\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t924 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrod1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t925 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrod2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t926 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrod3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t927 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrod4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t928 [label=\"Data.GraphViz.Attributes.Colors\\nLightGoldenrodYellow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t929 [label=\"Data.GraphViz.Attributes.Colors\\nLightGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t930 [label=\"Data.GraphViz.Attributes.Colors\\nLightPink\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t931 [label=\"Data.GraphViz.Attributes.Colors\\nLightPink1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t932 [label=\"Data.GraphViz.Attributes.Colors\\nLightPink2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t933 [label=\"Data.GraphViz.Attributes.Colors\\nLightPink3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t934 [label=\"Data.GraphViz.Attributes.Colors\\nLightPink4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t935 [label=\"Data.GraphViz.Attributes.Colors\\nLightSalmon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t936 [label=\"Data.GraphViz.Attributes.Colors\\nLightSalmon1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t937 [label=\"Data.GraphViz.Attributes.Colors\\nLightSalmon2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t938 [label=\"Data.GraphViz.Attributes.Colors\\nLightSalmon3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t939 [label=\"Data.GraphViz.Attributes.Colors\\nLightSalmon4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t940 [label=\"Data.GraphViz.Attributes.Colors\\nLightSeaGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t941 [label=\"Data.GraphViz.Attributes.Colors\\nLightSkyBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t942 [label=\"Data.GraphViz.Attributes.Colors\\nLightSkyBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t943 [label=\"Data.GraphViz.Attributes.Colors\\nLightSkyBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t944 [label=\"Data.GraphViz.Attributes.Colors\\nLightSkyBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t945 [label=\"Data.GraphViz.Attributes.Colors\\nLightSkyBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t946 [label=\"Data.GraphViz.Attributes.Colors\\nLightSlateBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t947 [label=\"Data.GraphViz.Attributes.Colors\\nLightSlateGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t948 [label=\"Data.GraphViz.Attributes.Colors\\nLightSteelBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t949 [label=\"Data.GraphViz.Attributes.Colors\\nLightSteelBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t950 [label=\"Data.GraphViz.Attributes.Colors\\nLightSteelBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t951 [label=\"Data.GraphViz.Attributes.Colors\\nLightSteelBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t952 [label=\"Data.GraphViz.Attributes.Colors\\nLightSteelBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t953 [label=\"Data.GraphViz.Attributes.Colors\\nLightYellow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t954 [label=\"Data.GraphViz.Attributes.Colors\\nLightYellow1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t955 [label=\"Data.GraphViz.Attributes.Colors\\nLightYellow2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t956 [label=\"Data.GraphViz.Attributes.Colors\\nLightYellow3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t957 [label=\"Data.GraphViz.Attributes.Colors\\nLightYellow4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t958 [label=\"Data.GraphViz.Attributes.Colors\\nLimeGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t959 [label=\"Data.GraphViz.Attributes.Colors\\nLinen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t960 [label=\"Data.GraphViz.Attributes.Colors\\nMagenta\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t961 [label=\"Data.GraphViz.Attributes.Colors\\nMagenta1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t962 [label=\"Data.GraphViz.Attributes.Colors\\nMagenta2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t963 [label=\"Data.GraphViz.Attributes.Colors\\nMagenta3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t964 [label=\"Data.GraphViz.Attributes.Colors\\nMagenta4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t965 [label=\"Data.GraphViz.Attributes.Colors\\nMaroon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t966 [label=\"Data.GraphViz.Attributes.Colors\\nMaroon1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t967 [label=\"Data.GraphViz.Attributes.Colors\\nMaroon2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t968 [label=\"Data.GraphViz.Attributes.Colors\\nMaroon3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t969 [label=\"Data.GraphViz.Attributes.Colors\\nMaroon4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t970 [label=\"Data.GraphViz.Attributes.Colors\\nMediumAquamarine\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t971 [label=\"Data.GraphViz.Attributes.Colors\\nMediumBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t972 [label=\"Data.GraphViz.Attributes.Colors\\nMediumOrchid\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t973 [label=\"Data.GraphViz.Attributes.Colors\\nMediumOrchid1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t974 [label=\"Data.GraphViz.Attributes.Colors\\nMediumOrchid2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t975 [label=\"Data.GraphViz.Attributes.Colors\\nMediumOrchid3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t976 [label=\"Data.GraphViz.Attributes.Colors\\nMediumOrchid4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t977 [label=\"Data.GraphViz.Attributes.Colors\\nMediumPurple\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t978 [label=\"Data.GraphViz.Attributes.Colors\\nMediumPurple1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t979 [label=\"Data.GraphViz.Attributes.Colors\\nMediumPurple2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t980 [label=\"Data.GraphViz.Attributes.Colors\\nMediumPurple3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t981 [label=\"Data.GraphViz.Attributes.Colors\\nMediumPurple4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t982 [label=\"Data.GraphViz.Attributes.Colors\\nMediumSeaGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t983 [label=\"Data.GraphViz.Attributes.Colors\\nMediumSlateBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t984 [label=\"Data.GraphViz.Attributes.Colors\\nMediumSpringGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t985 [label=\"Data.GraphViz.Attributes.Colors\\nMediumTurquoise\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t986 [label=\"Data.GraphViz.Attributes.Colors\\nMediumVioletRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t987 [label=\"Data.GraphViz.Attributes.Colors\\nMidnightBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t988 [label=\"Data.GraphViz.Attributes.Colors\\nMintCream\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t989 [label=\"Data.GraphViz.Attributes.Colors\\nMistyRose\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t990 [label=\"Data.GraphViz.Attributes.Colors\\nMistyRose1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t991 [label=\"Data.GraphViz.Attributes.Colors\\nMistyRose2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t992 [label=\"Data.GraphViz.Attributes.Colors\\nMistyRose3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t993 [label=\"Data.GraphViz.Attributes.Colors\\nMistyRose4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t994 [label=\"Data.GraphViz.Attributes.Colors\\nMoccasin\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t995 [label=\"Data.GraphViz.Attributes.Colors\\nNavajoWhite\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t996 [label=\"Data.GraphViz.Attributes.Colors\\nNavajoWhite1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t997 [label=\"Data.GraphViz.Attributes.Colors\\nNavajoWhite2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t998 [label=\"Data.GraphViz.Attributes.Colors\\nNavajoWhite3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t999 [label=\"Data.GraphViz.Attributes.Colors\\nNavajoWhite4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1000 [label=\"Data.GraphViz.Attributes.Colors\\nNavy\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1001 [label=\"Data.GraphViz.Attributes.Colors\\nNavyBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1002 [label=\"Data.GraphViz.Attributes.Colors\\nOldLace\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1003 [label=\"Data.GraphViz.Attributes.Colors\\nOliveDrab\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1004 [label=\"Data.GraphViz.Attributes.Colors\\nOliveDrab1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1005 [label=\"Data.GraphViz.Attributes.Colors\\nOliveDrab2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1006 [label=\"Data.GraphViz.Attributes.Colors\\nOliveDrab3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1007 [label=\"Data.GraphViz.Attributes.Colors\\nOliveDrab4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1008 [label=\"Data.GraphViz.Attributes.Colors\\nOrange\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1009 [label=\"Data.GraphViz.Attributes.Colors\\nOrange1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1010 [label=\"Data.GraphViz.Attributes.Colors\\nOrange2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1011 [label=\"Data.GraphViz.Attributes.Colors\\nOrange3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1012 [label=\"Data.GraphViz.Attributes.Colors\\nOrange4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1013 [label=\"Data.GraphViz.Attributes.Colors\\nOrangeRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1014 [label=\"Data.GraphViz.Attributes.Colors\\nOrangeRed1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1015 [label=\"Data.GraphViz.Attributes.Colors\\nOrangeRed2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1016 [label=\"Data.GraphViz.Attributes.Colors\\nOrangeRed3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1017 [label=\"Data.GraphViz.Attributes.Colors\\nOrangeRed4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1019 [label=\"Data.GraphViz.Attributes.Colors\\nOrchid\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1020 [label=\"Data.GraphViz.Attributes.Colors\\nOrchid1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1021 [label=\"Data.GraphViz.Attributes.Colors\\nOrchid2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1022 [label=\"Data.GraphViz.Attributes.Colors\\nOrchid3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1023 [label=\"Data.GraphViz.Attributes.Colors\\nOrchid4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1026 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGoldenrod\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1027 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1028 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1029 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1030 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1031 [label=\"Data.GraphViz.Attributes.Colors\\nPaleGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1032 [label=\"Data.GraphViz.Attributes.Colors\\nPaleTurquoise\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1033 [label=\"Data.GraphViz.Attributes.Colors\\nPaleTurquoise1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1034 [label=\"Data.GraphViz.Attributes.Colors\\nPaleTurquoise2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1035 [label=\"Data.GraphViz.Attributes.Colors\\nPaleTurquoise3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1036 [label=\"Data.GraphViz.Attributes.Colors\\nPaleTurquoise4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1037 [label=\"Data.GraphViz.Attributes.Colors\\nPaleVioletRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1038 [label=\"Data.GraphViz.Attributes.Colors\\nPaleVioletRed1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1039 [label=\"Data.GraphViz.Attributes.Colors\\nPaleVioletRed2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1040 [label=\"Data.GraphViz.Attributes.Colors\\nPaleVioletRed3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1041 [label=\"Data.GraphViz.Attributes.Colors\\nPaleVioletRed4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1042 [label=\"Data.GraphViz.Attributes.Colors\\nPapayaWhip\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1045 [label=\"Data.GraphViz.Attributes.Colors\\nPeachPuff\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1046 [label=\"Data.GraphViz.Attributes.Colors\\nPeachPuff1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1047 [label=\"Data.GraphViz.Attributes.Colors\\nPeachPuff2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1048 [label=\"Data.GraphViz.Attributes.Colors\\nPeachPuff3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1049 [label=\"Data.GraphViz.Attributes.Colors\\nPeachPuff4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1050 [label=\"Data.GraphViz.Attributes.Colors\\nPeru\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1051 [label=\"Data.GraphViz.Attributes.Colors\\nPink\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1052 [label=\"Data.GraphViz.Attributes.Colors\\nPink1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1053 [label=\"Data.GraphViz.Attributes.Colors\\nPink2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1054 [label=\"Data.GraphViz.Attributes.Colors\\nPink3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1055 [label=\"Data.GraphViz.Attributes.Colors\\nPink4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1057 [label=\"Data.GraphViz.Attributes.Colors\\nPlum\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1058 [label=\"Data.GraphViz.Attributes.Colors\\nPlum1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1059 [label=\"Data.GraphViz.Attributes.Colors\\nPlum2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1060 [label=\"Data.GraphViz.Attributes.Colors\\nPlum3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1061 [label=\"Data.GraphViz.Attributes.Colors\\nPlum4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1062 [label=\"Data.GraphViz.Attributes.Colors\\nPowderBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1068 [label=\"Data.GraphViz.Attributes.Colors\\nPurple\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1069 [label=\"Data.GraphViz.Attributes.Colors\\nPurple1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1070 [label=\"Data.GraphViz.Attributes.Colors\\nPurple2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1071 [label=\"Data.GraphViz.Attributes.Colors\\nPurple3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1072 [label=\"Data.GraphViz.Attributes.Colors\\nPurple4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1081 [label=\"Data.GraphViz.Attributes.Colors\\nRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1082 [label=\"Data.GraphViz.Attributes.Colors\\nRed1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1083 [label=\"Data.GraphViz.Attributes.Colors\\nRed2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1084 [label=\"Data.GraphViz.Attributes.Colors\\nRed3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1085 [label=\"Data.GraphViz.Attributes.Colors\\nRed4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1087 [label=\"Data.GraphViz.Attributes.Colors\\nRosyBrown\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1088 [label=\"Data.GraphViz.Attributes.Colors\\nRosyBrown1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1089 [label=\"Data.GraphViz.Attributes.Colors\\nRosyBrown2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1090 [label=\"Data.GraphViz.Attributes.Colors\\nRosyBrown3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1091 [label=\"Data.GraphViz.Attributes.Colors\\nRosyBrown4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1092 [label=\"Data.GraphViz.Attributes.Colors\\nRoyalBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1093 [label=\"Data.GraphViz.Attributes.Colors\\nRoyalBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1094 [label=\"Data.GraphViz.Attributes.Colors\\nRoyalBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1095 [label=\"Data.GraphViz.Attributes.Colors\\nRoyalBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1096 [label=\"Data.GraphViz.Attributes.Colors\\nRoyalBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1097 [label=\"Data.GraphViz.Attributes.Colors\\nSaddleBrown\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1098 [label=\"Data.GraphViz.Attributes.Colors\\nSalmon\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1099 [label=\"Data.GraphViz.Attributes.Colors\\nSalmon1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1100 [label=\"Data.GraphViz.Attributes.Colors\\nSalmon2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1101 [label=\"Data.GraphViz.Attributes.Colors\\nSalmon3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1102 [label=\"Data.GraphViz.Attributes.Colors\\nSalmon4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1103 [label=\"Data.GraphViz.Attributes.Colors\\nSandyBrown\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1104 [label=\"Data.GraphViz.Attributes.Colors\\nSeaGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1105 [label=\"Data.GraphViz.Attributes.Colors\\nSeaGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1106 [label=\"Data.GraphViz.Attributes.Colors\\nSeaGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1107 [label=\"Data.GraphViz.Attributes.Colors\\nSeaGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1108 [label=\"Data.GraphViz.Attributes.Colors\\nSeaGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1109 [label=\"Data.GraphViz.Attributes.Colors\\nSeaShell\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1110 [label=\"Data.GraphViz.Attributes.Colors\\nSeaShell1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1111 [label=\"Data.GraphViz.Attributes.Colors\\nSeaShell2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1112 [label=\"Data.GraphViz.Attributes.Colors\\nSeaShell3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1113 [label=\"Data.GraphViz.Attributes.Colors\\nSeaShell4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1117 [label=\"Data.GraphViz.Attributes.Colors\\nSienna\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1118 [label=\"Data.GraphViz.Attributes.Colors\\nSienna1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1119 [label=\"Data.GraphViz.Attributes.Colors\\nSienna2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1120 [label=\"Data.GraphViz.Attributes.Colors\\nSienna3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1121 [label=\"Data.GraphViz.Attributes.Colors\\nSienna4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1122 [label=\"Data.GraphViz.Attributes.Colors\\nSkyBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1123 [label=\"Data.GraphViz.Attributes.Colors\\nSkyBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1124 [label=\"Data.GraphViz.Attributes.Colors\\nSkyBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1125 [label=\"Data.GraphViz.Attributes.Colors\\nSkyBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1126 [label=\"Data.GraphViz.Attributes.Colors\\nSkyBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1127 [label=\"Data.GraphViz.Attributes.Colors\\nSlateBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1128 [label=\"Data.GraphViz.Attributes.Colors\\nSlateBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1129 [label=\"Data.GraphViz.Attributes.Colors\\nSlateBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1130 [label=\"Data.GraphViz.Attributes.Colors\\nSlateBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1131 [label=\"Data.GraphViz.Attributes.Colors\\nSlateBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1132 [label=\"Data.GraphViz.Attributes.Colors\\nSlateGray\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1133 [label=\"Data.GraphViz.Attributes.Colors\\nSlateGray1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1134 [label=\"Data.GraphViz.Attributes.Colors\\nSlateGray2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1135 [label=\"Data.GraphViz.Attributes.Colors\\nSlateGray3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1136 [label=\"Data.GraphViz.Attributes.Colors\\nSlateGray4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1137 [label=\"Data.GraphViz.Attributes.Colors\\nSnow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1138 [label=\"Data.GraphViz.Attributes.Colors\\nSnow1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1139 [label=\"Data.GraphViz.Attributes.Colors\\nSnow2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1140 [label=\"Data.GraphViz.Attributes.Colors\\nSnow3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1141 [label=\"Data.GraphViz.Attributes.Colors\\nSnow4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1143 [label=\"Data.GraphViz.Attributes.Colors\\nSpringGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1144 [label=\"Data.GraphViz.Attributes.Colors\\nSpringGreen1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1145 [label=\"Data.GraphViz.Attributes.Colors\\nSpringGreen2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1146 [label=\"Data.GraphViz.Attributes.Colors\\nSpringGreen3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1147 [label=\"Data.GraphViz.Attributes.Colors\\nSpringGreen4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1148 [label=\"Data.GraphViz.Attributes.Colors\\nSteelBlue\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1149 [label=\"Data.GraphViz.Attributes.Colors\\nSteelBlue1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1150 [label=\"Data.GraphViz.Attributes.Colors\\nSteelBlue2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1151 [label=\"Data.GraphViz.Attributes.Colors\\nSteelBlue3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1152 [label=\"Data.GraphViz.Attributes.Colors\\nSteelBlue4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1153 [label=\"Data.GraphViz.Attributes.Colors\\nTan\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1154 [label=\"Data.GraphViz.Attributes.Colors\\nTan1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1155 [label=\"Data.GraphViz.Attributes.Colors\\nTan2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1156 [label=\"Data.GraphViz.Attributes.Colors\\nTan3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1157 [label=\"Data.GraphViz.Attributes.Colors\\nTan4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1158 [label=\"Data.GraphViz.Attributes.Colors\\nThistle\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1159 [label=\"Data.GraphViz.Attributes.Colors\\nThistle1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1160 [label=\"Data.GraphViz.Attributes.Colors\\nThistle2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1161 [label=\"Data.GraphViz.Attributes.Colors\\nThistle3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1162 [label=\"Data.GraphViz.Attributes.Colors\\nThistle4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1163 [label=\"Data.GraphViz.Attributes.Colors\\nTomato\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1164 [label=\"Data.GraphViz.Attributes.Colors\\nTomato1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1165 [label=\"Data.GraphViz.Attributes.Colors\\nTomato2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1166 [label=\"Data.GraphViz.Attributes.Colors\\nTomato3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1167 [label=\"Data.GraphViz.Attributes.Colors\\nTomato4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1168 [label=\"Data.GraphViz.Attributes.Colors\\nTransparent\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1169 [label=\"Data.GraphViz.Attributes.Colors\\nTurquoise\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1170 [label=\"Data.GraphViz.Attributes.Colors\\nTurquoise1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1171 [label=\"Data.GraphViz.Attributes.Colors\\nTurquoise2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1172 [label=\"Data.GraphViz.Attributes.Colors\\nTurquoise3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1173 [label=\"Data.GraphViz.Attributes.Colors\\nTurquoise4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1174 [label=\"Data.GraphViz.Attributes.Colors\\nViolet\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1175 [label=\"Data.GraphViz.Attributes.Colors\\nVioletRed\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1176 [label=\"Data.GraphViz.Attributes.Colors\\nVioletRed1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1177 [label=\"Data.GraphViz.Attributes.Colors\\nVioletRed2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1178 [label=\"Data.GraphViz.Attributes.Colors\\nVioletRed3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1179 [label=\"Data.GraphViz.Attributes.Colors\\nVioletRed4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1180 [label=\"Data.GraphViz.Attributes.Colors\\nWheat\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1181 [label=\"Data.GraphViz.Attributes.Colors\\nWheat1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1182 [label=\"Data.GraphViz.Attributes.Colors\\nWheat2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1183 [label=\"Data.GraphViz.Attributes.Colors\\nWheat3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1184 [label=\"Data.GraphViz.Attributes.Colors\\nWheat4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1185 [label=\"Data.GraphViz.Attributes.Colors\\nWhite\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1186 [label=\"Data.GraphViz.Attributes.Colors\\nWhiteSmoke\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1189 [label=\"Data.GraphViz.Attributes.Colors\\nYellow\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1190 [label=\"Data.GraphViz.Attributes.Colors\\nYellow1\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1191 [label=\"Data.GraphViz.Attributes.Colors\\nYellow2\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1192 [label=\"Data.GraphViz.Attributes.Colors\\nYellow3\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1193 [label=\"Data.GraphViz.Attributes.Colors\\nYellow4\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t\t1194 [label=\"Data.GraphViz.Attributes.Colors\\nYellowGreen\", style=\"filled,solid\", shape=box3d, fillcolor=goldenrod];\n\t}\n\t3 [label=\"Data.GraphViz\\naddEdgeIDs\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t4 [label=\"Data.GraphViz\\naugmentGraph\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t5 [label=\"Data.GraphViz\\nblankParams\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t6 [label=\"Data.GraphViz\\ncanonicalise\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t9 [label=\"Data.GraphViz\\ndefaultParams\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t10 [label=\"Data.GraphViz\\ndotAttributes\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t11 [label=\"Data.GraphViz\\ndotToGraph\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t12 [label=\"Data.GraphViz\\ndotizeGraph\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t18 [label=\"Data.GraphViz\\nfromDotResult\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t20 [label=\"Data.GraphViz\\ngraphToDot\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t21 [label=\"Data.GraphViz\\ngraphToGraph\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t23 [label=\"Data.GraphViz\\nisUndirected\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t24 [label=\"Data.GraphViz\\nnonClusteredParams\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t25 [label=\"Data.GraphViz\\nprettyPrint\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t26 [label=\"Data.GraphViz\\nprettyPrint'\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t27 [label=\"Data.GraphViz\\npreview\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t28 [label=\"Data.GraphViz\\nsetDirectedness\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t29 [label=\"Data.GraphViz\\nsetEdgeComment\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t30 [label=\"Data.GraphViz\\nstripID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t39 [label=\"Data.GraphViz.AttributeGenerator\\narbitraryFor\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t40 [label=\"Data.GraphViz.AttributeGenerator\\narbitraryFor'\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t41 [label=\"Data.GraphViz.AttributeGenerator\\narbitraryInstance\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t42 [label=\"Data.GraphViz.AttributeGenerator\\nasRows\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t43 [label=\"Data.GraphViz.AttributeGenerator\\nattributes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t44 [label=\"Data.GraphViz.AttributeGenerator\\nattrs\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t45 [label=\"Data.GraphViz.AttributeGenerator\\nattrs'\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t47 [label=\"Data.GraphViz.AttributeGenerator\\nbool\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t50 [label=\"Data.GraphViz.AttributeGenerator\\ncreateAlias\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t51 [label=\"Data.GraphViz.AttributeGenerator\\ncreateDefn\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t52 [label=\"Data.GraphViz.AttributeGenerator\\ndocLen\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t53 [label=\"Data.GraphViz.AttributeGenerator\\ndocList\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t54 [label=\"Data.GraphViz.AttributeGenerator\\ndollar\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t55 [label=\"Data.GraphViz.AttributeGenerator\\ndot\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t56 [label=\"Data.GraphViz.AttributeGenerator\\nfirstOthers\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t62 [label=\"Data.GraphViz.AttributeGenerator\\ngenArbitrary\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t63 [label=\"Data.GraphViz.AttributeGenerator\\ngenCode\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t64 [label=\"Data.GraphViz.AttributeGenerator\\nmain\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t65 [label=\"Data.GraphViz.AttributeGenerator\\nmakeAttr\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t68 [label=\"Data.GraphViz.AttributeGenerator\\nparseInstance\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t70 [label=\"Data.GraphViz.AttributeGenerator\\nsameAttributeFunc\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t71 [label=\"Data.GraphViz.AttributeGenerator\\nshowInstance\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t72 [label=\"Data.GraphViz.AttributeGenerator\\nshrinkFor\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t73 [label=\"Data.GraphViz.AttributeGenerator\\ntab\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t75 [label=\"Data.GraphViz.AttributeGenerator\\nunknownAttr\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t76 [label=\"Data.GraphViz.AttributeGenerator\\nusedByFunc\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t78 [label=\"Data.GraphViz.AttributeGenerator\\nvsep\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t79 [label=\"Data.GraphViz.AttributeGenerator\\nvtype\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t80 [label=\"Data.GraphViz.AttributeGenerator\\nvtypeCode\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t81 [label=\"Data.GraphViz.AttributeGenerator\\nwrap\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t404 [label=\"Data.GraphViz.Attributes\\nbox\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t405 [label=\"Data.GraphViz.Attributes\\ncheckDD\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t406 [label=\"Data.GraphViz.Attributes\\ncheckLayerName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t407 [label=\"Data.GraphViz.Attributes\\ncreatePoint\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t408 [label=\"Data.GraphViz.Attributes\\ncrow\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t409 [label=\"Data.GraphViz.Attributes\\ndefLayerSep\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t410 [label=\"Data.GraphViz.Attributes\\ndiamond\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t411 [label=\"Data.GraphViz.Attributes\\ndotArrow\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t412 [label=\"Data.GraphViz.Attributes\\neDiamond\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t413 [label=\"Data.GraphViz.Attributes\\nemptyArr\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t417 [label=\"Data.GraphViz.Attributes\\nhalfOpen\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t418 [label=\"Data.GraphViz.Attributes\\ninv\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t419 [label=\"Data.GraphViz.Attributes\\ninvDot\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t420 [label=\"Data.GraphViz.Attributes\\ninvEmpty\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t421 [label=\"Data.GraphViz.Attributes\\ninvODot\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t428 [label=\"Data.GraphViz.Attributes\\nnoArrow\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t429 [label=\"Data.GraphViz.Attributes\\nnoMods\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t430 [label=\"Data.GraphViz.Attributes\\nnormal\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t431 [label=\"Data.GraphViz.Attributes\\nnotLayerSep\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t432 [label=\"Data.GraphViz.Attributes\\noBox\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t433 [label=\"Data.GraphViz.Attributes\\noDiamond\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t434 [label=\"Data.GraphViz.Attributes\\noDot\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t435 [label=\"Data.GraphViz.Attributes\\nopenArr\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t436 [label=\"Data.GraphViz.Attributes\\nopenMod\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t457 [label=\"Data.GraphViz.Attributes\\nparseArgs\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t458 [label=\"Data.GraphViz.Attributes\\nparseLayerName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t459 [label=\"Data.GraphViz.Attributes\\nparseLayerName'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t460 [label=\"Data.GraphViz.Attributes\\nparseLayerSep\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t464 [label=\"Data.GraphViz.Attributes\\nparsePoint2D\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t465 [label=\"Data.GraphViz.Attributes\\nparseRecord\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t466 [label=\"Data.GraphViz.Attributes\\nparseStyleName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t515 [label=\"Data.GraphViz.Attributes\\nprintPortName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t516 [label=\"Data.GraphViz.Attributes\\nrecordEscChars\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t517 [label=\"Data.GraphViz.Attributes\\nsameAttribute\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t518 [label=\"Data.GraphViz.Attributes\\nspecialArrowParse\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t519 [label=\"Data.GraphViz.Attributes\\ntee\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t599 [label=\"Data.GraphViz.Attributes\\nunqtRecordString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t600 [label=\"Data.GraphViz.Attributes\\nusedByClusters\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t601 [label=\"Data.GraphViz.Attributes\\nusedByEdges\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t602 [label=\"Data.GraphViz.Attributes\\nusedByGraphs\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t603 [label=\"Data.GraphViz.Attributes\\nusedByNodes\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t604 [label=\"Data.GraphViz.Attributes\\nusedBySubGraphs\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t605 [label=\"Data.GraphViz.Attributes\\nvee\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1201 [label=\"Data.GraphViz.Attributes.Colors\\nfromAColour\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1202 [label=\"Data.GraphViz.Attributes.Colors\\nfromColour\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1204 [label=\"Data.GraphViz.Attributes.Colors\\nhexColor\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1207 [label=\"Data.GraphViz.Attributes.Colors\\nmaxWord\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1217 [label=\"Data.GraphViz.Attributes.Colors\\ntoColour\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1219 [label=\"Data.GraphViz.Attributes.Colors\\ntoOpacity\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1226 [label=\"Data.GraphViz.Attributes.Colors\\nword8Doc\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1227 [label=\"Data.GraphViz.Attributes.Colors\\nx11Colour\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1272 [label=\"Data.GraphViz.Attributes.HTML\\nescapeAttribute\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1273 [label=\"Data.GraphViz.Attributes.HTML\\nescapeHtml\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1274 [label=\"Data.GraphViz.Attributes.HTML\\nescapeValue\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1275 [label=\"Data.GraphViz.Attributes.HTML\\nhtmlEscapes\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1276 [label=\"Data.GraphViz.Attributes.HTML\\nhtmlUnescapes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1291 [label=\"Data.GraphViz.Attributes.HTML\\nparseBoolHtml\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1292 [label=\"Data.GraphViz.Attributes.HTML\\nparseHtmlEmptyTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1293 [label=\"Data.GraphViz.Attributes.HTML\\nparseHtmlField\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1294 [label=\"Data.GraphViz.Attributes.HTML\\nparseHtmlField'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1295 [label=\"Data.GraphViz.Attributes.HTML\\nparseHtmlFontTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1296 [label=\"Data.GraphViz.Attributes.HTML\\nparseHtmlTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1315 [label=\"Data.GraphViz.Attributes.HTML\\nprintBoolHtml\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1316 [label=\"Data.GraphViz.Attributes.HTML\\nprintCell\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1317 [label=\"Data.GraphViz.Attributes.HTML\\nprintHtmlEmptyTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1318 [label=\"Data.GraphViz.Attributes.HTML\\nprintHtmlField\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1319 [label=\"Data.GraphViz.Attributes.HTML\\nprintHtmlField'\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1320 [label=\"Data.GraphViz.Attributes.HTML\\nprintHtmlFontTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1321 [label=\"Data.GraphViz.Attributes.HTML\\nprintHtmlTag\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1325 [label=\"Data.GraphViz.Attributes.HTML\\nunescapeAttribute\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1326 [label=\"Data.GraphViz.Attributes.HTML\\nunescapeHtml\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1327 [label=\"Data.GraphViz.Attributes.HTML\\nunescapeValue\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1355 [label=\"Data.GraphViz.Attributes.Internal\\ncheckPortName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1356 [label=\"Data.GraphViz.Attributes.Internal\\ncompassLookup\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1359 [label=\"Data.GraphViz.Attributes.Internal\\nparseEdgeBasedPP\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1369 [label=\"Data.GraphViz.Attributes.Internal\\nunqtPortName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1370 [label=\"Data.GraphViz.Parsing\\nallWhitespace\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1371 [label=\"Data.GraphViz.Parsing\\nallWhitespace'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1372 [label=\"Data.GraphViz.Parsing\\nbracket\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1373 [label=\"Data.GraphViz.Parsing\\ncharacter\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1374 [label=\"Data.GraphViz.Parsing\\ncommaSep\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1375 [label=\"Data.GraphViz.Parsing\\ncommaSep'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1376 [label=\"Data.GraphViz.Parsing\\ncommaSepUnqt\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1377 [label=\"Data.GraphViz.Parsing\\nconsumeLine\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1378 [label=\"Data.GraphViz.Parsing\\ndiscard\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1379 [label=\"Data.GraphViz.Parsing\\nnewline\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1380 [label=\"Data.GraphViz.Parsing\\nnewline'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1381 [label=\"Data.GraphViz.Parsing\\nnoneOf\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1382 [label=\"Data.GraphViz.Parsing\\nnumString\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1383 [label=\"Data.GraphViz.Parsing\\nonlyBool\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1384 [label=\"Data.GraphViz.Parsing\\noptionalQuoted\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1385 [label=\"Data.GraphViz.Parsing\\noptionalQuotedString\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1386 [label=\"Data.GraphViz.Parsing\\norQuote\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1391 [label=\"Data.GraphViz.Parsing\\nparseAndSpace\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1392 [label=\"Data.GraphViz.Parsing\\nparseAngled\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1393 [label=\"Data.GraphViz.Parsing\\nparseBraced\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1394 [label=\"Data.GraphViz.Parsing\\nparseComma\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1395 [label=\"Data.GraphViz.Parsing\\nparseEq\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1396 [label=\"Data.GraphViz.Parsing\\nparseEscaped\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1397 [label=\"Data.GraphViz.Parsing\\nparseField\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1398 [label=\"Data.GraphViz.Parsing\\nparseFieldBool\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1399 [label=\"Data.GraphViz.Parsing\\nparseFieldDef\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1400 [label=\"Data.GraphViz.Parsing\\nparseFields\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1401 [label=\"Data.GraphViz.Parsing\\nparseFieldsBool\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1402 [label=\"Data.GraphViz.Parsing\\nparseFieldsDef\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1403 [label=\"Data.GraphViz.Parsing\\nparseFloat\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1404 [label=\"Data.GraphViz.Parsing\\nparseFloat'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1405 [label=\"Data.GraphViz.Parsing\\nparseInt\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1406 [label=\"Data.GraphViz.Parsing\\nparseInt'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1407 [label=\"Data.GraphViz.Parsing\\nparseIt\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1408 [label=\"Data.GraphViz.Parsing\\nparseIt'\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1413 [label=\"Data.GraphViz.Parsing\\nparseQuote\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1414 [label=\"Data.GraphViz.Parsing\\nparseSigned\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1415 [label=\"Data.GraphViz.Parsing\\nparseStrictFloat\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1428 [label=\"Data.GraphViz.Parsing\\nquoteChar\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1429 [label=\"Data.GraphViz.Parsing\\nquotedParse\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1430 [label=\"Data.GraphViz.Parsing\\nquotedString\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1431 [label=\"Data.GraphViz.Parsing\\nquotelessString\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1432 [label=\"Data.GraphViz.Parsing\\nrunParser'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1433 [label=\"Data.GraphViz.Parsing\\nstring\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1434 [label=\"Data.GraphViz.Parsing\\nstringBlock\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1435 [label=\"Data.GraphViz.Parsing\\nstringRep\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1436 [label=\"Data.GraphViz.Parsing\\nstringReps\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1437 [label=\"Data.GraphViz.Parsing\\nstrings\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1438 [label=\"Data.GraphViz.Parsing\\ntryParseList\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1439 [label=\"Data.GraphViz.Parsing\\ntryParseList'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1440 [label=\"Data.GraphViz.Parsing\\nwhitespace\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1441 [label=\"Data.GraphViz.Parsing\\nwhitespace'\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1442 [label=\"Data.GraphViz.Parsing\\nwrapWhitespace\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1443 [label=\"Data.GraphViz.PreProcessing\\nparseConcatStrings\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1444 [label=\"Data.GraphViz.PreProcessing\\nparseHTML\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1445 [label=\"Data.GraphViz.PreProcessing\\nparseLineComment\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1446 [label=\"Data.GraphViz.PreProcessing\\nparseMultiLineComment\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1447 [label=\"Data.GraphViz.PreProcessing\\nparseOutUnwanted\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1448 [label=\"Data.GraphViz.PreProcessing\\nparsePreProcessor\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1449 [label=\"Data.GraphViz.PreProcessing\\nparseSplitLine\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1450 [label=\"Data.GraphViz.PreProcessing\\nparseUnwanted\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1451 [label=\"Data.GraphViz.PreProcessing\\npreProcess\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1452 [label=\"Data.GraphViz.Printing\\naddEscapes\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1453 [label=\"Data.GraphViz.Printing\\naddQuotes\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1454 [label=\"Data.GraphViz.Printing\\nangled\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1455 [label=\"Data.GraphViz.Printing\\ncommaDel\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1456 [label=\"Data.GraphViz.Printing\\nfslash\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1457 [label=\"Data.GraphViz.Printing\\nlang\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1462 [label=\"Data.GraphViz.Printing\\nneedsQuotes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1463 [label=\"Data.GraphViz.Printing\\nprintEscaped\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1464 [label=\"Data.GraphViz.Printing\\nprintField\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1465 [label=\"Data.GraphViz.Printing\\nprintIt\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1466 [label=\"Data.GraphViz.Printing\\nqtChar\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1467 [label=\"Data.GraphViz.Printing\\nqtString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1468 [label=\"Data.GraphViz.Printing\\nrang\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1469 [label=\"Data.GraphViz.Printing\\nrenderDot\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1483 [label=\"Data.GraphViz.Printing\\nunqtEscaped\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1488 [label=\"Data.GraphViz.Printing\\nunqtString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1489 [label=\"Data.GraphViz.Printing\\nwrap\", style=\"filled,solid\", shape=box, fillcolor=goldenrod];\n\t1491 [label=\"Data.GraphViz.Testing\\nblankLn\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1492 [label=\"Data.GraphViz.Testing\\ndefaultTests\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1494 [label=\"Data.GraphViz.Testing\\ndie\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1497 [label=\"Data.GraphViz.Testing\\nrunChosenTests\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1498 [label=\"Data.GraphViz.Testing\\nrunTest\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1499 [label=\"Data.GraphViz.Testing\\nrunTests\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1500 [label=\"Data.GraphViz.Testing\\nspacerLn\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1502 [label=\"Data.GraphViz.Testing\\ntest_dotizeAugment\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1503 [label=\"Data.GraphViz.Testing\\ntest_dotizeAugmentUniq\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1504 [label=\"Data.GraphViz.Testing\\ntest_findAllEdges\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1505 [label=\"Data.GraphViz.Testing\\ntest_findAllEdgesG\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1506 [label=\"Data.GraphViz.Testing\\ntest_findAllNodes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1507 [label=\"Data.GraphViz.Testing\\ntest_findAllNodesE\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1508 [label=\"Data.GraphViz.Testing\\ntest_findAllNodesEG\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1509 [label=\"Data.GraphViz.Testing\\ntest_findAllNodesG\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1510 [label=\"Data.GraphViz.Testing\\ntest_generalisedSameDot\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1511 [label=\"Data.GraphViz.Testing\\ntest_noGraphInfo\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1512 [label=\"Data.GraphViz.Testing\\ntest_noGraphInfoG\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1513 [label=\"Data.GraphViz.Testing\\ntest_parsePrettyID\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1514 [label=\"Data.GraphViz.Testing\\ntest_preProcessingID\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1515 [label=\"Data.GraphViz.Testing\\ntest_printParseGID\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1516 [label=\"Data.GraphViz.Testing\\ntest_printParseID\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1517 [label=\"Data.GraphViz.Testing\\ntest_printParseID_Attributes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1518 [label=\"Data.GraphViz.Testing.Instances\\narbBounded\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1519 [label=\"Data.GraphViz.Testing.Instances\\narbDS\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1520 [label=\"Data.GraphViz.Testing.Instances\\narbField\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1521 [label=\"Data.GraphViz.Testing.Instances\\narbGDS\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1522 [label=\"Data.GraphViz.Testing.Instances\\narbHtml\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1523 [label=\"Data.GraphViz.Testing.Instances\\narbHtmlText\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1524 [label=\"Data.GraphViz.Testing.Instances\\narbHtmlTexts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1525 [label=\"Data.GraphViz.Testing.Instances\\narbIDString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1526 [label=\"Data.GraphViz.Testing.Instances\\narbLayerName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1527 [label=\"Data.GraphViz.Testing.Instances\\narbList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1528 [label=\"Data.GraphViz.Testing.Instances\\narbString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1529 [label=\"Data.GraphViz.Testing.Instances\\narbStyleName\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1601 [label=\"Data.GraphViz.Testing.Instances\\nfromPositive\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1602 [label=\"Data.GraphViz.Testing.Instances\\ngenGDStmts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1603 [label=\"Data.GraphViz.Testing.Instances\\nlrnameCheck\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1604 [label=\"Data.GraphViz.Testing.Instances\\nnonEmptyShrinks\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1605 [label=\"Data.GraphViz.Testing.Instances\\nnonEmptyShrinks'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1606 [label=\"Data.GraphViz.Testing.Instances\\nnotBool\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1607 [label=\"Data.GraphViz.Testing.Instances\\nnotCP\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1608 [label=\"Data.GraphViz.Testing.Instances\\nnotInt\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1609 [label=\"Data.GraphViz.Testing.Instances\\nnotNumStr\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1610 [label=\"Data.GraphViz.Testing.Instances\\nnotStr\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1611 [label=\"Data.GraphViz.Testing.Instances\\npoint2D\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1612 [label=\"Data.GraphViz.Testing.Instances\\nposArbitrary\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1613 [label=\"Data.GraphViz.Testing.Instances\\nreturnCheck\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1655 [label=\"Data.GraphViz.Testing.Instances\\nshrinkGDStmts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1656 [label=\"Data.GraphViz.Testing.Instances\\nshrinkL\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1657 [label=\"Data.GraphViz.Testing.Instances\\nshrinkList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1658 [label=\"Data.GraphViz.Testing.Instances\\nshrinkList'\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1659 [label=\"Data.GraphViz.Testing.Instances\\nshrinkM\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1660 [label=\"Data.GraphViz.Testing.Instances\\nshrinkString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1661 [label=\"Data.GraphViz.Testing.Instances\\nsimplifyHtmlText\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1662 [label=\"Data.GraphViz.Testing.Instances\\nvalidSplineList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1663 [label=\"Data.GraphViz.Testing.Instances\\nvalidString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1664 [label=\"Data.GraphViz.Testing.Instances\\nvalidUnknown\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1671 [label=\"Data.GraphViz.Types.Clustering\\nclustOrder\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1672 [label=\"Data.GraphViz.Types.Clustering\\nclustToTree\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1673 [label=\"Data.GraphViz.Types.Clustering\\nclustersToNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1674 [label=\"Data.GraphViz.Types.Clustering\\ncollapseNClusts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1675 [label=\"Data.GraphViz.Types.Clustering\\ngetNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1676 [label=\"Data.GraphViz.Types.Clustering\\nsameClust\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1677 [label=\"Data.GraphViz.Types.Clustering\\ntreeToDot\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1678 [label=\"Data.GraphViz.Types.Clustering\\ntreesToDot\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1690 [label=\"Data.GraphViz.Types.Common\\naddPortPos\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1692 [label=\"Data.GraphViz.Types.Common\\nclust\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1693 [label=\"Data.GraphViz.Types.Common\\nclust'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1694 [label=\"Data.GraphViz.Types.Common\\ndetermineType\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1695 [label=\"Data.GraphViz.Types.Common\\ndirEdge\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1696 [label=\"Data.GraphViz.Types.Common\\ndirEdge'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1697 [label=\"Data.GraphViz.Types.Common\\ndirGraph\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1698 [label=\"Data.GraphViz.Types.Common\\ndirGraph'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1705 [label=\"Data.GraphViz.Types.Common\\ninvalidEdge\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1706 [label=\"Data.GraphViz.Types.Common\\ninvalidGlobal\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1707 [label=\"Data.GraphViz.Types.Common\\ninvalidNode\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1711 [label=\"Data.GraphViz.Types.Common\\nmkEdge\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1712 [label=\"Data.GraphViz.Types.Common\\nmkEdges\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1719 [label=\"Data.GraphViz.Types.Common\\nparseAttrBased\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1720 [label=\"Data.GraphViz.Types.Common\\nparseAttrBasedList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1721 [label=\"Data.GraphViz.Types.Common\\nparseBracesBased\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1722 [label=\"Data.GraphViz.Types.Common\\nparseEdgeID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1723 [label=\"Data.GraphViz.Types.Common\\nparseEdgeLine\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1724 [label=\"Data.GraphViz.Types.Common\\nparseEdgeNode\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1725 [label=\"Data.GraphViz.Types.Common\\nparseEdgeNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1726 [label=\"Data.GraphViz.Types.Common\\nparseEdgeType\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1727 [label=\"Data.GraphViz.Types.Common\\nparseGlobAttrType\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1728 [label=\"Data.GraphViz.Types.Common\\nparseGraphID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1732 [label=\"Data.GraphViz.Types.Common\\nparseNodeID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1733 [label=\"Data.GraphViz.Types.Common\\nparseSGID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1734 [label=\"Data.GraphViz.Types.Common\\nparseStatements\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1735 [label=\"Data.GraphViz.Types.Common\\nparseStmtBased\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1736 [label=\"Data.GraphViz.Types.Common\\nparseSubGraphID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1744 [label=\"Data.GraphViz.Types.Common\\nprintAttrBased\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1745 [label=\"Data.GraphViz.Types.Common\\nprintAttrBasedList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1746 [label=\"Data.GraphViz.Types.Common\\nprintBracesBased\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1747 [label=\"Data.GraphViz.Types.Common\\nprintEdgeID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1748 [label=\"Data.GraphViz.Types.Common\\nprintGlobAttrType\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1749 [label=\"Data.GraphViz.Types.Common\\nprintGraphID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1750 [label=\"Data.GraphViz.Types.Common\\nprintNodeID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1751 [label=\"Data.GraphViz.Types.Common\\nprintSGID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1752 [label=\"Data.GraphViz.Types.Common\\nprintStmtBased\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1753 [label=\"Data.GraphViz.Types.Common\\nprintStmtBasedList\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1754 [label=\"Data.GraphViz.Types.Common\\nprintSubGraphID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1755 [label=\"Data.GraphViz.Types.Common\\nsGraph\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1756 [label=\"Data.GraphViz.Types.Common\\nsGraph'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1757 [label=\"Data.GraphViz.Types.Common\\nstatementEnd\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1758 [label=\"Data.GraphViz.Types.Common\\nstrGraph\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1759 [label=\"Data.GraphViz.Types.Common\\nstrGraph'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1760 [label=\"Data.GraphViz.Types.Common\\nstringNum\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1762 [label=\"Data.GraphViz.Types.Common\\nundirEdge\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1763 [label=\"Data.GraphViz.Types.Common\\nundirEdge'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1764 [label=\"Data.GraphViz.Types.Common\\nundirGraph\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1765 [label=\"Data.GraphViz.Types.Common\\nundirGraph'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1790 [label=\"Data.GraphViz.Types.Generalised\\ngeneraliseDotGraph\", style=\"filled,solid\", shape=box, fillcolor=gold];\n\t1791 [label=\"Data.GraphViz.Types.Generalised\\ngeneraliseStatements\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1792 [label=\"Data.GraphViz.Types.Generalised\\ngeneraliseSubGraph\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1804 [label=\"Data.GraphViz.Types.Generalised\\nparseGStmts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1812 [label=\"Data.GraphViz.Types.Generalised\\nprintGStmts\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1813 [label=\"Data.GraphViz.Types.Generalised\\nprintSubGraphID'\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1815 [label=\"Data.GraphViz.Types.Generalised\\nstatementEdges\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1816 [label=\"Data.GraphViz.Types.Generalised\\nstatementNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1817 [label=\"Data.GraphViz.Types.Generalised\\nstatementStructure\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1818 [label=\"Data.GraphViz.Types.Generalised\\nstmtEdges\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1819 [label=\"Data.GraphViz.Types.Generalised\\nstmtNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1820 [label=\"Data.GraphViz.Types.Generalised\\nstmtStructure\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1826 [label=\"Data.GraphViz.Types.Generalised\\nwithSubGraphID\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1831 [label=\"Data.GraphViz.Types.State\\naddCluster\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1832 [label=\"Data.GraphViz.Types.State\\naddEdge\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1833 [label=\"Data.GraphViz.Types.State\\naddEdgeGlobals\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1834 [label=\"Data.GraphViz.Types.State\\naddEdgeNodes\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1835 [label=\"Data.GraphViz.Types.State\\naddGlobals\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1836 [label=\"Data.GraphViz.Types.State\\naddGraphGlobals\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1837 [label=\"Data.GraphViz.Types.State\\naddNode\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1838 [label=\"Data.GraphViz.Types.State\\naddNodeGlobals\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1839 [label=\"Data.GraphViz.Types.State\\naddSubGraph\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1840 [label=\"Data.GraphViz.Types.State\\nappend\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1843 [label=\"Data.GraphViz.Types.State\\nempty\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1846 [label=\"Data.GraphViz.Types.State\\ngetDotEdges\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1847 [label=\"Data.GraphViz.Types.State\\ngetGlobals\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1848 [label=\"Data.GraphViz.Types.State\\ngetGraphInfo\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1849 [label=\"Data.GraphViz.Types.State\\ngetNodeLookup\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1850 [label=\"Data.GraphViz.Types.State\\ngetPath\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1854 [label=\"Data.GraphViz.Types.State\\nmergeCInfos\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1855 [label=\"Data.GraphViz.Types.State\\nmergeNInfos\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1856 [label=\"Data.GraphViz.Types.State\\nmergeNode\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1857 [label=\"Data.GraphViz.Types.State\\nmergePs\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1858 [label=\"Data.GraphViz.Types.State\\nmodifyGlobal\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1859 [label=\"Data.GraphViz.Types.State\\nmodifyPath\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1860 [label=\"Data.GraphViz.Types.State\\nmodifyValue\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1861 [label=\"Data.GraphViz.Types.State\\nrecursiveCall\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1862 [label=\"Data.GraphViz.Types.State\\nsingleton\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1863 [label=\"Data.GraphViz.Types.State\\nsnoc\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1864 [label=\"Data.GraphViz.Types.State\\ntoDotNodes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1865 [label=\"Data.GraphViz.Types.State\\ntoList\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1866 [label=\"Data.GraphViz.Types.State\\ntoSAttr\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1867 [label=\"Data.GraphViz.Types.State\\nunSame\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1868 [label=\"Data.GraphViz.Types.State\\nunionWith\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1871 [label=\"Data.GraphViz.Util\\nbool\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1872 [label=\"Data.GraphViz.Util\\ndescapeQuotes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1873 [label=\"Data.GraphViz.Util\\nescapeQuotes\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1874 [label=\"Data.GraphViz.Util\\nfrstIDString\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1875 [label=\"Data.GraphViz.Util\\ngroupSortBy\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1876 [label=\"Data.GraphViz.Util\\nisIDString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1877 [label=\"Data.GraphViz.Util\\nisIntString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1878 [label=\"Data.GraphViz.Util\\nisKeyword\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1879 [label=\"Data.GraphViz.Util\\nisNumString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1880 [label=\"Data.GraphViz.Util\\nisSingle\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t1881 [label=\"Data.GraphViz.Util\\nkeywords\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1882 [label=\"Data.GraphViz.Util\\nrestIDString\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1883 [label=\"Data.GraphViz.Util\\nstringToInt\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1884 [label=\"Data.GraphViz.Util\\ntoDouble\", style=\"filled,solid\", shape=box, fillcolor=cyan];\n\t1885 [label=\"Data.GraphViz.Util\\nuniq\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1886 [label=\"Data.GraphViz.Util\\nuniqBy\", style=\"filled,solid\", shape=box, fillcolor=bisque];\n\t1887 [label=\"Main\\ndg\", style=\"filled,solid\", shape=box, fillcolor=crimson];\n\t3 -> 1 [penwidth=1, color=black];\n\t4 -> 1 [penwidth=1, color=black];\n\t4 -> 111 [penwidth=1, color=black];\n\t5 -> 2 [penwidth=1, color=black];\n\t5 -> 7 [penwidth=1, color=black];\n\t5 -> 8 [penwidth=1, color=black];\n\t5 -> 15 [penwidth=1, color=black];\n\t5 -> 16 [penwidth=1, color=black];\n\t5 -> 17 [penwidth=1, color=black];\n\t5 -> 19 [penwidth=1, color=black];\n\t5 -> 22 [penwidth=1, color=black];\n\t6 -> 25 [penwidth=1, color=black];\n\t9 -> 2 [penwidth=1, color=black];\n\t9 -> 7 [penwidth=1, color=black];\n\t9 -> 8 [penwidth=1, color=black];\n\t9 -> 15 [penwidth=1, color=black];\n\t9 -> 16 [penwidth=1, color=black];\n\t9 -> 17 [penwidth=1, color=black];\n\t9 -> 19 [penwidth=1, color=black];\n\t9 -> 22 [penwidth=1, color=black];\n\t9 -> 1669 [penwidth=1, color=black];\n\t10 -> 4 [penwidth=1, color=black];\n\t10 -> 18 [penwidth=1, color=black];\n\t11 -> 1885 [penwidth=1, color=black];\n\t11 -> 1886 [penwidth=1, color=black];\n\t12 -> 15 [penwidth=1, color=black];\n\t12 -> 16 [penwidth=1, color=black];\n\t12 -> 17 [penwidth=1, color=black];\n\t12 -> 21 [penwidth=1, color=black];\n\t20 -> 7 [penwidth=1, color=black];\n\t20 -> 8 [penwidth=1, color=black];\n\t20 -> 15 [penwidth=1, color=black];\n\t20 -> 16 [penwidth=1, color=black];\n\t20 -> 17 [penwidth=1, color=black];\n\t20 -> 19 [penwidth=1, color=black];\n\t20 -> 22 [penwidth=1, color=black];\n\t20 -> 1673 [penwidth=1, color=black];\n\t21 -> 3 [penwidth=1, color=black];\n\t21 -> 10 [penwidth=1, color=black];\n\t21 -> 16 [penwidth=\"1.6931471805599454\", color=black];\n\t21 -> 20 [penwidth=1, color=black];\n\t21 -> 22 [penwidth=1, color=black];\n\t21 -> 29 [penwidth=1, color=black];\n\t24 -> 9 [penwidth=1, color=chartreuse];\n\t25 -> 18 [penwidth=1, color=black];\n\t26 -> 25 [penwidth=1, color=black];\n\t27 -> 16 [penwidth=1, color=black];\n\t27 -> 17 [penwidth=1, color=black];\n\t27 -> 20 [penwidth=1, color=black];\n\t27 -> 24 [penwidth=1, color=black];\n\t27 -> 28 [penwidth=1, color=black];\n\t27 -> 537 [penwidth=\"1.6931471805599454\", color=black];\n\t28 -> 22 [penwidth=1, color=black];\n\t28 -> 23 [penwidth=1, color=black];\n\t29 -> 13 [penwidth=1, color=black];\n\t29 -> 30 [penwidth=1, color=black];\n\t29 -> 111 [penwidth=1, color=black];\n\t30 -> 14 [penwidth=1, color=chartreuse];\n\t39 -> 34 [penwidth=1, color=black];\n\t39 -> 36 [penwidth=1, color=black];\n\t39 -> 38 [penwidth=1, color=black];\n\t40 -> 39 [penwidth=1, color=black];\n\t40 -> 77 [penwidth=1, color=black];\n\t41 -> 38 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 39 [penwidth=1, color=black];\n\t41 -> 40 [penwidth=1, color=black];\n\t41 -> 42 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 46 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 48 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 54 [penwidth=1, color=black];\n\t41 -> 56 [penwidth=1, color=black];\n\t41 -> 69 [penwidth=1, color=black];\n\t41 -> 72 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 73 [penwidth=1, color=black];\n\t41 -> 74 [penwidth=1, color=black];\n\t41 -> 75 [penwidth=\"2.09861228866811\", color=black];\n\t41 -> 77 [penwidth=1, color=black];\n\t41 -> 78 [penwidth=\"1.6931471805599454\", color=black];\n\t42 -> 52 [penwidth=1, color=chartreuse];\n\t43 -> 33 [penwidth=\"3.833213344056216\", color=black];\n\t43 -> 34 [penwidth=\"5.007333185232471\", color=black];\n\t43 -> 35 [penwidth=\"4.367295829986475\", color=black];\n\t43 -> 36 [penwidth=\"3.70805020110221\", color=black];\n\t43 -> 37 [penwidth=\"3.3978952727983707\", color=black];\n\t43 -> 38 [penwidth=\"3.833213344056216\", color=black];\n\t43 -> 65 [penwidth=\"5.969813299576001\", color=black];\n\t44 -> 43 [penwidth=1, color=black];\n\t45 -> 32 [penwidth=1, color=black];\n\t45 -> 44 [penwidth=1, color=black];\n\t50 -> 74 [penwidth=1, color=black];\n\t51 -> 38 [penwidth=\"1.6931471805599454\", color=black];\n\t51 -> 42 [penwidth=1, color=black];\n\t51 -> 46 [penwidth=1, color=black];\n\t51 -> 48 [penwidth=1, color=black];\n\t51 -> 49 [penwidth=1, color=black];\n\t51 -> 56 [penwidth=1, color=black];\n\t51 -> 73 [penwidth=\"1.6931471805599454\", color=black];\n\t51 -> 74 [penwidth=1, color=black];\n\t51 -> 75 [penwidth=1, color=black];\n\t51 -> 79 [penwidth=\"1.6931471805599454\", color=black];\n\t51 -> 80 [penwidth=1, color=black];\n\t62 -> 41 [penwidth=1, color=chartreuse];\n\t63 -> 50 [penwidth=1, color=black];\n\t63 -> 51 [penwidth=1, color=black];\n\t63 -> 57 [penwidth=1, color=black];\n\t63 -> 58 [penwidth=1, color=black];\n\t63 -> 59 [penwidth=1, color=black];\n\t63 -> 60 [penwidth=1, color=black];\n\t63 -> 61 [penwidth=1, color=black];\n\t63 -> 68 [penwidth=1, color=black];\n\t63 -> 70 [penwidth=1, color=black];\n\t63 -> 71 [penwidth=1, color=black];\n\t63 -> 76 [penwidth=\"2.6094379124341005\", color=black];\n\t63 -> 78 [penwidth=1, color=black];\n\t64 -> 32 [penwidth=1, color=black];\n\t64 -> 43 [penwidth=1, color=black];\n\t64 -> 46 [penwidth=1, color=black];\n\t64 -> 62 [penwidth=1, color=black];\n\t64 -> 63 [penwidth=1, color=black];\n\t64 -> 74 [penwidth=1, color=black];\n\t65 -> 31 [penwidth=1, color=black];\n\t65 -> 33 [penwidth=1, color=black];\n\t65 -> 48 [penwidth=1, color=black];\n\t65 -> 49 [penwidth=1, color=black];\n\t65 -> 57 [penwidth=1, color=black];\n\t65 -> 58 [penwidth=1, color=black];\n\t65 -> 59 [penwidth=1, color=black];\n\t65 -> 60 [penwidth=1, color=black];\n\t65 -> 61 [penwidth=1, color=black];\n\t65 -> 66 [penwidth=1, color=black];\n\t65 -> 67 [penwidth=1, color=black];\n\t65 -> 69 [penwidth=1, color=black];\n\t65 -> 77 [penwidth=1, color=black];\n\t65 -> 81 [penwidth=1, color=black];\n\t68 -> 33 [penwidth=1, color=black];\n\t68 -> 42 [penwidth=1, color=black];\n\t68 -> 46 [penwidth=1, color=black];\n\t68 -> 48 [penwidth=\"2.09861228866811\", color=black];\n\t68 -> 53 [penwidth=1, color=black];\n\t68 -> 56 [penwidth=1, color=black];\n\t68 -> 67 [penwidth=\"1.6931471805599454\", color=black];\n\t68 -> 69 [penwidth=1, color=black];\n\t68 -> 73 [penwidth=1, color=black];\n\t68 -> 74 [penwidth=1, color=black];\n\t68 -> 75 [penwidth=1, color=black];\n\t68 -> 77 [penwidth=1, color=black];\n\t68 -> 78 [penwidth=1, color=black];\n\t70 -> 42 [penwidth=1, color=black];\n\t70 -> 46 [penwidth=1, color=black];\n\t70 -> 48 [penwidth=\"1.6931471805599454\", color=black];\n\t70 -> 74 [penwidth=1, color=black];\n\t70 -> 75 [penwidth=\"1.6931471805599454\", color=black];\n\t71 -> 42 [penwidth=1, color=black];\n\t71 -> 46 [penwidth=1, color=black];\n\t71 -> 48 [penwidth=1, color=black];\n\t71 -> 66 [penwidth=1, color=black];\n\t71 -> 73 [penwidth=1, color=black];\n\t71 -> 74 [penwidth=1, color=black];\n\t71 -> 75 [penwidth=1, color=black];\n\t71 -> 78 [penwidth=1, color=black];\n\t72 -> 34 [penwidth=1, color=black];\n\t72 -> 36 [penwidth=1, color=black];\n\t72 -> 38 [penwidth=1, color=black];\n\t76 -> 42 [penwidth=1, color=black];\n\t76 -> 46 [penwidth=1, color=black];\n\t76 -> 48 [penwidth=1, color=black];\n\t76 -> 55 [penwidth=1, color=black];\n\t76 -> 74 [penwidth=1, color=black];\n\t76 -> 75 [penwidth=1, color=black];\n\t79 -> 33 [penwidth=1, color=black];\n\t79 -> 34 [penwidth=1, color=black];\n\t79 -> 35 [penwidth=1, color=black];\n\t79 -> 36 [penwidth=1, color=black];\n\t79 -> 37 [penwidth=1, color=black];\n\t79 -> 38 [penwidth=1, color=black];\n\t80 -> 77 [penwidth=1, color=black];\n\t80 -> 79 [penwidth=1, color=black];\n\t404 -> 82 [penwidth=1, color=black];\n\t404 -> 99 [penwidth=1, color=black];\n\t404 -> 429 [penwidth=1, color=black];\n\t405 -> 96 [penwidth=1, color=black];\n\t405 -> 120 [penwidth=1, color=black];\n\t405 -> 124 [penwidth=1, color=black];\n\t405 -> 127 [penwidth=1, color=black];\n\t405 -> 138 [penwidth=1, color=black];\n\t405 -> 158 [penwidth=1, color=black];\n\t405 -> 195 [penwidth=1, color=black];\n\t405 -> 331 [penwidth=1, color=black];\n\t405 -> 353 [penwidth=1, color=black];\n\t406 -> 83 [penwidth=1, color=black];\n\t406 -> 209 [penwidth=1, color=black];\n\t406 -> 210 [penwidth=1, color=black];\n\t406 -> 1883 [penwidth=1, color=black];\n\t407 -> 299 [penwidth=1, color=black];\n\t408 -> 82 [penwidth=1, color=black];\n\t408 -> 119 [penwidth=1, color=black];\n\t408 -> 429 [penwidth=1, color=black];\n\t410 -> 82 [penwidth=1, color=black];\n\t410 -> 128 [penwidth=1, color=black];\n\t410 -> 429 [penwidth=1, color=black];\n\t411 -> 82 [penwidth=1, color=black];\n\t411 -> 137 [penwidth=1, color=black];\n\t411 -> 429 [penwidth=1, color=black];\n\t412 -> 433 [penwidth=1, color=chartreuse];\n\t413 -> 82 [penwidth=1, color=black];\n\t413 -> 267 [penwidth=1, color=black];\n\t413 -> 436 [penwidth=1, color=black];\n\t417 -> 82 [penwidth=1, color=black];\n\t417 -> 84 [penwidth=1, color=black];\n\t417 -> 159 [penwidth=1, color=black];\n\t417 -> 232 [penwidth=1, color=black];\n\t417 -> 393 [penwidth=1, color=black];\n\t418 -> 82 [penwidth=1, color=black];\n\t418 -> 191 [penwidth=1, color=black];\n\t418 -> 429 [penwidth=1, color=black];\n\t419 -> 82 [penwidth=1, color=black];\n\t419 -> 137 [penwidth=1, color=black];\n\t419 -> 191 [penwidth=1, color=black];\n\t419 -> 429 [penwidth=\"1.6931471805599454\", color=black];\n\t420 -> 82 [penwidth=1, color=black];\n\t420 -> 191 [penwidth=1, color=black];\n\t420 -> 267 [penwidth=1, color=black];\n\t420 -> 429 [penwidth=1, color=black];\n\t420 -> 436 [penwidth=1, color=black];\n\t421 -> 82 [penwidth=1, color=black];\n\t421 -> 137 [penwidth=1, color=black];\n\t421 -> 191 [penwidth=1, color=black];\n\t421 -> 429 [penwidth=1, color=black];\n\t421 -> 436 [penwidth=1, color=black];\n\t427 -> 333 [penwidth=1, color=black];\n\t428 -> 82 [penwidth=1, color=black];\n\t428 -> 254 [penwidth=1, color=black];\n\t428 -> 429 [penwidth=1, color=black];\n\t429 -> 84 [penwidth=1, color=black];\n\t429 -> 98 [penwidth=1, color=black];\n\t429 -> 159 [penwidth=1, color=black];\n\t430 -> 82 [penwidth=1, color=black];\n\t430 -> 267 [penwidth=1, color=black];\n\t430 -> 429 [penwidth=1, color=black];\n\t431 -> 409 [penwidth=1, color=black];\n\t432 -> 82 [penwidth=1, color=black];\n\t432 -> 99 [penwidth=1, color=black];\n\t432 -> 436 [penwidth=1, color=black];\n\t433 -> 82 [penwidth=1, color=black];\n\t433 -> 128 [penwidth=1, color=black];\n\t433 -> 436 [penwidth=1, color=black];\n\t434 -> 82 [penwidth=1, color=black];\n\t434 -> 84 [penwidth=1, color=black];\n\t434 -> 98 [penwidth=1, color=black];\n\t434 -> 137 [penwidth=1, color=black];\n\t434 -> 275 [penwidth=1, color=black];\n\t435 -> 605 [penwidth=1, color=chartreuse];\n\t436 -> 84 [penwidth=1, color=black];\n\t436 -> 98 [penwidth=1, color=black];\n\t436 -> 275 [penwidth=1, color=black];\n\t439 -> 316 [penwidth=1, color=black];\n\t439 -> 317 [penwidth=1, color=black];\n\t439 -> 1376 [penwidth=1, color=black];\n\t439 -> 1429 [penwidth=1, color=black];\n\t441 -> 122 [penwidth=1, color=black];\n\t441 -> 1429 [penwidth=1, color=black];\n\t442 -> 258 [penwidth=1, color=black];\n\t442 -> 1384 [penwidth=1, color=black];\n\t442 -> 1435 [penwidth=1, color=black];\n\t443 -> 263 [penwidth=1, color=black];\n\t443 -> 400 [penwidth=1, color=black];\n\t444 -> 187 [penwidth=1, color=black];\n\t444 -> 321 [penwidth=1, color=black];\n\t444 -> 365 [penwidth=1, color=black];\n\t444 -> 1392 [penwidth=1, color=black];\n\t445 -> 209 [penwidth=1, color=black];\n\t445 -> 406 [penwidth=1, color=black];\n\t445 -> 459 [penwidth=1, color=black];\n\t446 -> 206 [penwidth=1, color=black];\n\t446 -> 210 [penwidth=1, color=black];\n\t446 -> 1429 [penwidth=1, color=black];\n\t446 -> 1434 [penwidth=1, color=black];\n\t447 -> 208 [penwidth=1, color=black];\n\t447 -> 211 [penwidth=1, color=black];\n\t447 -> 460 [penwidth=1, color=black];\n\t447 -> 1429 [penwidth=1, color=black];\n\t448 -> 1429 [penwidth=1, color=black];\n\t449 -> 1429 [penwidth=1, color=black];\n\t450 -> 1429 [penwidth=1, color=black];\n\t451 -> 1429 [penwidth=1, color=black];\n\t452 -> 198 [penwidth=1, color=black];\n\t452 -> 264 [penwidth=1, color=black];\n\t452 -> 270 [penwidth=1, color=black];\n\t452 -> 1383 [penwidth=1, color=black];\n\t452 -> 1384 [penwidth=1, color=black];\n\t452 -> 1871 [penwidth=1, color=black];\n\t453 -> 1429 [penwidth=1, color=black];\n\t454 -> 333 [penwidth=\"1.6931471805599454\", color=black];\n\t454 -> 457 [penwidth=1, color=black];\n\t454 -> 1429 [penwidth=1, color=black];\n\t455 -> 405 [penwidth=1, color=black];\n\t455 -> 1429 [penwidth=1, color=black];\n\t455 -> 1431 [penwidth=1, color=black];\n\t456 -> 1429 [penwidth=1, color=black];\n\t457 -> 466 [penwidth=1, color=black];\n\t457 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t457 -> 1394 [penwidth=1, color=black];\n\t458 -> 409 [penwidth=1, color=black];\n\t458 -> 1396 [penwidth=1, color=black];\n\t459 -> 458 [penwidth=1, color=black];\n\t459 -> 1429 [penwidth=1, color=black];\n\t459 -> 1434 [penwidth=1, color=black];\n\t460 -> 409 [penwidth=1, color=black];\n\t460 -> 1373 [penwidth=1, color=black];\n\t462 -> 152 [penwidth=1, color=black];\n\t462 -> 516 [penwidth=1, color=black];\n\t462 -> 1429 [penwidth=1, color=black];\n\t463 -> 1429 [penwidth=1, color=black];\n\t464 -> 407 [penwidth=1, color=black];\n\t464 -> 1376 [penwidth=1, color=black];\n\t465 -> 516 [penwidth=1, color=black];\n\t465 -> 1396 [penwidth=1, color=black];\n\t466 -> 1381 [penwidth=1, color=black];\n\t466 -> 1386 [penwidth=1, color=black];\n\t466 -> 1396 [penwidth=1, color=black];\n\t466 -> 1428 [penwidth=1, color=black];\n\t466 -> 1435 [penwidth=1, color=black];\n\t467 -> 159 [penwidth=1, color=black];\n\t467 -> 275 [penwidth=1, color=black];\n\t467 -> 1373 [penwidth=1, color=black];\n\t467 -> 1871 [penwidth=1, color=black];\n\t468 -> 84 [penwidth=1, color=black];\n\t469 -> 99 [penwidth=1, color=black];\n\t469 -> 119 [penwidth=1, color=black];\n\t469 -> 128 [penwidth=1, color=black];\n\t469 -> 137 [penwidth=1, color=black];\n\t469 -> 191 [penwidth=1, color=black];\n\t469 -> 254 [penwidth=1, color=black];\n\t469 -> 267 [penwidth=1, color=black];\n\t469 -> 377 [penwidth=1, color=black];\n\t469 -> 393 [penwidth=1, color=black];\n\t469 -> 1435 [penwidth=\"3.1972245773362196\", color=black];\n\t470 -> 98 [penwidth=1, color=black];\n\t470 -> 232 [penwidth=1, color=black];\n\t470 -> 328 [penwidth=1, color=black];\n\t470 -> 1373 [penwidth=1, color=black];\n\t470 -> 1871 [penwidth=1, color=black];\n\t471 -> 82 [penwidth=1, color=black];\n\t471 -> 518 [penwidth=1, color=black];\n\t472 -> 316 [penwidth=1, color=black];\n\t472 -> 317 [penwidth=1, color=black];\n\t472 -> 1376 [penwidth=1, color=black];\n\t473 -> 85 [penwidth=1, color=black];\n\t473 -> 86 [penwidth=1, color=black];\n\t473 -> 87 [penwidth=1, color=black];\n\t473 -> 88 [penwidth=1, color=black];\n\t473 -> 93 [penwidth=1, color=black];\n\t473 -> 94 [penwidth=1, color=black];\n\t473 -> 104 [penwidth=1, color=black];\n\t473 -> 105 [penwidth=1, color=black];\n\t473 -> 108 [penwidth=1, color=black];\n\t473 -> 109 [penwidth=1, color=black];\n\t473 -> 110 [penwidth=1, color=black];\n\t473 -> 111 [penwidth=1, color=black];\n\t473 -> 113 [penwidth=1, color=black];\n\t473 -> 117 [penwidth=1, color=black];\n\t473 -> 118 [penwidth=1, color=black];\n\t473 -> 121 [penwidth=1, color=black];\n\t473 -> 123 [penwidth=1, color=black];\n\t473 -> 125 [penwidth=1, color=black];\n\t473 -> 126 [penwidth=1, color=black];\n\t473 -> 130 [penwidth=1, color=black];\n\t473 -> 131 [penwidth=1, color=black];\n\t473 -> 132 [penwidth=1, color=black];\n\t473 -> 133 [penwidth=1, color=black];\n\t473 -> 134 [penwidth=1, color=black];\n\t473 -> 135 [penwidth=1, color=black];\n\t473 -> 141 [penwidth=1, color=black];\n\t473 -> 142 [penwidth=1, color=black];\n\t473 -> 143 [penwidth=1, color=black];\n\t473 -> 144 [penwidth=1, color=black];\n\t473 -> 145 [penwidth=1, color=black];\n\t473 -> 149 [penwidth=1, color=black];\n\t473 -> 154 [penwidth=1, color=black];\n\t473 -> 160 [penwidth=1, color=black];\n\t473 -> 163 [penwidth=1, color=black];\n\t473 -> 164 [penwidth=1, color=black];\n\t473 -> 165 [penwidth=1, color=black];\n\t473 -> 166 [penwidth=1, color=black];\n\t473 -> 167 [penwidth=1, color=black];\n\t473 -> 175 [penwidth=1, color=black];\n\t473 -> 176 [penwidth=1, color=black];\n\t473 -> 177 [penwidth=1, color=black];\n\t473 -> 178 [penwidth=1, color=black];\n\t473 -> 179 [penwidth=1, color=black];\n\t473 -> 180 [penwidth=1, color=black];\n\t473 -> 181 [penwidth=1, color=black];\n\t473 -> 182 [penwidth=1, color=black];\n\t473 -> 188 [penwidth=1, color=black];\n\t473 -> 189 [penwidth=1, color=black];\n\t473 -> 190 [penwidth=1, color=black];\n\t473 -> 198 [penwidth=1, color=black];\n\t473 -> 202 [penwidth=1, color=black];\n\t473 -> 204 [penwidth=1, color=black];\n\t473 -> 205 [penwidth=1, color=black];\n\t473 -> 207 [penwidth=1, color=black];\n\t473 -> 212 [penwidth=1, color=black];\n\t473 -> 213 [penwidth=1, color=black];\n\t473 -> 214 [penwidth=1, color=black];\n\t473 -> 215 [penwidth=1, color=black];\n\t473 -> 216 [penwidth=1, color=black];\n\t473 -> 217 [penwidth=1, color=black];\n\t473 -> 218 [penwidth=1, color=black];\n\t473 -> 219 [penwidth=1, color=black];\n\t473 -> 220 [penwidth=1, color=black];\n\t473 -> 221 [penwidth=1, color=black];\n\t473 -> 222 [penwidth=1, color=black];\n\t473 -> 223 [penwidth=1, color=black];\n\t473 -> 224 [penwidth=1, color=black];\n\t473 -> 226 [penwidth=1, color=black];\n\t473 -> 227 [penwidth=1, color=black];\n\t473 -> 228 [penwidth=1, color=black];\n\t473 -> 229 [penwidth=1, color=black];\n\t473 -> 230 [penwidth=1, color=black];\n\t473 -> 233 [penwidth=1, color=black];\n\t473 -> 234 [penwidth=1, color=black];\n\t473 -> 235 [penwidth=1, color=black];\n\t473 -> 239 [penwidth=1, color=black];\n\t473 -> 245 [penwidth=1, color=black];\n\t473 -> 246 [penwidth=1, color=black];\n\t473 -> 248 [penwidth=1, color=black];\n\t473 -> 249 [penwidth=1, color=black];\n\t473 -> 251 [penwidth=1, color=black];\n\t473 -> 252 [penwidth=1, color=black];\n\t473 -> 253 [penwidth=1, color=black];\n\t473 -> 259 [penwidth=1, color=black];\n\t473 -> 265 [penwidth=1, color=black];\n\t473 -> 268 [penwidth=1, color=black];\n\t473 -> 269 [penwidth=1, color=black];\n\t473 -> 272 [penwidth=1, color=black];\n\t473 -> 273 [penwidth=1, color=black];\n\t473 -> 276 [penwidth=1, color=black];\n\t473 -> 277 [penwidth=1, color=black];\n\t473 -> 278 [penwidth=1, color=black];\n\t473 -> 279 [penwidth=1, color=black];\n\t473 -> 280 [penwidth=1, color=black];\n\t473 -> 282 [penwidth=1, color=black];\n\t473 -> 287 [penwidth=1, color=black];\n\t473 -> 289 [penwidth=1, color=black];\n\t473 -> 290 [penwidth=1, color=black];\n\t473 -> 291 [penwidth=1, color=black];\n\t473 -> 293 [penwidth=1, color=black];\n\t473 -> 294 [penwidth=1, color=black];\n\t473 -> 296 [penwidth=1, color=black];\n\t473 -> 297 [penwidth=1, color=black];\n\t473 -> 305 [penwidth=1, color=black];\n\t473 -> 308 [penwidth=1, color=black];\n\t473 -> 309 [penwidth=1, color=black];\n\t473 -> 312 [penwidth=1, color=black];\n\t473 -> 313 [penwidth=1, color=black];\n\t473 -> 314 [penwidth=1, color=black];\n\t473 -> 315 [penwidth=1, color=black];\n\t473 -> 319 [penwidth=1, color=black];\n\t473 -> 323 [penwidth=1, color=black];\n\t473 -> 324 [penwidth=1, color=black];\n\t473 -> 327 [penwidth=1, color=black];\n\t473 -> 329 [penwidth=1, color=black];\n\t473 -> 330 [penwidth=1, color=black];\n\t473 -> 334 [penwidth=1, color=black];\n\t473 -> 336 [penwidth=1, color=black];\n\t473 -> 337 [penwidth=1, color=black];\n\t473 -> 340 [penwidth=1, color=black];\n\t473 -> 342 [penwidth=1, color=black];\n\t473 -> 344 [penwidth=1, color=black];\n\t473 -> 345 [penwidth=1, color=black];\n\t473 -> 347 [penwidth=1, color=black];\n\t473 -> 348 [penwidth=1, color=black];\n\t473 -> 350 [penwidth=1, color=black];\n\t473 -> 351 [penwidth=1, color=black];\n\t473 -> 352 [penwidth=1, color=black];\n\t473 -> 354 [penwidth=1, color=black];\n\t473 -> 357 [penwidth=1, color=black];\n\t473 -> 359 [penwidth=1, color=black];\n\t473 -> 361 [penwidth=1, color=black];\n\t473 -> 366 [penwidth=1, color=black];\n\t473 -> 367 [penwidth=1, color=black];\n\t473 -> 370 [penwidth=1, color=black];\n\t473 -> 371 [penwidth=1, color=black];\n\t473 -> 372 [penwidth=1, color=black];\n\t473 -> 373 [penwidth=1, color=black];\n\t473 -> 374 [penwidth=1, color=black];\n\t473 -> 375 [penwidth=1, color=black];\n\t473 -> 376 [penwidth=1, color=black];\n\t473 -> 379 [penwidth=1, color=black];\n\t473 -> 385 [penwidth=1, color=black];\n\t473 -> 386 [penwidth=1, color=black];\n\t473 -> 387 [penwidth=1, color=black];\n\t473 -> 388 [penwidth=1, color=black];\n\t473 -> 394 [penwidth=1, color=black];\n\t473 -> 395 [penwidth=1, color=black];\n\t473 -> 396 [penwidth=1, color=black];\n\t473 -> 398 [penwidth=1, color=black];\n\t473 -> 399 [penwidth=1, color=black];\n\t473 -> 401 [penwidth=1, color=black];\n\t473 -> 1395 [penwidth=1, color=black];\n\t473 -> 1397 [penwidth=\"5.736198448394496\", color=black];\n\t473 -> 1398 [penwidth=\"3.833213344056216\", color=black];\n\t473 -> 1399 [penwidth=\"2.9459101490553135\", color=black];\n\t473 -> 1400 [penwidth=\"2.791759469228055\", color=black];\n\t473 -> 1434 [penwidth=1, color=black];\n\t474 -> 173 [penwidth=1, color=black];\n\t474 -> 237 [penwidth=1, color=black];\n\t474 -> 255 [penwidth=1, color=black];\n\t474 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t475 -> 142 [penwidth=1, color=black];\n\t475 -> 185 [penwidth=1, color=black];\n\t475 -> 256 [penwidth=1, color=black];\n\t475 -> 1435 [penwidth=1, color=black];\n\t475 -> 1871 [penwidth=1, color=black];\n\t476 -> 122 [penwidth=1, color=black];\n\t476 -> 281 [penwidth=1, color=black];\n\t476 -> 464 [penwidth=1, color=black];\n\t477 -> 92 [penwidth=1, color=black];\n\t477 -> 97 [penwidth=1, color=black];\n\t477 -> 168 [penwidth=1, color=black];\n\t477 -> 257 [penwidth=1, color=black];\n\t477 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t478 -> 114 [penwidth=1, color=black];\n\t478 -> 236 [penwidth=\"1.6931471805599454\", color=black];\n\t478 -> 302 [penwidth=1, color=black];\n\t478 -> 357 [penwidth=\"1.6931471805599454\", color=black];\n\t478 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t478 -> 1871 [penwidth=1, color=black];\n\t479 -> 263 [penwidth=1, color=black];\n\t479 -> 400 [penwidth=1, color=black];\n\t480 -> 199 [penwidth=1, color=black];\n\t480 -> 200 [penwidth=1, color=black];\n\t480 -> 201 [penwidth=1, color=black];\n\t480 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t481 -> 187 [penwidth=1, color=black];\n\t481 -> 321 [penwidth=1, color=black];\n\t481 -> 365 [penwidth=1, color=black];\n\t481 -> 1392 [penwidth=1, color=black];\n\t482 -> 406 [penwidth=1, color=black];\n\t482 -> 458 [penwidth=1, color=black];\n\t483 -> 206 [penwidth=1, color=black];\n\t483 -> 460 [penwidth=1, color=black];\n\t484 -> 208 [penwidth=1, color=black];\n\t484 -> 211 [penwidth=1, color=black];\n\t484 -> 460 [penwidth=1, color=black];\n\t485 -> 184 [penwidth=1, color=black];\n\t485 -> 196 [penwidth=1, color=black];\n\t485 -> 203 [penwidth=1, color=black];\n\t485 -> 244 [penwidth=1, color=black];\n\t485 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t486 -> 107 [penwidth=1, color=black];\n\t486 -> 346 [penwidth=1, color=black];\n\t486 -> 368 [penwidth=1, color=black];\n\t486 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t487 -> 103 [penwidth=1, color=black];\n\t487 -> 146 [penwidth=1, color=black];\n\t487 -> 266 [penwidth=1, color=black];\n\t487 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t488 -> 115 [penwidth=1, color=black];\n\t488 -> 197 [penwidth=1, color=black];\n\t488 -> 204 [penwidth=1, color=black];\n\t488 -> 307 [penwidth=1, color=black];\n\t488 -> 326 [penwidth=1, color=black];\n\t488 -> 338 [penwidth=1, color=black];\n\t488 -> 339 [penwidth=1, color=black];\n\t488 -> 397 [penwidth=1, color=black];\n\t488 -> 1433 [penwidth=1, color=black];\n\t488 -> 1435 [penwidth=\"2.9459101490553135\", color=black];\n\t489 -> 135 [penwidth=1, color=black];\n\t489 -> 136 [penwidth=1, color=black];\n\t489 -> 286 [penwidth=1, color=black];\n\t489 -> 1383 [penwidth=1, color=black];\n\t489 -> 1871 [penwidth=1, color=black];\n\t490 -> 283 [penwidth=1, color=black];\n\t490 -> 284 [penwidth=1, color=black];\n\t490 -> 285 [penwidth=1, color=black];\n\t490 -> 288 [penwidth=1, color=black];\n\t490 -> 1373 [penwidth=1, color=black];\n\t490 -> 1433 [penwidth=1, color=black];\n\t490 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t491 -> 95 [penwidth=1, color=black];\n\t491 -> 102 [penwidth=1, color=black];\n\t491 -> 231 [penwidth=1, color=black];\n\t491 -> 238 [penwidth=1, color=black];\n\t491 -> 318 [penwidth=1, color=black];\n\t491 -> 332 [penwidth=1, color=black];\n\t491 -> 378 [penwidth=1, color=black];\n\t491 -> 380 [penwidth=1, color=black];\n\t491 -> 1435 [penwidth=\"3.0794415416798357\", color=black];\n\t492 -> 299 [penwidth=1, color=black];\n\t492 -> 1373 [penwidth=1, color=black];\n\t492 -> 1376 [penwidth=1, color=black];\n\t492 -> 1394 [penwidth=1, color=black];\n\t493 -> 300 [penwidth=1, color=black];\n\t493 -> 356 [penwidth=1, color=black];\n\t493 -> 358 [penwidth=1, color=black];\n\t494 -> 151 [penwidth=\"1.6931471805599454\", color=black];\n\t494 -> 260 [penwidth=\"1.6931471805599454\", color=black];\n\t494 -> 268 [penwidth=\"1.6931471805599454\", color=black];\n\t494 -> 1373 [penwidth=1, color=black];\n\t494 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t494 -> 1871 [penwidth=1, color=black];\n\t495 -> 169 [penwidth=1, color=black];\n\t495 -> 170 [penwidth=1, color=black];\n\t495 -> 171 [penwidth=1, color=black];\n\t495 -> 172 [penwidth=1, color=black];\n\t495 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t496 -> 247 [penwidth=1, color=black];\n\t496 -> 250 [penwidth=1, color=black];\n\t496 -> 335 [penwidth=1, color=black];\n\t496 -> 349 [penwidth=1, color=black];\n\t496 -> 355 [penwidth=1, color=black];\n\t496 -> 1435 [penwidth=\"2.6094379124341005\", color=black];\n\t497 -> 89 [penwidth=1, color=black];\n\t497 -> 90 [penwidth=1, color=black];\n\t497 -> 116 [penwidth=1, color=black];\n\t497 -> 150 [penwidth=1, color=black];\n\t497 -> 156 [penwidth=1, color=black];\n\t497 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t498 -> 152 [penwidth=1, color=black];\n\t498 -> 161 [penwidth=1, color=black];\n\t498 -> 225 [penwidth=1, color=black];\n\t498 -> 304 [penwidth=1, color=black];\n\t498 -> 465 [penwidth=\"2.09861228866811\", color=black];\n\t498 -> 1350 [penwidth=1, color=black];\n\t498 -> 1392 [penwidth=1, color=black];\n\t498 -> 1393 [penwidth=1, color=black];\n\t498 -> 1440 [penwidth=1, color=black];\n\t499 -> 322 [penwidth=1, color=black];\n\t499 -> 464 [penwidth=\"1.6931471805599454\", color=black];\n\t499 -> 1375 [penwidth=1, color=black];\n\t500 -> 198 [penwidth=1, color=black];\n\t500 -> 264 [penwidth=1, color=black];\n\t500 -> 270 [penwidth=1, color=black];\n\t500 -> 1383 [penwidth=1, color=black];\n\t500 -> 1871 [penwidth=1, color=black];\n\t501 -> 311 [penwidth=1, color=black];\n\t501 -> 325 [penwidth=1, color=black];\n\t501 -> 341 [penwidth=1, color=black];\n\t501 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t502 -> 153 [penwidth=1, color=black];\n\t502 -> 155 [penwidth=1, color=black];\n\t502 -> 157 [penwidth=1, color=black];\n\t502 -> 261 [penwidth=1, color=black];\n\t502 -> 387 [penwidth=1, color=black];\n\t502 -> 1435 [penwidth=\"2.6094379124341005\", color=black];\n\t503 -> 100 [penwidth=1, color=black];\n\t503 -> 101 [penwidth=1, color=black];\n\t503 -> 106 [penwidth=1, color=black];\n\t503 -> 112 [penwidth=1, color=black];\n\t503 -> 129 [penwidth=1, color=black];\n\t503 -> 139 [penwidth=1, color=black];\n\t503 -> 140 [penwidth=1, color=black];\n\t503 -> 147 [penwidth=1, color=black];\n\t503 -> 148 [penwidth=1, color=black];\n\t503 -> 162 [penwidth=1, color=black];\n\t503 -> 183 [penwidth=1, color=black];\n\t503 -> 186 [penwidth=1, color=black];\n\t503 -> 192 [penwidth=1, color=black];\n\t503 -> 193 [penwidth=1, color=black];\n\t503 -> 194 [penwidth=1, color=black];\n\t503 -> 240 [penwidth=1, color=black];\n\t503 -> 241 [penwidth=1, color=black];\n\t503 -> 242 [penwidth=1, color=black];\n\t503 -> 243 [penwidth=1, color=black];\n\t503 -> 271 [penwidth=1, color=black];\n\t503 -> 274 [penwidth=1, color=black];\n\t503 -> 292 [penwidth=1, color=black];\n\t503 -> 295 [penwidth=1, color=black];\n\t503 -> 298 [penwidth=1, color=black];\n\t503 -> 301 [penwidth=1, color=black];\n\t503 -> 303 [penwidth=1, color=black];\n\t503 -> 320 [penwidth=1, color=black];\n\t503 -> 343 [penwidth=1, color=black];\n\t503 -> 369 [penwidth=1, color=black];\n\t503 -> 381 [penwidth=1, color=black];\n\t503 -> 382 [penwidth=1, color=black];\n\t503 -> 384 [penwidth=1, color=black];\n\t503 -> 1435 [penwidth=\"4.401197381662156\", color=black];\n\t503 -> 1436 [penwidth=\"1.6931471805599454\", color=black];\n\t504 -> 91 [penwidth=1, color=black];\n\t504 -> 174 [penwidth=1, color=black];\n\t504 -> 262 [penwidth=1, color=black];\n\t504 -> 306 [penwidth=1, color=black];\n\t504 -> 310 [penwidth=1, color=black];\n\t504 -> 360 [penwidth=1, color=black];\n\t504 -> 383 [penwidth=1, color=black];\n\t504 -> 1435 [penwidth=\"2.9459101490553135\", color=black];\n\t505 -> 356 [penwidth=1, color=black];\n\t505 -> 1373 [penwidth=1, color=black];\n\t505 -> 1378 [penwidth=1, color=black];\n\t505 -> 1394 [penwidth=1, color=black];\n\t505 -> 1440 [penwidth=\"1.6931471805599454\", color=black];\n\t506 -> 362 [penwidth=1, color=black];\n\t506 -> 363 [penwidth=1, color=black];\n\t506 -> 364 [penwidth=1, color=black];\n\t507 -> 333 [penwidth=1, color=black];\n\t507 -> 457 [penwidth=1, color=black];\n\t507 -> 1439 [penwidth=1, color=black];\n\t508 -> 405 [penwidth=1, color=black];\n\t508 -> 466 [penwidth=1, color=black];\n\t509 -> 389 [penwidth=1, color=black];\n\t509 -> 390 [penwidth=1, color=black];\n\t509 -> 392 [penwidth=1, color=black];\n\t509 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t510 -> 391 [penwidth=1, color=black];\n\t510 -> 1394 [penwidth=\"2.09861228866811\", color=black];\n\t511 -> 1440 [penwidth=1, color=black];\n\t512 -> 1373 [penwidth=1, color=black];\n\t512 -> 1442 [penwidth=\"1.6931471805599454\", color=black];\n\t513 -> 1373 [penwidth=1, color=black];\n\t514 -> 1394 [penwidth=1, color=black];\n\t515 -> 599 [penwidth=1, color=black];\n\t515 -> 1363 [penwidth=1, color=black];\n\t515 -> 1454 [penwidth=1, color=black];\n\t517 -> 85 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 86 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 87 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 88 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 93 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 94 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 104 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 105 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 108 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 109 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 110 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 111 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 113 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 117 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 118 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 121 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 123 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 125 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 126 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 130 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 131 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 132 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 133 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 134 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 141 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 143 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 144 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 145 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 149 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 154 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 160 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 163 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 164 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 165 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 166 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 167 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 175 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 176 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 177 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 178 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 179 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 180 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 181 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 182 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 188 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 189 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 190 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 202 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 205 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 207 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 212 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 213 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 214 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 215 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 216 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 217 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 218 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 219 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 220 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 221 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 222 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 223 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 224 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 226 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 227 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 228 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 229 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 230 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 233 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 234 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 235 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 239 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 245 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 246 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 248 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 249 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 251 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 252 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 253 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 259 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 265 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 269 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 272 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 273 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 276 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 277 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 278 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 279 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 280 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 282 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 287 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 289 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 290 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 291 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 293 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 294 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 296 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 297 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 305 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 308 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 309 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 312 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 313 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 314 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 315 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 319 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 323 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 324 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 327 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 329 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 330 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 334 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 336 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 337 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 340 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 342 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 344 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 345 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 347 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 348 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 350 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 351 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 352 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 354 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 359 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 361 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 366 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 367 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 370 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 371 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 372 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 373 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 374 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 375 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 376 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 379 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 385 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 386 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 388 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 394 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 395 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 396 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 398 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 399 [penwidth=\"1.6931471805599454\", color=black];\n\t517 -> 401 [penwidth=\"1.6931471805599454\", color=black];\n\t518 -> 412 [penwidth=1, color=black];\n\t518 -> 413 [penwidth=1, color=black];\n\t518 -> 417 [penwidth=1, color=black];\n\t518 -> 420 [penwidth=1, color=black];\n\t518 -> 435 [penwidth=1, color=black];\n\t518 -> 1435 [penwidth=\"2.6094379124341005\", color=black];\n\t519 -> 82 [penwidth=1, color=black];\n\t519 -> 377 [penwidth=1, color=black];\n\t519 -> 429 [penwidth=1, color=black];\n\t520 -> 316 [penwidth=1, color=black];\n\t520 -> 317 [penwidth=1, color=black];\n\t521 -> 122 [penwidth=1, color=black];\n\t521 -> 281 [penwidth=1, color=black];\n\t522 -> 258 [penwidth=1, color=black];\n\t523 -> 263 [penwidth=1, color=black];\n\t523 -> 400 [penwidth=1, color=black];\n\t524 -> 187 [penwidth=1, color=black];\n\t524 -> 321 [penwidth=1, color=black];\n\t524 -> 365 [penwidth=1, color=black];\n\t525 -> 210 [penwidth=1, color=black];\n\t526 -> 206 [penwidth=1, color=black];\n\t527 -> 208 [penwidth=1, color=black];\n\t529 -> 300 [penwidth=1, color=black];\n\t529 -> 358 [penwidth=1, color=black];\n\t530 -> 152 [penwidth=1, color=black];\n\t530 -> 516 [penwidth=1, color=black];\n\t530 -> 1463 [penwidth=1, color=black];\n\t532 -> 264 [penwidth=1, color=black];\n\t534 -> 333 [penwidth=1, color=black];\n\t535 -> 120 [penwidth=1, color=black];\n\t538 -> 225 [penwidth=1, color=black];\n\t542 -> 213 [penwidth=1, color=black];\n\t542 -> 365 [penwidth=1, color=black];\n\t543 -> 187 [penwidth=1, color=black];\n\t543 -> 213 [penwidth=1, color=black];\n\t544 -> 1266 [penwidth=1, color=black];\n\t545 -> 1268 [penwidth=1, color=black];\n\t547 -> 304 [penwidth=1, color=black];\n\t549 -> 213 [penwidth=1, color=black];\n\t549 -> 321 [penwidth=1, color=black];\n\t550 -> 159 [penwidth=1, color=black];\n\t550 -> 275 [penwidth=1, color=black];\n\t551 -> 84 [penwidth=1, color=black];\n\t552 -> 99 [penwidth=1, color=black];\n\t552 -> 119 [penwidth=1, color=black];\n\t552 -> 128 [penwidth=1, color=black];\n\t552 -> 137 [penwidth=1, color=black];\n\t552 -> 191 [penwidth=1, color=black];\n\t552 -> 254 [penwidth=1, color=black];\n\t552 -> 267 [penwidth=1, color=black];\n\t552 -> 377 [penwidth=1, color=black];\n\t552 -> 393 [penwidth=1, color=black];\n\t553 -> 98 [penwidth=1, color=black];\n\t553 -> 232 [penwidth=1, color=black];\n\t553 -> 328 [penwidth=1, color=black];\n\t554 -> 82 [penwidth=1, color=black];\n\t555 -> 316 [penwidth=1, color=black];\n\t555 -> 317 [penwidth=1, color=black];\n\t555 -> 1455 [penwidth=1, color=black];\n\t556 -> 85 [penwidth=1, color=black];\n\t556 -> 86 [penwidth=1, color=black];\n\t556 -> 87 [penwidth=1, color=black];\n\t556 -> 88 [penwidth=1, color=black];\n\t556 -> 93 [penwidth=1, color=black];\n\t556 -> 94 [penwidth=1, color=black];\n\t556 -> 104 [penwidth=1, color=black];\n\t556 -> 105 [penwidth=1, color=black];\n\t556 -> 108 [penwidth=1, color=black];\n\t556 -> 109 [penwidth=1, color=black];\n\t556 -> 110 [penwidth=1, color=black];\n\t556 -> 111 [penwidth=1, color=black];\n\t556 -> 113 [penwidth=1, color=black];\n\t556 -> 117 [penwidth=1, color=black];\n\t556 -> 118 [penwidth=1, color=black];\n\t556 -> 121 [penwidth=1, color=black];\n\t556 -> 123 [penwidth=1, color=black];\n\t556 -> 125 [penwidth=1, color=black];\n\t556 -> 126 [penwidth=1, color=black];\n\t556 -> 130 [penwidth=1, color=black];\n\t556 -> 131 [penwidth=1, color=black];\n\t556 -> 132 [penwidth=1, color=black];\n\t556 -> 133 [penwidth=1, color=black];\n\t556 -> 134 [penwidth=1, color=black];\n\t556 -> 141 [penwidth=1, color=black];\n\t556 -> 143 [penwidth=1, color=black];\n\t556 -> 144 [penwidth=1, color=black];\n\t556 -> 145 [penwidth=1, color=black];\n\t556 -> 149 [penwidth=1, color=black];\n\t556 -> 154 [penwidth=1, color=black];\n\t556 -> 160 [penwidth=1, color=black];\n\t556 -> 163 [penwidth=1, color=black];\n\t556 -> 164 [penwidth=1, color=black];\n\t556 -> 165 [penwidth=1, color=black];\n\t556 -> 166 [penwidth=1, color=black];\n\t556 -> 167 [penwidth=1, color=black];\n\t556 -> 175 [penwidth=1, color=black];\n\t556 -> 176 [penwidth=1, color=black];\n\t556 -> 177 [penwidth=1, color=black];\n\t556 -> 178 [penwidth=1, color=black];\n\t556 -> 179 [penwidth=1, color=black];\n\t556 -> 180 [penwidth=1, color=black];\n\t556 -> 181 [penwidth=1, color=black];\n\t556 -> 182 [penwidth=1, color=black];\n\t556 -> 188 [penwidth=1, color=black];\n\t556 -> 189 [penwidth=1, color=black];\n\t556 -> 190 [penwidth=1, color=black];\n\t556 -> 202 [penwidth=1, color=black];\n\t556 -> 205 [penwidth=1, color=black];\n\t556 -> 207 [penwidth=1, color=black];\n\t556 -> 212 [penwidth=1, color=black];\n\t556 -> 213 [penwidth=1, color=black];\n\t556 -> 214 [penwidth=1, color=black];\n\t556 -> 215 [penwidth=1, color=black];\n\t556 -> 216 [penwidth=1, color=black];\n\t556 -> 217 [penwidth=1, color=black];\n\t556 -> 218 [penwidth=1, color=black];\n\t556 -> 219 [penwidth=1, color=black];\n\t556 -> 220 [penwidth=1, color=black];\n\t556 -> 221 [penwidth=1, color=black];\n\t556 -> 222 [penwidth=1, color=black];\n\t556 -> 223 [penwidth=1, color=black];\n\t556 -> 224 [penwidth=1, color=black];\n\t556 -> 226 [penwidth=1, color=black];\n\t556 -> 227 [penwidth=1, color=black];\n\t556 -> 228 [penwidth=1, color=black];\n\t556 -> 229 [penwidth=1, color=black];\n\t556 -> 230 [penwidth=1, color=black];\n\t556 -> 233 [penwidth=1, color=black];\n\t556 -> 234 [penwidth=1, color=black];\n\t556 -> 235 [penwidth=1, color=black];\n\t556 -> 239 [penwidth=1, color=black];\n\t556 -> 245 [penwidth=1, color=black];\n\t556 -> 246 [penwidth=1, color=black];\n\t556 -> 248 [penwidth=1, color=black];\n\t556 -> 249 [penwidth=1, color=black];\n\t556 -> 251 [penwidth=1, color=black];\n\t556 -> 252 [penwidth=1, color=black];\n\t556 -> 253 [penwidth=1, color=black];\n\t556 -> 259 [penwidth=1, color=black];\n\t556 -> 265 [penwidth=1, color=black];\n\t556 -> 269 [penwidth=1, color=black];\n\t556 -> 272 [penwidth=1, color=black];\n\t556 -> 273 [penwidth=1, color=black];\n\t556 -> 276 [penwidth=1, color=black];\n\t556 -> 277 [penwidth=1, color=black];\n\t556 -> 278 [penwidth=1, color=black];\n\t556 -> 279 [penwidth=1, color=black];\n\t556 -> 280 [penwidth=1, color=black];\n\t556 -> 282 [penwidth=1, color=black];\n\t556 -> 287 [penwidth=1, color=black];\n\t556 -> 289 [penwidth=1, color=black];\n\t556 -> 290 [penwidth=1, color=black];\n\t556 -> 291 [penwidth=1, color=black];\n\t556 -> 293 [penwidth=1, color=black];\n\t556 -> 294 [penwidth=1, color=black];\n\t556 -> 296 [penwidth=1, color=black];\n\t556 -> 297 [penwidth=1, color=black];\n\t556 -> 305 [penwidth=1, color=black];\n\t556 -> 308 [penwidth=1, color=black];\n\t556 -> 309 [penwidth=1, color=black];\n\t556 -> 312 [penwidth=1, color=black];\n\t556 -> 313 [penwidth=1, color=black];\n\t556 -> 314 [penwidth=1, color=black];\n\t556 -> 315 [penwidth=1, color=black];\n\t556 -> 319 [penwidth=1, color=black];\n\t556 -> 323 [penwidth=1, color=black];\n\t556 -> 324 [penwidth=1, color=black];\n\t556 -> 327 [penwidth=1, color=black];\n\t556 -> 329 [penwidth=1, color=black];\n\t556 -> 330 [penwidth=1, color=black];\n\t556 -> 334 [penwidth=1, color=black];\n\t556 -> 336 [penwidth=1, color=black];\n\t556 -> 337 [penwidth=1, color=black];\n\t556 -> 340 [penwidth=1, color=black];\n\t556 -> 342 [penwidth=1, color=black];\n\t556 -> 344 [penwidth=1, color=black];\n\t556 -> 345 [penwidth=1, color=black];\n\t556 -> 347 [penwidth=1, color=black];\n\t556 -> 348 [penwidth=1, color=black];\n\t556 -> 350 [penwidth=1, color=black];\n\t556 -> 351 [penwidth=1, color=black];\n\t556 -> 352 [penwidth=1, color=black];\n\t556 -> 354 [penwidth=1, color=black];\n\t556 -> 359 [penwidth=1, color=black];\n\t556 -> 361 [penwidth=1, color=black];\n\t556 -> 366 [penwidth=1, color=black];\n\t556 -> 367 [penwidth=1, color=black];\n\t556 -> 370 [penwidth=1, color=black];\n\t556 -> 371 [penwidth=1, color=black];\n\t556 -> 372 [penwidth=1, color=black];\n\t556 -> 373 [penwidth=1, color=black];\n\t556 -> 374 [penwidth=1, color=black];\n\t556 -> 375 [penwidth=1, color=black];\n\t556 -> 376 [penwidth=1, color=black];\n\t556 -> 379 [penwidth=1, color=black];\n\t556 -> 385 [penwidth=1, color=black];\n\t556 -> 386 [penwidth=1, color=black];\n\t556 -> 388 [penwidth=1, color=black];\n\t556 -> 394 [penwidth=1, color=black];\n\t556 -> 395 [penwidth=1, color=black];\n\t556 -> 396 [penwidth=1, color=black];\n\t556 -> 398 [penwidth=1, color=black];\n\t556 -> 399 [penwidth=1, color=black];\n\t556 -> 401 [penwidth=1, color=black];\n\t556 -> 1464 [penwidth=\"5.969813299576001\", color=black];\n\t557 -> 173 [penwidth=1, color=black];\n\t557 -> 237 [penwidth=1, color=black];\n\t557 -> 255 [penwidth=1, color=black];\n\t558 -> 142 [penwidth=1, color=black];\n\t558 -> 185 [penwidth=1, color=black];\n\t558 -> 256 [penwidth=1, color=black];\n\t559 -> 122 [penwidth=1, color=black];\n\t559 -> 281 [penwidth=1, color=black];\n\t560 -> 92 [penwidth=1, color=black];\n\t560 -> 97 [penwidth=1, color=black];\n\t560 -> 168 [penwidth=1, color=black];\n\t560 -> 257 [penwidth=1, color=black];\n\t561 -> 114 [penwidth=1, color=black];\n\t561 -> 236 [penwidth=1, color=black];\n\t561 -> 258 [penwidth=1, color=black];\n\t561 -> 302 [penwidth=1, color=black];\n\t561 -> 357 [penwidth=1, color=black];\n\t562 -> 263 [penwidth=1, color=black];\n\t562 -> 400 [penwidth=1, color=black];\n\t563 -> 199 [penwidth=1, color=black];\n\t563 -> 200 [penwidth=1, color=black];\n\t563 -> 201 [penwidth=1, color=black];\n\t564 -> 187 [penwidth=1, color=black];\n\t564 -> 321 [penwidth=1, color=black];\n\t564 -> 365 [penwidth=1, color=black];\n\t564 -> 1454 [penwidth=1, color=black];\n\t565 -> 83 [penwidth=1, color=black];\n\t565 -> 209 [penwidth=1, color=black];\n\t565 -> 210 [penwidth=1, color=black];\n\t566 -> 206 [penwidth=1, color=black];\n\t567 -> 208 [penwidth=1, color=black];\n\t567 -> 211 [penwidth=1, color=black];\n\t567 -> 409 [penwidth=1, color=black];\n\t568 -> 184 [penwidth=1, color=black];\n\t568 -> 196 [penwidth=1, color=black];\n\t568 -> 203 [penwidth=1, color=black];\n\t568 -> 244 [penwidth=1, color=black];\n\t569 -> 107 [penwidth=1, color=black];\n\t569 -> 346 [penwidth=1, color=black];\n\t569 -> 368 [penwidth=1, color=black];\n\t570 -> 103 [penwidth=1, color=black];\n\t570 -> 146 [penwidth=1, color=black];\n\t570 -> 266 [penwidth=1, color=black];\n\t571 -> 115 [penwidth=1, color=black];\n\t571 -> 197 [penwidth=1, color=black];\n\t571 -> 204 [penwidth=1, color=black];\n\t571 -> 307 [penwidth=1, color=black];\n\t571 -> 326 [penwidth=1, color=black];\n\t571 -> 338 [penwidth=1, color=black];\n\t571 -> 339 [penwidth=1, color=black];\n\t571 -> 397 [penwidth=1, color=black];\n\t572 -> 135 [penwidth=1, color=black];\n\t572 -> 136 [penwidth=1, color=black];\n\t572 -> 286 [penwidth=1, color=black];\n\t573 -> 283 [penwidth=1, color=black];\n\t573 -> 284 [penwidth=1, color=black];\n\t573 -> 285 [penwidth=1, color=black];\n\t573 -> 288 [penwidth=1, color=black];\n\t574 -> 95 [penwidth=1, color=black];\n\t574 -> 102 [penwidth=1, color=black];\n\t574 -> 231 [penwidth=1, color=black];\n\t574 -> 238 [penwidth=1, color=black];\n\t574 -> 318 [penwidth=1, color=black];\n\t574 -> 332 [penwidth=1, color=black];\n\t574 -> 378 [penwidth=1, color=black];\n\t574 -> 380 [penwidth=1, color=black];\n\t575 -> 299 [penwidth=1, color=black];\n\t575 -> 1455 [penwidth=1, color=black];\n\t575 -> 1871 [penwidth=1, color=black];\n\t576 -> 300 [penwidth=1, color=black];\n\t576 -> 358 [penwidth=1, color=black];\n\t577 -> 151 [penwidth=1, color=black];\n\t577 -> 260 [penwidth=1, color=black];\n\t577 -> 268 [penwidth=1, color=black];\n\t578 -> 169 [penwidth=1, color=black];\n\t578 -> 170 [penwidth=1, color=black];\n\t578 -> 171 [penwidth=1, color=black];\n\t578 -> 172 [penwidth=1, color=black];\n\t579 -> 247 [penwidth=1, color=black];\n\t579 -> 250 [penwidth=1, color=black];\n\t579 -> 335 [penwidth=1, color=black];\n\t579 -> 349 [penwidth=1, color=black];\n\t579 -> 355 [penwidth=1, color=black];\n\t580 -> 89 [penwidth=1, color=black];\n\t580 -> 90 [penwidth=1, color=black];\n\t580 -> 116 [penwidth=1, color=black];\n\t580 -> 150 [penwidth=1, color=black];\n\t580 -> 156 [penwidth=1, color=black];\n\t581 -> 152 [penwidth=1, color=black];\n\t581 -> 161 [penwidth=1, color=black];\n\t581 -> 225 [penwidth=1, color=black];\n\t581 -> 304 [penwidth=1, color=black];\n\t581 -> 515 [penwidth=\"1.6931471805599454\", color=black];\n\t581 -> 599 [penwidth=\"1.6931471805599454\", color=black];\n\t582 -> 322 [penwidth=1, color=black];\n\t582 -> 1455 [penwidth=1, color=black];\n\t583 -> 198 [penwidth=1, color=black];\n\t583 -> 264 [penwidth=1, color=black];\n\t583 -> 270 [penwidth=1, color=black];\n\t584 -> 311 [penwidth=1, color=black];\n\t584 -> 325 [penwidth=1, color=black];\n\t584 -> 341 [penwidth=1, color=black];\n\t585 -> 153 [penwidth=1, color=black];\n\t585 -> 155 [penwidth=1, color=black];\n\t585 -> 157 [penwidth=1, color=black];\n\t585 -> 261 [penwidth=1, color=black];\n\t585 -> 387 [penwidth=1, color=black];\n\t586 -> 100 [penwidth=1, color=black];\n\t586 -> 101 [penwidth=1, color=black];\n\t586 -> 106 [penwidth=1, color=black];\n\t586 -> 112 [penwidth=1, color=black];\n\t586 -> 129 [penwidth=1, color=black];\n\t586 -> 139 [penwidth=1, color=black];\n\t586 -> 140 [penwidth=1, color=black];\n\t586 -> 147 [penwidth=1, color=black];\n\t586 -> 148 [penwidth=1, color=black];\n\t586 -> 162 [penwidth=1, color=black];\n\t586 -> 183 [penwidth=1, color=black];\n\t586 -> 186 [penwidth=1, color=black];\n\t586 -> 192 [penwidth=1, color=black];\n\t586 -> 193 [penwidth=1, color=black];\n\t586 -> 194 [penwidth=1, color=black];\n\t586 -> 240 [penwidth=1, color=black];\n\t586 -> 241 [penwidth=1, color=black];\n\t586 -> 242 [penwidth=1, color=black];\n\t586 -> 243 [penwidth=1, color=black];\n\t586 -> 271 [penwidth=1, color=black];\n\t586 -> 274 [penwidth=1, color=black];\n\t586 -> 292 [penwidth=1, color=black];\n\t586 -> 295 [penwidth=1, color=black];\n\t586 -> 298 [penwidth=1, color=black];\n\t586 -> 301 [penwidth=1, color=black];\n\t586 -> 303 [penwidth=1, color=black];\n\t586 -> 320 [penwidth=1, color=black];\n\t586 -> 343 [penwidth=1, color=black];\n\t586 -> 369 [penwidth=1, color=black];\n\t586 -> 381 [penwidth=1, color=black];\n\t586 -> 382 [penwidth=1, color=black];\n\t586 -> 384 [penwidth=1, color=black];\n\t587 -> 91 [penwidth=1, color=black];\n\t587 -> 174 [penwidth=1, color=black];\n\t587 -> 262 [penwidth=1, color=black];\n\t587 -> 306 [penwidth=1, color=black];\n\t587 -> 310 [penwidth=1, color=black];\n\t587 -> 360 [penwidth=1, color=black];\n\t587 -> 383 [penwidth=1, color=black];\n\t588 -> 356 [penwidth=1, color=black];\n\t588 -> 1455 [penwidth=1, color=black];\n\t589 -> 362 [penwidth=1, color=black];\n\t589 -> 363 [penwidth=1, color=black];\n\t589 -> 364 [penwidth=1, color=black];\n\t590 -> 333 [penwidth=1, color=black];\n\t591 -> 96 [penwidth=1, color=black];\n\t591 -> 120 [penwidth=1, color=black];\n\t591 -> 124 [penwidth=1, color=black];\n\t591 -> 127 [penwidth=1, color=black];\n\t591 -> 138 [penwidth=1, color=black];\n\t591 -> 158 [penwidth=1, color=black];\n\t591 -> 195 [penwidth=1, color=black];\n\t591 -> 331 [penwidth=1, color=black];\n\t591 -> 353 [penwidth=1, color=black];\n\t592 -> 389 [penwidth=1, color=black];\n\t592 -> 390 [penwidth=1, color=black];\n\t592 -> 392 [penwidth=1, color=black];\n\t593 -> 414 [penwidth=1, color=black];\n\t593 -> 416 [penwidth=1, color=black];\n\t593 -> 606 [penwidth=1, color=black];\n\t593 -> 610 [penwidth=1, color=black];\n\t594 -> 409 [penwidth=1, color=black];\n\t599 -> 516 [penwidth=1, color=black];\n\t599 -> 1483 [penwidth=1, color=black];\n\t600 -> 94 [penwidth=1, color=black];\n\t600 -> 109 [penwidth=1, color=black];\n\t600 -> 110 [penwidth=1, color=black];\n\t600 -> 154 [penwidth=1, color=black];\n\t600 -> 163 [penwidth=1, color=black];\n\t600 -> 164 [penwidth=1, color=black];\n\t600 -> 167 [penwidth=1, color=black];\n\t600 -> 202 [penwidth=1, color=black];\n\t600 -> 207 [penwidth=1, color=black];\n\t600 -> 213 [penwidth=1, color=black];\n\t600 -> 220 [penwidth=1, color=black];\n\t600 -> 221 [penwidth=1, color=black];\n\t600 -> 259 [penwidth=1, color=black];\n\t600 -> 293 [penwidth=1, color=black];\n\t600 -> 294 [penwidth=1, color=black];\n\t600 -> 296 [penwidth=1, color=black];\n\t600 -> 312 [penwidth=1, color=black];\n\t600 -> 354 [penwidth=1, color=black];\n\t600 -> 366 [penwidth=1, color=black];\n\t600 -> 376 [penwidth=1, color=black];\n\t600 -> 379 [penwidth=1, color=black];\n\t600 -> 386 [penwidth=1, color=black];\n\t600 -> 388 [penwidth=1, color=black];\n\t601 -> 85 [penwidth=1, color=black];\n\t601 -> 86 [penwidth=1, color=black];\n\t601 -> 87 [penwidth=1, color=black];\n\t601 -> 109 [penwidth=1, color=black];\n\t601 -> 110 [penwidth=1, color=black];\n\t601 -> 111 [penwidth=1, color=black];\n\t601 -> 118 [penwidth=1, color=black];\n\t601 -> 125 [penwidth=1, color=black];\n\t601 -> 132 [penwidth=1, color=black];\n\t601 -> 143 [penwidth=1, color=black];\n\t601 -> 144 [penwidth=1, color=black];\n\t601 -> 145 [penwidth=1, color=black];\n\t601 -> 163 [penwidth=1, color=black];\n\t601 -> 164 [penwidth=1, color=black];\n\t601 -> 167 [penwidth=1, color=black];\n\t601 -> 176 [penwidth=1, color=black];\n\t601 -> 177 [penwidth=1, color=black];\n\t601 -> 178 [penwidth=1, color=black];\n\t601 -> 179 [penwidth=1, color=black];\n\t601 -> 180 [penwidth=1, color=black];\n\t601 -> 181 [penwidth=1, color=black];\n\t601 -> 188 [penwidth=1, color=black];\n\t601 -> 205 [penwidth=1, color=black];\n\t601 -> 207 [penwidth=1, color=black];\n\t601 -> 212 [penwidth=1, color=black];\n\t601 -> 213 [penwidth=1, color=black];\n\t601 -> 214 [penwidth=1, color=black];\n\t601 -> 215 [penwidth=1, color=black];\n\t601 -> 216 [penwidth=1, color=black];\n\t601 -> 217 [penwidth=1, color=black];\n\t601 -> 218 [penwidth=1, color=black];\n\t601 -> 219 [penwidth=1, color=black];\n\t601 -> 222 [penwidth=1, color=black];\n\t601 -> 223 [penwidth=1, color=black];\n\t601 -> 224 [penwidth=1, color=black];\n\t601 -> 227 [penwidth=1, color=black];\n\t601 -> 233 [penwidth=1, color=black];\n\t601 -> 249 [penwidth=1, color=black];\n\t601 -> 259 [penwidth=1, color=black];\n\t601 -> 294 [penwidth=1, color=black];\n\t601 -> 305 [penwidth=1, color=black];\n\t601 -> 334 [penwidth=1, color=black];\n\t601 -> 336 [penwidth=1, color=black];\n\t601 -> 347 [penwidth=1, color=black];\n\t601 -> 366 [penwidth=1, color=black];\n\t601 -> 370 [penwidth=1, color=black];\n\t601 -> 371 [penwidth=1, color=black];\n\t601 -> 372 [penwidth=1, color=black];\n\t601 -> 373 [penwidth=1, color=black];\n\t601 -> 374 [penwidth=1, color=black];\n\t601 -> 375 [penwidth=1, color=black];\n\t601 -> 376 [penwidth=1, color=black];\n\t601 -> 379 [penwidth=1, color=black];\n\t601 -> 386 [penwidth=1, color=black];\n\t601 -> 388 [penwidth=1, color=black];\n\t601 -> 398 [penwidth=1, color=black];\n\t602 -> 88 [penwidth=1, color=black];\n\t602 -> 93 [penwidth=1, color=black];\n\t602 -> 94 [penwidth=1, color=black];\n\t602 -> 104 [penwidth=1, color=black];\n\t602 -> 105 [penwidth=1, color=black];\n\t602 -> 108 [penwidth=1, color=black];\n\t602 -> 110 [penwidth=1, color=black];\n\t602 -> 111 [penwidth=1, color=black];\n\t602 -> 113 [penwidth=1, color=black];\n\t602 -> 117 [penwidth=1, color=black];\n\t602 -> 121 [penwidth=1, color=black];\n\t602 -> 123 [penwidth=1, color=black];\n\t602 -> 126 [penwidth=1, color=black];\n\t602 -> 130 [penwidth=1, color=black];\n\t602 -> 131 [penwidth=1, color=black];\n\t602 -> 133 [penwidth=1, color=black];\n\t602 -> 141 [penwidth=1, color=black];\n\t602 -> 149 [penwidth=1, color=black];\n\t602 -> 163 [penwidth=1, color=black];\n\t602 -> 164 [penwidth=1, color=black];\n\t602 -> 165 [penwidth=1, color=black];\n\t602 -> 166 [penwidth=1, color=black];\n\t602 -> 167 [penwidth=1, color=black];\n\t602 -> 188 [penwidth=1, color=black];\n\t602 -> 202 [penwidth=1, color=black];\n\t602 -> 207 [penwidth=1, color=black];\n\t602 -> 213 [penwidth=1, color=black];\n\t602 -> 220 [penwidth=1, color=black];\n\t602 -> 221 [penwidth=1, color=black];\n\t602 -> 226 [penwidth=1, color=black];\n\t602 -> 228 [penwidth=1, color=black];\n\t602 -> 229 [penwidth=1, color=black];\n\t602 -> 230 [penwidth=1, color=black];\n\t602 -> 234 [penwidth=1, color=black];\n\t602 -> 235 [penwidth=1, color=black];\n\t602 -> 239 [penwidth=1, color=black];\n\t602 -> 245 [penwidth=1, color=black];\n\t602 -> 246 [penwidth=1, color=black];\n\t602 -> 248 [penwidth=1, color=black];\n\t602 -> 251 [penwidth=1, color=black];\n\t602 -> 252 [penwidth=1, color=black];\n\t602 -> 253 [penwidth=1, color=black];\n\t602 -> 259 [penwidth=1, color=black];\n\t602 -> 265 [penwidth=1, color=black];\n\t602 -> 269 [penwidth=1, color=black];\n\t602 -> 272 [penwidth=1, color=black];\n\t602 -> 273 [penwidth=1, color=black];\n\t602 -> 276 [penwidth=1, color=black];\n\t602 -> 278 [penwidth=1, color=black];\n\t602 -> 279 [penwidth=1, color=black];\n\t602 -> 280 [penwidth=1, color=black];\n\t602 -> 282 [penwidth=1, color=black];\n\t602 -> 287 [penwidth=1, color=black];\n\t602 -> 289 [penwidth=1, color=black];\n\t602 -> 290 [penwidth=1, color=black];\n\t602 -> 291 [penwidth=1, color=black];\n\t602 -> 308 [penwidth=1, color=black];\n\t602 -> 309 [penwidth=1, color=black];\n\t602 -> 313 [penwidth=1, color=black];\n\t602 -> 314 [penwidth=1, color=black];\n\t602 -> 315 [penwidth=1, color=black];\n\t602 -> 319 [penwidth=1, color=black];\n\t602 -> 327 [penwidth=1, color=black];\n\t602 -> 329 [penwidth=1, color=black];\n\t602 -> 330 [penwidth=1, color=black];\n\t602 -> 340 [penwidth=1, color=black];\n\t602 -> 342 [penwidth=1, color=black];\n\t602 -> 347 [penwidth=1, color=black];\n\t602 -> 350 [penwidth=1, color=black];\n\t602 -> 352 [penwidth=1, color=black];\n\t602 -> 354 [penwidth=1, color=black];\n\t602 -> 359 [penwidth=1, color=black];\n\t602 -> 361 [penwidth=1, color=black];\n\t602 -> 367 [penwidth=1, color=black];\n\t602 -> 376 [penwidth=1, color=black];\n\t602 -> 385 [penwidth=1, color=black];\n\t602 -> 386 [penwidth=1, color=black];\n\t602 -> 388 [penwidth=1, color=black];\n\t602 -> 395 [penwidth=1, color=black];\n\t602 -> 396 [penwidth=1, color=black];\n\t603 -> 109 [penwidth=1, color=black];\n\t603 -> 110 [penwidth=1, color=black];\n\t603 -> 111 [penwidth=1, color=black];\n\t603 -> 134 [penwidth=1, color=black];\n\t603 -> 154 [penwidth=1, color=black];\n\t603 -> 160 [penwidth=1, color=black];\n\t603 -> 163 [penwidth=1, color=black];\n\t603 -> 164 [penwidth=1, color=black];\n\t603 -> 167 [penwidth=1, color=black];\n\t603 -> 175 [penwidth=1, color=black];\n\t603 -> 182 [penwidth=1, color=black];\n\t603 -> 188 [penwidth=1, color=black];\n\t603 -> 189 [penwidth=1, color=black];\n\t603 -> 190 [penwidth=1, color=black];\n\t603 -> 213 [penwidth=1, color=black];\n\t603 -> 221 [penwidth=1, color=black];\n\t603 -> 227 [penwidth=1, color=black];\n\t603 -> 245 [penwidth=1, color=black];\n\t603 -> 259 [penwidth=1, color=black];\n\t603 -> 277 [penwidth=1, color=black];\n\t603 -> 294 [penwidth=1, color=black];\n\t603 -> 296 [penwidth=1, color=black];\n\t603 -> 297 [penwidth=1, color=black];\n\t603 -> 305 [penwidth=1, color=black];\n\t603 -> 323 [penwidth=1, color=black];\n\t603 -> 324 [penwidth=1, color=black];\n\t603 -> 329 [penwidth=1, color=black];\n\t603 -> 337 [penwidth=1, color=black];\n\t603 -> 344 [penwidth=1, color=black];\n\t603 -> 345 [penwidth=1, color=black];\n\t603 -> 347 [penwidth=1, color=black];\n\t603 -> 348 [penwidth=1, color=black];\n\t603 -> 351 [penwidth=1, color=black];\n\t603 -> 354 [penwidth=1, color=black];\n\t603 -> 366 [penwidth=1, color=black];\n\t603 -> 376 [penwidth=1, color=black];\n\t603 -> 379 [penwidth=1, color=black];\n\t603 -> 386 [penwidth=1, color=black];\n\t603 -> 388 [penwidth=1, color=black];\n\t603 -> 394 [penwidth=1, color=black];\n\t603 -> 399 [penwidth=1, color=black];\n\t603 -> 401 [penwidth=1, color=black];\n\t604 -> 312 [penwidth=1, color=black];\n\t604 -> 388 [penwidth=1, color=black];\n\t605 -> 82 [penwidth=1, color=black];\n\t605 -> 393 [penwidth=1, color=black];\n\t605 -> 429 [penwidth=1, color=black];\n\t1201 -> 1075 [penwidth=1, color=black];\n\t1201 -> 1168 [penwidth=1, color=black];\n\t1201 -> 1188 [penwidth=1, color=black];\n\t1201 -> 1207 [penwidth=1, color=black];\n\t1202 -> 1074 [penwidth=1, color=black];\n\t1204 -> 1226 [penwidth=1, color=chartreuse];\n\t1206 -> 644 [penwidth=1, color=black];\n\t1206 -> 1188 [penwidth=1, color=black];\n\t1208 -> 644 [penwidth=1, color=black];\n\t1208 -> 1188 [penwidth=1, color=black];\n\t1208 -> 1429 [penwidth=1, color=black];\n\t1209 -> 644 [penwidth=1, color=black];\n\t1209 -> 1188 [penwidth=1, color=black];\n\t1209 -> 1429 [penwidth=1, color=black];\n\t1210 -> 611 [penwidth=1, color=black];\n\t1210 -> 642 [penwidth=1, color=black];\n\t1210 -> 643 [penwidth=1, color=black];\n\t1210 -> 651 [penwidth=1, color=black];\n\t1210 -> 652 [penwidth=1, color=black];\n\t1210 -> 690 [penwidth=1, color=black];\n\t1210 -> 752 [penwidth=1, color=black];\n\t1210 -> 871 [penwidth=1, color=black];\n\t1210 -> 872 [penwidth=1, color=black];\n\t1210 -> 1018 [penwidth=1, color=black];\n\t1210 -> 1024 [penwidth=1, color=black];\n\t1210 -> 1025 [penwidth=1, color=black];\n\t1210 -> 1043 [penwidth=1, color=black];\n\t1210 -> 1044 [penwidth=1, color=black];\n\t1210 -> 1056 [penwidth=1, color=black];\n\t1210 -> 1063 [penwidth=1, color=black];\n\t1210 -> 1064 [penwidth=1, color=black];\n\t1210 -> 1065 [penwidth=1, color=black];\n\t1210 -> 1066 [penwidth=1, color=black];\n\t1210 -> 1067 [penwidth=1, color=black];\n\t1210 -> 1073 [penwidth=1, color=black];\n\t1210 -> 1076 [penwidth=1, color=black];\n\t1210 -> 1077 [penwidth=1, color=black];\n\t1210 -> 1078 [penwidth=1, color=black];\n\t1210 -> 1079 [penwidth=1, color=black];\n\t1210 -> 1080 [penwidth=1, color=black];\n\t1210 -> 1086 [penwidth=1, color=black];\n\t1210 -> 1114 [penwidth=1, color=black];\n\t1210 -> 1115 [penwidth=1, color=black];\n\t1210 -> 1116 [penwidth=1, color=black];\n\t1210 -> 1142 [penwidth=1, color=black];\n\t1210 -> 1195 [penwidth=1, color=black];\n\t1210 -> 1196 [penwidth=1, color=black];\n\t1210 -> 1197 [penwidth=1, color=black];\n\t1210 -> 1198 [penwidth=1, color=black];\n\t1210 -> 1435 [penwidth=\"4.555348061489413\", color=black];\n\t1211 -> 644 [penwidth=1, color=black];\n\t1211 -> 873 [penwidth=1, color=black];\n\t1211 -> 1074 [penwidth=1, color=black];\n\t1211 -> 1075 [penwidth=1, color=black];\n\t1211 -> 1188 [penwidth=1, color=black];\n\t1211 -> 1373 [penwidth=1, color=black];\n\t1211 -> 1433 [penwidth=1, color=black];\n\t1211 -> 1440 [penwidth=1, color=black];\n\t1212 -> 645 [penwidth=1, color=black];\n\t1212 -> 1187 [penwidth=1, color=black];\n\t1212 -> 1435 [penwidth=1, color=black];\n\t1213 -> 612 [penwidth=1, color=black];\n\t1213 -> 613 [penwidth=1, color=black];\n\t1213 -> 614 [penwidth=1, color=black];\n\t1213 -> 615 [penwidth=1, color=black];\n\t1213 -> 616 [penwidth=1, color=black];\n\t1213 -> 617 [penwidth=1, color=black];\n\t1213 -> 618 [penwidth=1, color=black];\n\t1213 -> 619 [penwidth=1, color=black];\n\t1213 -> 620 [penwidth=1, color=black];\n\t1213 -> 621 [penwidth=1, color=black];\n\t1213 -> 622 [penwidth=1, color=black];\n\t1213 -> 623 [penwidth=1, color=black];\n\t1213 -> 624 [penwidth=1, color=black];\n\t1213 -> 625 [penwidth=1, color=black];\n\t1213 -> 626 [penwidth=1, color=black];\n\t1213 -> 627 [penwidth=1, color=black];\n\t1213 -> 628 [penwidth=1, color=black];\n\t1213 -> 629 [penwidth=1, color=black];\n\t1213 -> 630 [penwidth=1, color=black];\n\t1213 -> 631 [penwidth=1, color=black];\n\t1213 -> 632 [penwidth=1, color=black];\n\t1213 -> 633 [penwidth=1, color=black];\n\t1213 -> 634 [penwidth=1, color=black];\n\t1213 -> 635 [penwidth=1, color=black];\n\t1213 -> 636 [penwidth=1, color=black];\n\t1213 -> 637 [penwidth=1, color=black];\n\t1213 -> 638 [penwidth=1, color=black];\n\t1213 -> 639 [penwidth=1, color=black];\n\t1213 -> 640 [penwidth=1, color=black];\n\t1213 -> 641 [penwidth=1, color=black];\n\t1213 -> 646 [penwidth=1, color=black];\n\t1213 -> 647 [penwidth=1, color=black];\n\t1213 -> 648 [penwidth=1, color=black];\n\t1213 -> 649 [penwidth=1, color=black];\n\t1213 -> 650 [penwidth=1, color=black];\n\t1213 -> 653 [penwidth=1, color=black];\n\t1213 -> 654 [penwidth=1, color=black];\n\t1213 -> 655 [penwidth=1, color=black];\n\t1213 -> 656 [penwidth=1, color=black];\n\t1213 -> 657 [penwidth=1, color=black];\n\t1213 -> 658 [penwidth=1, color=black];\n\t1213 -> 659 [penwidth=1, color=black];\n\t1213 -> 660 [penwidth=1, color=black];\n\t1213 -> 661 [penwidth=1, color=black];\n\t1213 -> 662 [penwidth=1, color=black];\n\t1213 -> 663 [penwidth=1, color=black];\n\t1213 -> 664 [penwidth=1, color=black];\n\t1213 -> 665 [penwidth=1, color=black];\n\t1213 -> 666 [penwidth=1, color=black];\n\t1213 -> 667 [penwidth=1, color=black];\n\t1213 -> 668 [penwidth=1, color=black];\n\t1213 -> 669 [penwidth=1, color=black];\n\t1213 -> 670 [penwidth=1, color=black];\n\t1213 -> 671 [penwidth=1, color=black];\n\t1213 -> 672 [penwidth=1, color=black];\n\t1213 -> 673 [penwidth=1, color=black];\n\t1213 -> 674 [penwidth=1, color=black];\n\t1213 -> 675 [penwidth=1, color=black];\n\t1213 -> 676 [penwidth=1, color=black];\n\t1213 -> 677 [penwidth=1, color=black];\n\t1213 -> 678 [penwidth=1, color=black];\n\t1213 -> 679 [penwidth=1, color=black];\n\t1213 -> 680 [penwidth=1, color=black];\n\t1213 -> 681 [penwidth=1, color=black];\n\t1213 -> 682 [penwidth=1, color=black];\n\t1213 -> 683 [penwidth=1, color=black];\n\t1213 -> 684 [penwidth=1, color=black];\n\t1213 -> 685 [penwidth=1, color=black];\n\t1213 -> 686 [penwidth=1, color=black];\n\t1213 -> 687 [penwidth=1, color=black];\n\t1213 -> 688 [penwidth=1, color=black];\n\t1213 -> 689 [penwidth=1, color=black];\n\t1213 -> 691 [penwidth=1, color=black];\n\t1213 -> 692 [penwidth=1, color=black];\n\t1213 -> 693 [penwidth=1, color=black];\n\t1213 -> 694 [penwidth=1, color=black];\n\t1213 -> 695 [penwidth=1, color=black];\n\t1213 -> 696 [penwidth=1, color=black];\n\t1213 -> 697 [penwidth=1, color=black];\n\t1213 -> 698 [penwidth=1, color=black];\n\t1213 -> 699 [penwidth=1, color=black];\n\t1213 -> 700 [penwidth=1, color=black];\n\t1213 -> 701 [penwidth=1, color=black];\n\t1213 -> 702 [penwidth=1, color=black];\n\t1213 -> 703 [penwidth=1, color=black];\n\t1213 -> 704 [penwidth=1, color=black];\n\t1213 -> 705 [penwidth=1, color=black];\n\t1213 -> 706 [penwidth=1, color=black];\n\t1213 -> 707 [penwidth=1, color=black];\n\t1213 -> 708 [penwidth=1, color=black];\n\t1213 -> 709 [penwidth=1, color=black];\n\t1213 -> 710 [penwidth=1, color=black];\n\t1213 -> 711 [penwidth=1, color=black];\n\t1213 -> 712 [penwidth=1, color=black];\n\t1213 -> 713 [penwidth=1, color=black];\n\t1213 -> 714 [penwidth=1, color=black];\n\t1213 -> 715 [penwidth=1, color=black];\n\t1213 -> 716 [penwidth=1, color=black];\n\t1213 -> 717 [penwidth=1, color=black];\n\t1213 -> 718 [penwidth=1, color=black];\n\t1213 -> 719 [penwidth=1, color=black];\n\t1213 -> 720 [penwidth=1, color=black];\n\t1213 -> 721 [penwidth=1, color=black];\n\t1213 -> 722 [penwidth=1, color=black];\n\t1213 -> 723 [penwidth=1, color=black];\n\t1213 -> 724 [penwidth=1, color=black];\n\t1213 -> 725 [penwidth=1, color=black];\n\t1213 -> 726 [penwidth=1, color=black];\n\t1213 -> 727 [penwidth=1, color=black];\n\t1213 -> 728 [penwidth=1, color=black];\n\t1213 -> 729 [penwidth=1, color=black];\n\t1213 -> 730 [penwidth=1, color=black];\n\t1213 -> 731 [penwidth=1, color=black];\n\t1213 -> 732 [penwidth=1, color=black];\n\t1213 -> 733 [penwidth=1, color=black];\n\t1213 -> 734 [penwidth=1, color=black];\n\t1213 -> 735 [penwidth=1, color=black];\n\t1213 -> 736 [penwidth=1, color=black];\n\t1213 -> 737 [penwidth=1, color=black];\n\t1213 -> 738 [penwidth=1, color=black];\n\t1213 -> 739 [penwidth=1, color=black];\n\t1213 -> 740 [penwidth=1, color=black];\n\t1213 -> 741 [penwidth=1, color=black];\n\t1213 -> 742 [penwidth=1, color=black];\n\t1213 -> 743 [penwidth=1, color=black];\n\t1213 -> 744 [penwidth=1, color=black];\n\t1213 -> 745 [penwidth=1, color=black];\n\t1213 -> 746 [penwidth=1, color=black];\n\t1213 -> 747 [penwidth=1, color=black];\n\t1213 -> 748 [penwidth=1, color=black];\n\t1213 -> 749 [penwidth=1, color=black];\n\t1213 -> 750 [penwidth=1, color=black];\n\t1213 -> 751 [penwidth=1, color=black];\n\t1213 -> 753 [penwidth=1, color=black];\n\t1213 -> 754 [penwidth=1, color=black];\n\t1213 -> 755 [penwidth=1, color=black];\n\t1213 -> 756 [penwidth=1, color=black];\n\t1213 -> 757 [penwidth=1, color=black];\n\t1213 -> 758 [penwidth=1, color=black];\n\t1213 -> 759 [penwidth=1, color=black];\n\t1213 -> 760 [penwidth=1, color=black];\n\t1213 -> 761 [penwidth=1, color=black];\n\t1213 -> 762 [penwidth=1, color=black];\n\t1213 -> 763 [penwidth=1, color=black];\n\t1213 -> 764 [penwidth=1, color=black];\n\t1213 -> 765 [penwidth=1, color=black];\n\t1213 -> 766 [penwidth=1, color=black];\n\t1213 -> 767 [penwidth=1, color=black];\n\t1213 -> 768 [penwidth=1, color=black];\n\t1213 -> 769 [penwidth=1, color=black];\n\t1213 -> 770 [penwidth=1, color=black];\n\t1213 -> 771 [penwidth=1, color=black];\n\t1213 -> 772 [penwidth=1, color=black];\n\t1213 -> 773 [penwidth=1, color=black];\n\t1213 -> 774 [penwidth=1, color=black];\n\t1213 -> 775 [penwidth=1, color=black];\n\t1213 -> 776 [penwidth=1, color=black];\n\t1213 -> 777 [penwidth=1, color=black];\n\t1213 -> 778 [penwidth=1, color=black];\n\t1213 -> 779 [penwidth=1, color=black];\n\t1213 -> 780 [penwidth=1, color=black];\n\t1213 -> 781 [penwidth=1, color=black];\n\t1213 -> 782 [penwidth=1, color=black];\n\t1213 -> 783 [penwidth=1, color=black];\n\t1213 -> 784 [penwidth=1, color=black];\n\t1213 -> 785 [penwidth=1, color=black];\n\t1213 -> 786 [penwidth=1, color=black];\n\t1213 -> 787 [penwidth=1, color=black];\n\t1213 -> 788 [penwidth=1, color=black];\n\t1213 -> 789 [penwidth=1, color=black];\n\t1213 -> 790 [penwidth=1, color=black];\n\t1213 -> 791 [penwidth=1, color=black];\n\t1213 -> 792 [penwidth=1, color=black];\n\t1213 -> 793 [penwidth=1, color=black];\n\t1213 -> 794 [penwidth=1, color=black];\n\t1213 -> 795 [penwidth=1, color=black];\n\t1213 -> 796 [penwidth=1, color=black];\n\t1213 -> 797 [penwidth=1, color=black];\n\t1213 -> 798 [penwidth=1, color=black];\n\t1213 -> 799 [penwidth=1, color=black];\n\t1213 -> 800 [penwidth=1, color=black];\n\t1213 -> 801 [penwidth=1, color=black];\n\t1213 -> 802 [penwidth=1, color=black];\n\t1213 -> 803 [penwidth=1, color=black];\n\t1213 -> 804 [penwidth=1, color=black];\n\t1213 -> 805 [penwidth=1, color=black];\n\t1213 -> 806 [penwidth=1, color=black];\n\t1213 -> 807 [penwidth=1, color=black];\n\t1213 -> 808 [penwidth=1, color=black];\n\t1213 -> 809 [penwidth=1, color=black];\n\t1213 -> 810 [penwidth=1, color=black];\n\t1213 -> 811 [penwidth=1, color=black];\n\t1213 -> 812 [penwidth=1, color=black];\n\t1213 -> 813 [penwidth=1, color=black];\n\t1213 -> 814 [penwidth=1, color=black];\n\t1213 -> 815 [penwidth=1, color=black];\n\t1213 -> 816 [penwidth=1, color=black];\n\t1213 -> 817 [penwidth=1, color=black];\n\t1213 -> 818 [penwidth=1, color=black];\n\t1213 -> 819 [penwidth=1, color=black];\n\t1213 -> 820 [penwidth=1, color=black];\n\t1213 -> 821 [penwidth=1, color=black];\n\t1213 -> 822 [penwidth=1, color=black];\n\t1213 -> 823 [penwidth=1, color=black];\n\t1213 -> 824 [penwidth=1, color=black];\n\t1213 -> 825 [penwidth=1, color=black];\n\t1213 -> 826 [penwidth=1, color=black];\n\t1213 -> 827 [penwidth=1, color=black];\n\t1213 -> 828 [penwidth=1, color=black];\n\t1213 -> 829 [penwidth=1, color=black];\n\t1213 -> 830 [penwidth=1, color=black];\n\t1213 -> 831 [penwidth=1, color=black];\n\t1213 -> 832 [penwidth=1, color=black];\n\t1213 -> 833 [penwidth=1, color=black];\n\t1213 -> 834 [penwidth=1, color=black];\n\t1213 -> 835 [penwidth=1, color=black];\n\t1213 -> 836 [penwidth=1, color=black];\n\t1213 -> 837 [penwidth=1, color=black];\n\t1213 -> 838 [penwidth=1, color=black];\n\t1213 -> 839 [penwidth=1, color=black];\n\t1213 -> 840 [penwidth=1, color=black];\n\t1213 -> 841 [penwidth=1, color=black];\n\t1213 -> 842 [penwidth=1, color=black];\n\t1213 -> 843 [penwidth=1, color=black];\n\t1213 -> 844 [penwidth=1, color=black];\n\t1213 -> 845 [penwidth=1, color=black];\n\t1213 -> 846 [penwidth=1, color=black];\n\t1213 -> 847 [penwidth=1, color=black];\n\t1213 -> 848 [penwidth=1, color=black];\n\t1213 -> 849 [penwidth=1, color=black];\n\t1213 -> 850 [penwidth=1, color=black];\n\t1213 -> 851 [penwidth=1, color=black];\n\t1213 -> 852 [penwidth=1, color=black];\n\t1213 -> 853 [penwidth=1, color=black];\n\t1213 -> 854 [penwidth=1, color=black];\n\t1213 -> 855 [penwidth=1, color=black];\n\t1213 -> 856 [penwidth=1, color=black];\n\t1213 -> 857 [penwidth=1, color=black];\n\t1213 -> 858 [penwidth=1, color=black];\n\t1213 -> 859 [penwidth=1, color=black];\n\t1213 -> 860 [penwidth=1, color=black];\n\t1213 -> 861 [penwidth=1, color=black];\n\t1213 -> 862 [penwidth=1, color=black];\n\t1213 -> 863 [penwidth=1, color=black];\n\t1213 -> 864 [penwidth=1, color=black];\n\t1213 -> 865 [penwidth=1, color=black];\n\t1213 -> 866 [penwidth=1, color=black];\n\t1213 -> 867 [penwidth=1, color=black];\n\t1213 -> 868 [penwidth=1, color=black];\n\t1213 -> 869 [penwidth=1, color=black];\n\t1213 -> 870 [penwidth=1, color=black];\n\t1213 -> 874 [penwidth=1, color=black];\n\t1213 -> 875 [penwidth=1, color=black];\n\t1213 -> 876 [penwidth=1, color=black];\n\t1213 -> 877 [penwidth=1, color=black];\n\t1213 -> 878 [penwidth=1, color=black];\n\t1213 -> 879 [penwidth=1, color=black];\n\t1213 -> 880 [penwidth=1, color=black];\n\t1213 -> 881 [penwidth=1, color=black];\n\t1213 -> 882 [penwidth=1, color=black];\n\t1213 -> 883 [penwidth=1, color=black];\n\t1213 -> 884 [penwidth=1, color=black];\n\t1213 -> 885 [penwidth=1, color=black];\n\t1213 -> 886 [penwidth=1, color=black];\n\t1213 -> 887 [penwidth=1, color=black];\n\t1213 -> 888 [penwidth=1, color=black];\n\t1213 -> 889 [penwidth=1, color=black];\n\t1213 -> 890 [penwidth=1, color=black];\n\t1213 -> 891 [penwidth=1, color=black];\n\t1213 -> 892 [penwidth=1, color=black];\n\t1213 -> 893 [penwidth=1, color=black];\n\t1213 -> 894 [penwidth=1, color=black];\n\t1213 -> 895 [penwidth=1, color=black];\n\t1213 -> 896 [penwidth=1, color=black];\n\t1213 -> 897 [penwidth=1, color=black];\n\t1213 -> 898 [penwidth=1, color=black];\n\t1213 -> 899 [penwidth=1, color=black];\n\t1213 -> 900 [penwidth=1, color=black];\n\t1213 -> 901 [penwidth=1, color=black];\n\t1213 -> 902 [penwidth=1, color=black];\n\t1213 -> 903 [penwidth=1, color=black];\n\t1213 -> 904 [penwidth=1, color=black];\n\t1213 -> 905 [penwidth=1, color=black];\n\t1213 -> 906 [penwidth=1, color=black];\n\t1213 -> 907 [penwidth=1, color=black];\n\t1213 -> 908 [penwidth=1, color=black];\n\t1213 -> 909 [penwidth=1, color=black];\n\t1213 -> 910 [penwidth=1, color=black];\n\t1213 -> 911 [penwidth=1, color=black];\n\t1213 -> 912 [penwidth=1, color=black];\n\t1213 -> 913 [penwidth=1, color=black];\n\t1213 -> 914 [penwidth=1, color=black];\n\t1213 -> 915 [penwidth=1, color=black];\n\t1213 -> 916 [penwidth=1, color=black];\n\t1213 -> 917 [penwidth=1, color=black];\n\t1213 -> 918 [penwidth=1, color=black];\n\t1213 -> 919 [penwidth=1, color=black];\n\t1213 -> 920 [penwidth=1, color=black];\n\t1213 -> 921 [penwidth=1, color=black];\n\t1213 -> 922 [penwidth=1, color=black];\n\t1213 -> 923 [penwidth=1, color=black];\n\t1213 -> 924 [penwidth=1, color=black];\n\t1213 -> 925 [penwidth=1, color=black];\n\t1213 -> 926 [penwidth=1, color=black];\n\t1213 -> 927 [penwidth=1, color=black];\n\t1213 -> 928 [penwidth=1, color=black];\n\t1213 -> 929 [penwidth=1, color=black];\n\t1213 -> 930 [penwidth=1, color=black];\n\t1213 -> 931 [penwidth=1, color=black];\n\t1213 -> 932 [penwidth=1, color=black];\n\t1213 -> 933 [penwidth=1, color=black];\n\t1213 -> 934 [penwidth=1, color=black];\n\t1213 -> 935 [penwidth=1, color=black];\n\t1213 -> 936 [penwidth=1, color=black];\n\t1213 -> 937 [penwidth=1, color=black];\n\t1213 -> 938 [penwidth=1, color=black];\n\t1213 -> 939 [penwidth=1, color=black];\n\t1213 -> 940 [penwidth=1, color=black];\n\t1213 -> 941 [penwidth=1, color=black];\n\t1213 -> 942 [penwidth=1, color=black];\n\t1213 -> 943 [penwidth=1, color=black];\n\t1213 -> 944 [penwidth=1, color=black];\n\t1213 -> 945 [penwidth=1, color=black];\n\t1213 -> 946 [penwidth=1, color=black];\n\t1213 -> 947 [penwidth=1, color=black];\n\t1213 -> 948 [penwidth=1, color=black];\n\t1213 -> 949 [penwidth=1, color=black];\n\t1213 -> 950 [penwidth=1, color=black];\n\t1213 -> 951 [penwidth=1, color=black];\n\t1213 -> 952 [penwidth=1, color=black];\n\t1213 -> 953 [penwidth=1, color=black];\n\t1213 -> 954 [penwidth=1, color=black];\n\t1213 -> 955 [penwidth=1, color=black];\n\t1213 -> 956 [penwidth=1, color=black];\n\t1213 -> 957 [penwidth=1, color=black];\n\t1213 -> 958 [penwidth=1, color=black];\n\t1213 -> 959 [penwidth=1, color=black];\n\t1213 -> 960 [penwidth=1, color=black];\n\t1213 -> 961 [penwidth=1, color=black];\n\t1213 -> 962 [penwidth=1, color=black];\n\t1213 -> 963 [penwidth=1, color=black];\n\t1213 -> 964 [penwidth=1, color=black];\n\t1213 -> 965 [penwidth=1, color=black];\n\t1213 -> 966 [penwidth=1, color=black];\n\t1213 -> 967 [penwidth=1, color=black];\n\t1213 -> 968 [penwidth=1, color=black];\n\t1213 -> 969 [penwidth=1, color=black];\n\t1213 -> 970 [penwidth=1, color=black];\n\t1213 -> 971 [penwidth=1, color=black];\n\t1213 -> 972 [penwidth=1, color=black];\n\t1213 -> 973 [penwidth=1, color=black];\n\t1213 -> 974 [penwidth=1, color=black];\n\t1213 -> 975 [penwidth=1, color=black];\n\t1213 -> 976 [penwidth=1, color=black];\n\t1213 -> 977 [penwidth=1, color=black];\n\t1213 -> 978 [penwidth=1, color=black];\n\t1213 -> 979 [penwidth=1, color=black];\n\t1213 -> 980 [penwidth=1, color=black];\n\t1213 -> 981 [penwidth=1, color=black];\n\t1213 -> 982 [penwidth=1, color=black];\n\t1213 -> 983 [penwidth=1, color=black];\n\t1213 -> 984 [penwidth=1, color=black];\n\t1213 -> 985 [penwidth=1, color=black];\n\t1213 -> 986 [penwidth=1, color=black];\n\t1213 -> 987 [penwidth=1, color=black];\n\t1213 -> 988 [penwidth=1, color=black];\n\t1213 -> 989 [penwidth=1, color=black];\n\t1213 -> 990 [penwidth=1, color=black];\n\t1213 -> 991 [penwidth=1, color=black];\n\t1213 -> 992 [penwidth=1, color=black];\n\t1213 -> 993 [penwidth=1, color=black];\n\t1213 -> 994 [penwidth=1, color=black];\n\t1213 -> 995 [penwidth=1, color=black];\n\t1213 -> 996 [penwidth=1, color=black];\n\t1213 -> 997 [penwidth=1, color=black];\n\t1213 -> 998 [penwidth=1, color=black];\n\t1213 -> 999 [penwidth=1, color=black];\n\t1213 -> 1000 [penwidth=1, color=black];\n\t1213 -> 1001 [penwidth=1, color=black];\n\t1213 -> 1002 [penwidth=1, color=black];\n\t1213 -> 1003 [penwidth=1, color=black];\n\t1213 -> 1004 [penwidth=1, color=black];\n\t1213 -> 1005 [penwidth=1, color=black];\n\t1213 -> 1006 [penwidth=1, color=black];\n\t1213 -> 1007 [penwidth=1, color=black];\n\t1213 -> 1008 [penwidth=1, color=black];\n\t1213 -> 1009 [penwidth=1, color=black];\n\t1213 -> 1010 [penwidth=1, color=black];\n\t1213 -> 1011 [penwidth=1, color=black];\n\t1213 -> 1012 [penwidth=1, color=black];\n\t1213 -> 1013 [penwidth=1, color=black];\n\t1213 -> 1014 [penwidth=1, color=black];\n\t1213 -> 1015 [penwidth=1, color=black];\n\t1213 -> 1016 [penwidth=1, color=black];\n\t1213 -> 1017 [penwidth=1, color=black];\n\t1213 -> 1019 [penwidth=1, color=black];\n\t1213 -> 1020 [penwidth=1, color=black];\n\t1213 -> 1021 [penwidth=1, color=black];\n\t1213 -> 1022 [penwidth=1, color=black];\n\t1213 -> 1023 [penwidth=1, color=black];\n\t1213 -> 1026 [penwidth=1, color=black];\n\t1213 -> 1027 [penwidth=1, color=black];\n\t1213 -> 1028 [penwidth=1, color=black];\n\t1213 -> 1029 [penwidth=1, color=black];\n\t1213 -> 1030 [penwidth=1, color=black];\n\t1213 -> 1031 [penwidth=1, color=black];\n\t1213 -> 1032 [penwidth=1, color=black];\n\t1213 -> 1033 [penwidth=1, color=black];\n\t1213 -> 1034 [penwidth=1, color=black];\n\t1213 -> 1035 [penwidth=1, color=black];\n\t1213 -> 1036 [penwidth=1, color=black];\n\t1213 -> 1037 [penwidth=1, color=black];\n\t1213 -> 1038 [penwidth=1, color=black];\n\t1213 -> 1039 [penwidth=1, color=black];\n\t1213 -> 1040 [penwidth=1, color=black];\n\t1213 -> 1041 [penwidth=1, color=black];\n\t1213 -> 1042 [penwidth=1, color=black];\n\t1213 -> 1045 [penwidth=1, color=black];\n\t1213 -> 1046 [penwidth=1, color=black];\n\t1213 -> 1047 [penwidth=1, color=black];\n\t1213 -> 1048 [penwidth=1, color=black];\n\t1213 -> 1049 [penwidth=1, color=black];\n\t1213 -> 1050 [penwidth=1, color=black];\n\t1213 -> 1051 [penwidth=1, color=black];\n\t1213 -> 1052 [penwidth=1, color=black];\n\t1213 -> 1053 [penwidth=1, color=black];\n\t1213 -> 1054 [penwidth=1, color=black];\n\t1213 -> 1055 [penwidth=1, color=black];\n\t1213 -> 1057 [penwidth=1, color=black];\n\t1213 -> 1058 [penwidth=1, color=black];\n\t1213 -> 1059 [penwidth=1, color=black];\n\t1213 -> 1060 [penwidth=1, color=black];\n\t1213 -> 1061 [penwidth=1, color=black];\n\t1213 -> 1062 [penwidth=1, color=black];\n\t1213 -> 1068 [penwidth=1, color=black];\n\t1213 -> 1069 [penwidth=1, color=black];\n\t1213 -> 1070 [penwidth=1, color=black];\n\t1213 -> 1071 [penwidth=1, color=black];\n\t1213 -> 1072 [penwidth=1, color=black];\n\t1213 -> 1081 [penwidth=1, color=black];\n\t1213 -> 1082 [penwidth=1, color=black];\n\t1213 -> 1083 [penwidth=1, color=black];\n\t1213 -> 1084 [penwidth=1, color=black];\n\t1213 -> 1085 [penwidth=1, color=black];\n\t1213 -> 1087 [penwidth=1, color=black];\n\t1213 -> 1088 [penwidth=1, color=black];\n\t1213 -> 1089 [penwidth=1, color=black];\n\t1213 -> 1090 [penwidth=1, color=black];\n\t1213 -> 1091 [penwidth=1, color=black];\n\t1213 -> 1092 [penwidth=1, color=black];\n\t1213 -> 1093 [penwidth=1, color=black];\n\t1213 -> 1094 [penwidth=1, color=black];\n\t1213 -> 1095 [penwidth=1, color=black];\n\t1213 -> 1096 [penwidth=1, color=black];\n\t1213 -> 1097 [penwidth=1, color=black];\n\t1213 -> 1098 [penwidth=1, color=black];\n\t1213 -> 1099 [penwidth=1, color=black];\n\t1213 -> 1100 [penwidth=1, color=black];\n\t1213 -> 1101 [penwidth=1, color=black];\n\t1213 -> 1102 [penwidth=1, color=black];\n\t1213 -> 1103 [penwidth=1, color=black];\n\t1213 -> 1104 [penwidth=1, color=black];\n\t1213 -> 1105 [penwidth=1, color=black];\n\t1213 -> 1106 [penwidth=1, color=black];\n\t1213 -> 1107 [penwidth=1, color=black];\n\t1213 -> 1108 [penwidth=1, color=black];\n\t1213 -> 1109 [penwidth=1, color=black];\n\t1213 -> 1110 [penwidth=1, color=black];\n\t1213 -> 1111 [penwidth=1, color=black];\n\t1213 -> 1112 [penwidth=1, color=black];\n\t1213 -> 1113 [penwidth=1, color=black];\n\t1213 -> 1117 [penwidth=1, color=black];\n\t1213 -> 1118 [penwidth=1, color=black];\n\t1213 -> 1119 [penwidth=1, color=black];\n\t1213 -> 1120 [penwidth=1, color=black];\n\t1213 -> 1121 [penwidth=1, color=black];\n\t1213 -> 1122 [penwidth=1, color=black];\n\t1213 -> 1123 [penwidth=1, color=black];\n\t1213 -> 1124 [penwidth=1, color=black];\n\t1213 -> 1125 [penwidth=1, color=black];\n\t1213 -> 1126 [penwidth=1, color=black];\n\t1213 -> 1127 [penwidth=1, color=black];\n\t1213 -> 1128 [penwidth=1, color=black];\n\t1213 -> 1129 [penwidth=1, color=black];\n\t1213 -> 1130 [penwidth=1, color=black];\n\t1213 -> 1131 [penwidth=1, color=black];\n\t1213 -> 1132 [penwidth=1, color=black];\n\t1213 -> 1133 [penwidth=1, color=black];\n\t1213 -> 1134 [penwidth=1, color=black];\n\t1213 -> 1135 [penwidth=1, color=black];\n\t1213 -> 1136 [penwidth=1, color=black];\n\t1213 -> 1137 [penwidth=1, color=black];\n\t1213 -> 1138 [penwidth=1, color=black];\n\t1213 -> 1139 [penwidth=1, color=black];\n\t1213 -> 1140 [penwidth=1, color=black];\n\t1213 -> 1141 [penwidth=1, color=black];\n\t1213 -> 1143 [penwidth=1, color=black];\n\t1213 -> 1144 [penwidth=1, color=black];\n\t1213 -> 1145 [penwidth=1, color=black];\n\t1213 -> 1146 [penwidth=1, color=black];\n\t1213 -> 1147 [penwidth=1, color=black];\n\t1213 -> 1148 [penwidth=1, color=black];\n\t1213 -> 1149 [penwidth=1, color=black];\n\t1213 -> 1150 [penwidth=1, color=black];\n\t1213 -> 1151 [penwidth=1, color=black];\n\t1213 -> 1152 [penwidth=1, color=black];\n\t1213 -> 1153 [penwidth=1, color=black];\n\t1213 -> 1154 [penwidth=1, color=black];\n\t1213 -> 1155 [penwidth=1, color=black];\n\t1213 -> 1156 [penwidth=1, color=black];\n\t1213 -> 1157 [penwidth=1, color=black];\n\t1213 -> 1158 [penwidth=1, color=black];\n\t1213 -> 1159 [penwidth=1, color=black];\n\t1213 -> 1160 [penwidth=1, color=black];\n\t1213 -> 1161 [penwidth=1, color=black];\n\t1213 -> 1162 [penwidth=1, color=black];\n\t1213 -> 1163 [penwidth=1, color=black];\n\t1213 -> 1164 [penwidth=1, color=black];\n\t1213 -> 1165 [penwidth=1, color=black];\n\t1213 -> 1166 [penwidth=1, color=black];\n\t1213 -> 1167 [penwidth=1, color=black];\n\t1213 -> 1168 [penwidth=1, color=black];\n\t1213 -> 1169 [penwidth=1, color=black];\n\t1213 -> 1170 [penwidth=1, color=black];\n\t1213 -> 1171 [penwidth=1, color=black];\n\t1213 -> 1172 [penwidth=1, color=black];\n\t1213 -> 1173 [penwidth=1, color=black];\n\t1213 -> 1174 [penwidth=1, color=black];\n\t1213 -> 1175 [penwidth=1, color=black];\n\t1213 -> 1176 [penwidth=1, color=black];\n\t1213 -> 1177 [penwidth=1, color=black];\n\t1213 -> 1178 [penwidth=1, color=black];\n\t1213 -> 1179 [penwidth=1, color=black];\n\t1213 -> 1180 [penwidth=1, color=black];\n\t1213 -> 1181 [penwidth=1, color=black];\n\t1213 -> 1182 [penwidth=1, color=black];\n\t1213 -> 1183 [penwidth=1, color=black];\n\t1213 -> 1184 [penwidth=1, color=black];\n\t1213 -> 1185 [penwidth=1, color=black];\n\t1213 -> 1186 [penwidth=1, color=black];\n\t1213 -> 1189 [penwidth=1, color=black];\n\t1213 -> 1190 [penwidth=1, color=black];\n\t1213 -> 1191 [penwidth=1, color=black];\n\t1213 -> 1192 [penwidth=1, color=black];\n\t1213 -> 1193 [penwidth=1, color=black];\n\t1213 -> 1194 [penwidth=1, color=black];\n\t1213 -> 1435 [penwidth=\"7.063785208687608\", color=black];\n\t1213 -> 1436 [penwidth=\"5.7535901911063645\", color=black];\n\t1214 -> 1373 [penwidth=1, color=black];\n\t1217 -> 644 [penwidth=1, color=black];\n\t1217 -> 873 [penwidth=1, color=black];\n\t1217 -> 1074 [penwidth=1, color=black];\n\t1217 -> 1075 [penwidth=1, color=black];\n\t1217 -> 1188 [penwidth=1, color=black];\n\t1217 -> 1219 [penwidth=1, color=black];\n\t1217 -> 1227 [penwidth=1, color=black];\n\t1218 -> 644 [penwidth=1, color=black];\n\t1218 -> 1188 [penwidth=1, color=black];\n\t1219 -> 1207 [penwidth=1, color=black];\n\t1220 -> 611 [penwidth=1, color=black];\n\t1220 -> 642 [penwidth=1, color=black];\n\t1220 -> 643 [penwidth=1, color=black];\n\t1220 -> 651 [penwidth=1, color=black];\n\t1220 -> 652 [penwidth=1, color=black];\n\t1220 -> 690 [penwidth=1, color=black];\n\t1220 -> 752 [penwidth=1, color=black];\n\t1220 -> 871 [penwidth=1, color=black];\n\t1220 -> 872 [penwidth=1, color=black];\n\t1220 -> 1018 [penwidth=1, color=black];\n\t1220 -> 1024 [penwidth=1, color=black];\n\t1220 -> 1025 [penwidth=1, color=black];\n\t1220 -> 1043 [penwidth=1, color=black];\n\t1220 -> 1044 [penwidth=1, color=black];\n\t1220 -> 1056 [penwidth=1, color=black];\n\t1220 -> 1063 [penwidth=1, color=black];\n\t1220 -> 1064 [penwidth=1, color=black];\n\t1220 -> 1065 [penwidth=1, color=black];\n\t1220 -> 1066 [penwidth=1, color=black];\n\t1220 -> 1067 [penwidth=1, color=black];\n\t1220 -> 1073 [penwidth=1, color=black];\n\t1220 -> 1076 [penwidth=1, color=black];\n\t1220 -> 1077 [penwidth=1, color=black];\n\t1220 -> 1078 [penwidth=1, color=black];\n\t1220 -> 1079 [penwidth=1, color=black];\n\t1220 -> 1080 [penwidth=1, color=black];\n\t1220 -> 1086 [penwidth=1, color=black];\n\t1220 -> 1114 [penwidth=1, color=black];\n\t1220 -> 1115 [penwidth=1, color=black];\n\t1220 -> 1116 [penwidth=1, color=black];\n\t1220 -> 1142 [penwidth=1, color=black];\n\t1220 -> 1195 [penwidth=1, color=black];\n\t1220 -> 1196 [penwidth=1, color=black];\n\t1220 -> 1197 [penwidth=1, color=black];\n\t1220 -> 1198 [penwidth=1, color=black];\n\t1221 -> 644 [penwidth=1, color=black];\n\t1221 -> 873 [penwidth=1, color=black];\n\t1221 -> 1074 [penwidth=1, color=black];\n\t1221 -> 1075 [penwidth=1, color=black];\n\t1221 -> 1188 [penwidth=1, color=black];\n\t1221 -> 1204 [penwidth=\"1.6931471805599454\", color=black];\n\t1222 -> 645 [penwidth=1, color=black];\n\t1222 -> 1187 [penwidth=1, color=black];\n\t1223 -> 612 [penwidth=1, color=black];\n\t1223 -> 613 [penwidth=1, color=black];\n\t1223 -> 614 [penwidth=1, color=black];\n\t1223 -> 615 [penwidth=1, color=black];\n\t1223 -> 616 [penwidth=1, color=black];\n\t1223 -> 617 [penwidth=1, color=black];\n\t1223 -> 618 [penwidth=1, color=black];\n\t1223 -> 619 [penwidth=1, color=black];\n\t1223 -> 620 [penwidth=1, color=black];\n\t1223 -> 621 [penwidth=1, color=black];\n\t1223 -> 622 [penwidth=1, color=black];\n\t1223 -> 623 [penwidth=1, color=black];\n\t1223 -> 624 [penwidth=1, color=black];\n\t1223 -> 625 [penwidth=1, color=black];\n\t1223 -> 626 [penwidth=1, color=black];\n\t1223 -> 627 [penwidth=1, color=black];\n\t1223 -> 628 [penwidth=1, color=black];\n\t1223 -> 629 [penwidth=1, color=black];\n\t1223 -> 630 [penwidth=1, color=black];\n\t1223 -> 631 [penwidth=1, color=black];\n\t1223 -> 632 [penwidth=1, color=black];\n\t1223 -> 633 [penwidth=1, color=black];\n\t1223 -> 634 [penwidth=1, color=black];\n\t1223 -> 635 [penwidth=1, color=black];\n\t1223 -> 636 [penwidth=1, color=black];\n\t1223 -> 637 [penwidth=1, color=black];\n\t1223 -> 638 [penwidth=1, color=black];\n\t1223 -> 639 [penwidth=1, color=black];\n\t1223 -> 640 [penwidth=1, color=black];\n\t1223 -> 641 [penwidth=1, color=black];\n\t1223 -> 646 [penwidth=1, color=black];\n\t1223 -> 647 [penwidth=1, color=black];\n\t1223 -> 648 [penwidth=1, color=black];\n\t1223 -> 649 [penwidth=1, color=black];\n\t1223 -> 650 [penwidth=1, color=black];\n\t1223 -> 653 [penwidth=1, color=black];\n\t1223 -> 654 [penwidth=1, color=black];\n\t1223 -> 655 [penwidth=1, color=black];\n\t1223 -> 656 [penwidth=1, color=black];\n\t1223 -> 657 [penwidth=1, color=black];\n\t1223 -> 658 [penwidth=1, color=black];\n\t1223 -> 659 [penwidth=1, color=black];\n\t1223 -> 660 [penwidth=1, color=black];\n\t1223 -> 661 [penwidth=1, color=black];\n\t1223 -> 662 [penwidth=1, color=black];\n\t1223 -> 663 [penwidth=1, color=black];\n\t1223 -> 664 [penwidth=1, color=black];\n\t1223 -> 665 [penwidth=1, color=black];\n\t1223 -> 666 [penwidth=1, color=black];\n\t1223 -> 667 [penwidth=1, color=black];\n\t1223 -> 668 [penwidth=1, color=black];\n\t1223 -> 669 [penwidth=1, color=black];\n\t1223 -> 670 [penwidth=1, color=black];\n\t1223 -> 671 [penwidth=1, color=black];\n\t1223 -> 672 [penwidth=1, color=black];\n\t1223 -> 673 [penwidth=1, color=black];\n\t1223 -> 674 [penwidth=1, color=black];\n\t1223 -> 675 [penwidth=1, color=black];\n\t1223 -> 676 [penwidth=1, color=black];\n\t1223 -> 677 [penwidth=1, color=black];\n\t1223 -> 678 [penwidth=1, color=black];\n\t1223 -> 679 [penwidth=1, color=black];\n\t1223 -> 680 [penwidth=1, color=black];\n\t1223 -> 681 [penwidth=1, color=black];\n\t1223 -> 682 [penwidth=1, color=black];\n\t1223 -> 683 [penwidth=1, color=black];\n\t1223 -> 684 [penwidth=1, color=black];\n\t1223 -> 685 [penwidth=1, color=black];\n\t1223 -> 686 [penwidth=1, color=black];\n\t1223 -> 687 [penwidth=1, color=black];\n\t1223 -> 688 [penwidth=1, color=black];\n\t1223 -> 689 [penwidth=1, color=black];\n\t1223 -> 691 [penwidth=1, color=black];\n\t1223 -> 692 [penwidth=1, color=black];\n\t1223 -> 693 [penwidth=1, color=black];\n\t1223 -> 694 [penwidth=1, color=black];\n\t1223 -> 695 [penwidth=1, color=black];\n\t1223 -> 696 [penwidth=1, color=black];\n\t1223 -> 697 [penwidth=1, color=black];\n\t1223 -> 698 [penwidth=1, color=black];\n\t1223 -> 699 [penwidth=1, color=black];\n\t1223 -> 700 [penwidth=1, color=black];\n\t1223 -> 701 [penwidth=1, color=black];\n\t1223 -> 702 [penwidth=1, color=black];\n\t1223 -> 703 [penwidth=1, color=black];\n\t1223 -> 704 [penwidth=1, color=black];\n\t1223 -> 705 [penwidth=1, color=black];\n\t1223 -> 706 [penwidth=1, color=black];\n\t1223 -> 707 [penwidth=1, color=black];\n\t1223 -> 708 [penwidth=1, color=black];\n\t1223 -> 709 [penwidth=1, color=black];\n\t1223 -> 710 [penwidth=1, color=black];\n\t1223 -> 711 [penwidth=1, color=black];\n\t1223 -> 712 [penwidth=1, color=black];\n\t1223 -> 713 [penwidth=1, color=black];\n\t1223 -> 714 [penwidth=1, color=black];\n\t1223 -> 715 [penwidth=1, color=black];\n\t1223 -> 716 [penwidth=1, color=black];\n\t1223 -> 717 [penwidth=1, color=black];\n\t1223 -> 718 [penwidth=1, color=black];\n\t1223 -> 719 [penwidth=1, color=black];\n\t1223 -> 720 [penwidth=1, color=black];\n\t1223 -> 721 [penwidth=1, color=black];\n\t1223 -> 722 [penwidth=1, color=black];\n\t1223 -> 723 [penwidth=1, color=black];\n\t1223 -> 724 [penwidth=1, color=black];\n\t1223 -> 725 [penwidth=1, color=black];\n\t1223 -> 726 [penwidth=1, color=black];\n\t1223 -> 727 [penwidth=1, color=black];\n\t1223 -> 728 [penwidth=1, color=black];\n\t1223 -> 729 [penwidth=1, color=black];\n\t1223 -> 730 [penwidth=1, color=black];\n\t1223 -> 731 [penwidth=1, color=black];\n\t1223 -> 732 [penwidth=1, color=black];\n\t1223 -> 733 [penwidth=1, color=black];\n\t1223 -> 734 [penwidth=1, color=black];\n\t1223 -> 735 [penwidth=1, color=black];\n\t1223 -> 736 [penwidth=1, color=black];\n\t1223 -> 737 [penwidth=1, color=black];\n\t1223 -> 738 [penwidth=1, color=black];\n\t1223 -> 739 [penwidth=1, color=black];\n\t1223 -> 740 [penwidth=1, color=black];\n\t1223 -> 741 [penwidth=1, color=black];\n\t1223 -> 742 [penwidth=1, color=black];\n\t1223 -> 743 [penwidth=1, color=black];\n\t1223 -> 744 [penwidth=1, color=black];\n\t1223 -> 745 [penwidth=1, color=black];\n\t1223 -> 746 [penwidth=1, color=black];\n\t1223 -> 747 [penwidth=1, color=black];\n\t1223 -> 748 [penwidth=1, color=black];\n\t1223 -> 749 [penwidth=1, color=black];\n\t1223 -> 750 [penwidth=1, color=black];\n\t1223 -> 751 [penwidth=1, color=black];\n\t1223 -> 753 [penwidth=1, color=black];\n\t1223 -> 754 [penwidth=1, color=black];\n\t1223 -> 755 [penwidth=1, color=black];\n\t1223 -> 756 [penwidth=1, color=black];\n\t1223 -> 757 [penwidth=1, color=black];\n\t1223 -> 758 [penwidth=1, color=black];\n\t1223 -> 759 [penwidth=1, color=black];\n\t1223 -> 760 [penwidth=1, color=black];\n\t1223 -> 761 [penwidth=1, color=black];\n\t1223 -> 762 [penwidth=1, color=black];\n\t1223 -> 763 [penwidth=1, color=black];\n\t1223 -> 764 [penwidth=1, color=black];\n\t1223 -> 765 [penwidth=1, color=black];\n\t1223 -> 766 [penwidth=1, color=black];\n\t1223 -> 767 [penwidth=1, color=black];\n\t1223 -> 768 [penwidth=1, color=black];\n\t1223 -> 769 [penwidth=1, color=black];\n\t1223 -> 770 [penwidth=1, color=black];\n\t1223 -> 771 [penwidth=1, color=black];\n\t1223 -> 772 [penwidth=1, color=black];\n\t1223 -> 773 [penwidth=1, color=black];\n\t1223 -> 774 [penwidth=1, color=black];\n\t1223 -> 775 [penwidth=1, color=black];\n\t1223 -> 776 [penwidth=1, color=black];\n\t1223 -> 777 [penwidth=1, color=black];\n\t1223 -> 778 [penwidth=1, color=black];\n\t1223 -> 779 [penwidth=1, color=black];\n\t1223 -> 780 [penwidth=1, color=black];\n\t1223 -> 781 [penwidth=1, color=black];\n\t1223 -> 782 [penwidth=1, color=black];\n\t1223 -> 783 [penwidth=1, color=black];\n\t1223 -> 784 [penwidth=1, color=black];\n\t1223 -> 785 [penwidth=1, color=black];\n\t1223 -> 786 [penwidth=1, color=black];\n\t1223 -> 787 [penwidth=1, color=black];\n\t1223 -> 788 [penwidth=1, color=black];\n\t1223 -> 789 [penwidth=1, color=black];\n\t1223 -> 790 [penwidth=1, color=black];\n\t1223 -> 791 [penwidth=1, color=black];\n\t1223 -> 792 [penwidth=1, color=black];\n\t1223 -> 793 [penwidth=1, color=black];\n\t1223 -> 794 [penwidth=1, color=black];\n\t1223 -> 795 [penwidth=1, color=black];\n\t1223 -> 796 [penwidth=1, color=black];\n\t1223 -> 797 [penwidth=1, color=black];\n\t1223 -> 798 [penwidth=1, color=black];\n\t1223 -> 799 [penwidth=1, color=black];\n\t1223 -> 800 [penwidth=1, color=black];\n\t1223 -> 801 [penwidth=1, color=black];\n\t1223 -> 802 [penwidth=1, color=black];\n\t1223 -> 803 [penwidth=1, color=black];\n\t1223 -> 804 [penwidth=1, color=black];\n\t1223 -> 805 [penwidth=1, color=black];\n\t1223 -> 806 [penwidth=1, color=black];\n\t1223 -> 807 [penwidth=1, color=black];\n\t1223 -> 808 [penwidth=1, color=black];\n\t1223 -> 809 [penwidth=1, color=black];\n\t1223 -> 810 [penwidth=1, color=black];\n\t1223 -> 811 [penwidth=1, color=black];\n\t1223 -> 812 [penwidth=1, color=black];\n\t1223 -> 813 [penwidth=1, color=black];\n\t1223 -> 814 [penwidth=1, color=black];\n\t1223 -> 815 [penwidth=1, color=black];\n\t1223 -> 816 [penwidth=1, color=black];\n\t1223 -> 817 [penwidth=1, color=black];\n\t1223 -> 818 [penwidth=1, color=black];\n\t1223 -> 819 [penwidth=1, color=black];\n\t1223 -> 820 [penwidth=1, color=black];\n\t1223 -> 821 [penwidth=1, color=black];\n\t1223 -> 822 [penwidth=1, color=black];\n\t1223 -> 823 [penwidth=1, color=black];\n\t1223 -> 824 [penwidth=1, color=black];\n\t1223 -> 825 [penwidth=1, color=black];\n\t1223 -> 826 [penwidth=1, color=black];\n\t1223 -> 827 [penwidth=1, color=black];\n\t1223 -> 828 [penwidth=1, color=black];\n\t1223 -> 829 [penwidth=1, color=black];\n\t1223 -> 830 [penwidth=1, color=black];\n\t1223 -> 831 [penwidth=1, color=black];\n\t1223 -> 832 [penwidth=1, color=black];\n\t1223 -> 833 [penwidth=1, color=black];\n\t1223 -> 834 [penwidth=1, color=black];\n\t1223 -> 835 [penwidth=1, color=black];\n\t1223 -> 836 [penwidth=1, color=black];\n\t1223 -> 837 [penwidth=1, color=black];\n\t1223 -> 838 [penwidth=1, color=black];\n\t1223 -> 839 [penwidth=1, color=black];\n\t1223 -> 840 [penwidth=1, color=black];\n\t1223 -> 841 [penwidth=1, color=black];\n\t1223 -> 842 [penwidth=1, color=black];\n\t1223 -> 843 [penwidth=1, color=black];\n\t1223 -> 844 [penwidth=1, color=black];\n\t1223 -> 845 [penwidth=1, color=black];\n\t1223 -> 846 [penwidth=1, color=black];\n\t1223 -> 847 [penwidth=1, color=black];\n\t1223 -> 848 [penwidth=1, color=black];\n\t1223 -> 849 [penwidth=1, color=black];\n\t1223 -> 850 [penwidth=1, color=black];\n\t1223 -> 851 [penwidth=1, color=black];\n\t1223 -> 852 [penwidth=1, color=black];\n\t1223 -> 853 [penwidth=1, color=black];\n\t1223 -> 854 [penwidth=1, color=black];\n\t1223 -> 855 [penwidth=1, color=black];\n\t1223 -> 856 [penwidth=1, color=black];\n\t1223 -> 857 [penwidth=1, color=black];\n\t1223 -> 858 [penwidth=1, color=black];\n\t1223 -> 859 [penwidth=1, color=black];\n\t1223 -> 860 [penwidth=1, color=black];\n\t1223 -> 861 [penwidth=1, color=black];\n\t1223 -> 862 [penwidth=1, color=black];\n\t1223 -> 863 [penwidth=1, color=black];\n\t1223 -> 864 [penwidth=1, color=black];\n\t1223 -> 865 [penwidth=1, color=black];\n\t1223 -> 866 [penwidth=1, color=black];\n\t1223 -> 867 [penwidth=1, color=black];\n\t1223 -> 868 [penwidth=1, color=black];\n\t1223 -> 869 [penwidth=1, color=black];\n\t1223 -> 870 [penwidth=1, color=black];\n\t1223 -> 874 [penwidth=1, color=black];\n\t1223 -> 875 [penwidth=1, color=black];\n\t1223 -> 876 [penwidth=1, color=black];\n\t1223 -> 877 [penwidth=1, color=black];\n\t1223 -> 878 [penwidth=1, color=black];\n\t1223 -> 879 [penwidth=1, color=black];\n\t1223 -> 880 [penwidth=1, color=black];\n\t1223 -> 881 [penwidth=1, color=black];\n\t1223 -> 882 [penwidth=1, color=black];\n\t1223 -> 883 [penwidth=1, color=black];\n\t1223 -> 884 [penwidth=1, color=black];\n\t1223 -> 885 [penwidth=1, color=black];\n\t1223 -> 886 [penwidth=1, color=black];\n\t1223 -> 887 [penwidth=1, color=black];\n\t1223 -> 888 [penwidth=1, color=black];\n\t1223 -> 889 [penwidth=1, color=black];\n\t1223 -> 890 [penwidth=1, color=black];\n\t1223 -> 891 [penwidth=1, color=black];\n\t1223 -> 892 [penwidth=1, color=black];\n\t1223 -> 893 [penwidth=1, color=black];\n\t1223 -> 894 [penwidth=1, color=black];\n\t1223 -> 895 [penwidth=1, color=black];\n\t1223 -> 896 [penwidth=1, color=black];\n\t1223 -> 897 [penwidth=1, color=black];\n\t1223 -> 898 [penwidth=1, color=black];\n\t1223 -> 899 [penwidth=1, color=black];\n\t1223 -> 900 [penwidth=1, color=black];\n\t1223 -> 901 [penwidth=1, color=black];\n\t1223 -> 902 [penwidth=1, color=black];\n\t1223 -> 903 [penwidth=1, color=black];\n\t1223 -> 904 [penwidth=1, color=black];\n\t1223 -> 905 [penwidth=1, color=black];\n\t1223 -> 906 [penwidth=1, color=black];\n\t1223 -> 907 [penwidth=1, color=black];\n\t1223 -> 908 [penwidth=1, color=black];\n\t1223 -> 909 [penwidth=1, color=black];\n\t1223 -> 910 [penwidth=1, color=black];\n\t1223 -> 911 [penwidth=1, color=black];\n\t1223 -> 912 [penwidth=1, color=black];\n\t1223 -> 913 [penwidth=1, color=black];\n\t1223 -> 914 [penwidth=1, color=black];\n\t1223 -> 915 [penwidth=1, color=black];\n\t1223 -> 916 [penwidth=1, color=black];\n\t1223 -> 917 [penwidth=1, color=black];\n\t1223 -> 918 [penwidth=1, color=black];\n\t1223 -> 919 [penwidth=1, color=black];\n\t1223 -> 920 [penwidth=1, color=black];\n\t1223 -> 921 [penwidth=1, color=black];\n\t1223 -> 922 [penwidth=1, color=black];\n\t1223 -> 923 [penwidth=1, color=black];\n\t1223 -> 924 [penwidth=1, color=black];\n\t1223 -> 925 [penwidth=1, color=black];\n\t1223 -> 926 [penwidth=1, color=black];\n\t1223 -> 927 [penwidth=1, color=black];\n\t1223 -> 928 [penwidth=1, color=black];\n\t1223 -> 929 [penwidth=1, color=black];\n\t1223 -> 930 [penwidth=1, color=black];\n\t1223 -> 931 [penwidth=1, color=black];\n\t1223 -> 932 [penwidth=1, color=black];\n\t1223 -> 933 [penwidth=1, color=black];\n\t1223 -> 934 [penwidth=1, color=black];\n\t1223 -> 935 [penwidth=1, color=black];\n\t1223 -> 936 [penwidth=1, color=black];\n\t1223 -> 937 [penwidth=1, color=black];\n\t1223 -> 938 [penwidth=1, color=black];\n\t1223 -> 939 [penwidth=1, color=black];\n\t1223 -> 940 [penwidth=1, color=black];\n\t1223 -> 941 [penwidth=1, color=black];\n\t1223 -> 942 [penwidth=1, color=black];\n\t1223 -> 943 [penwidth=1, color=black];\n\t1223 -> 944 [penwidth=1, color=black];\n\t1223 -> 945 [penwidth=1, color=black];\n\t1223 -> 946 [penwidth=1, color=black];\n\t1223 -> 947 [penwidth=1, color=black];\n\t1223 -> 948 [penwidth=1, color=black];\n\t1223 -> 949 [penwidth=1, color=black];\n\t1223 -> 950 [penwidth=1, color=black];\n\t1223 -> 951 [penwidth=1, color=black];\n\t1223 -> 952 [penwidth=1, color=black];\n\t1223 -> 953 [penwidth=1, color=black];\n\t1223 -> 954 [penwidth=1, color=black];\n\t1223 -> 955 [penwidth=1, color=black];\n\t1223 -> 956 [penwidth=1, color=black];\n\t1223 -> 957 [penwidth=1, color=black];\n\t1223 -> 958 [penwidth=1, color=black];\n\t1223 -> 959 [penwidth=1, color=black];\n\t1223 -> 960 [penwidth=1, color=black];\n\t1223 -> 961 [penwidth=1, color=black];\n\t1223 -> 962 [penwidth=1, color=black];\n\t1223 -> 963 [penwidth=1, color=black];\n\t1223 -> 964 [penwidth=1, color=black];\n\t1223 -> 965 [penwidth=1, color=black];\n\t1223 -> 966 [penwidth=1, color=black];\n\t1223 -> 967 [penwidth=1, color=black];\n\t1223 -> 968 [penwidth=1, color=black];\n\t1223 -> 969 [penwidth=1, color=black];\n\t1223 -> 970 [penwidth=1, color=black];\n\t1223 -> 971 [penwidth=1, color=black];\n\t1223 -> 972 [penwidth=1, color=black];\n\t1223 -> 973 [penwidth=1, color=black];\n\t1223 -> 974 [penwidth=1, color=black];\n\t1223 -> 975 [penwidth=1, color=black];\n\t1223 -> 976 [penwidth=1, color=black];\n\t1223 -> 977 [penwidth=1, color=black];\n\t1223 -> 978 [penwidth=1, color=black];\n\t1223 -> 979 [penwidth=1, color=black];\n\t1223 -> 980 [penwidth=1, color=black];\n\t1223 -> 981 [penwidth=1, color=black];\n\t1223 -> 982 [penwidth=1, color=black];\n\t1223 -> 983 [penwidth=1, color=black];\n\t1223 -> 984 [penwidth=1, color=black];\n\t1223 -> 985 [penwidth=1, color=black];\n\t1223 -> 986 [penwidth=1, color=black];\n\t1223 -> 987 [penwidth=1, color=black];\n\t1223 -> 988 [penwidth=1, color=black];\n\t1223 -> 989 [penwidth=1, color=black];\n\t1223 -> 990 [penwidth=1, color=black];\n\t1223 -> 991 [penwidth=1, color=black];\n\t1223 -> 992 [penwidth=1, color=black];\n\t1223 -> 993 [penwidth=1, color=black];\n\t1223 -> 994 [penwidth=1, color=black];\n\t1223 -> 995 [penwidth=1, color=black];\n\t1223 -> 996 [penwidth=1, color=black];\n\t1223 -> 997 [penwidth=1, color=black];\n\t1223 -> 998 [penwidth=1, color=black];\n\t1223 -> 999 [penwidth=1, color=black];\n\t1223 -> 1000 [penwidth=1, color=black];\n\t1223 -> 1001 [penwidth=1, color=black];\n\t1223 -> 1002 [penwidth=1, color=black];\n\t1223 -> 1003 [penwidth=1, color=black];\n\t1223 -> 1004 [penwidth=1, color=black];\n\t1223 -> 1005 [penwidth=1, color=black];\n\t1223 -> 1006 [penwidth=1, color=black];\n\t1223 -> 1007 [penwidth=1, color=black];\n\t1223 -> 1008 [penwidth=1, color=black];\n\t1223 -> 1009 [penwidth=1, color=black];\n\t1223 -> 1010 [penwidth=1, color=black];\n\t1223 -> 1011 [penwidth=1, color=black];\n\t1223 -> 1012 [penwidth=1, color=black];\n\t1223 -> 1013 [penwidth=1, color=black];\n\t1223 -> 1014 [penwidth=1, color=black];\n\t1223 -> 1015 [penwidth=1, color=black];\n\t1223 -> 1016 [penwidth=1, color=black];\n\t1223 -> 1017 [penwidth=1, color=black];\n\t1223 -> 1019 [penwidth=1, color=black];\n\t1223 -> 1020 [penwidth=1, color=black];\n\t1223 -> 1021 [penwidth=1, color=black];\n\t1223 -> 1022 [penwidth=1, color=black];\n\t1223 -> 1023 [penwidth=1, color=black];\n\t1223 -> 1026 [penwidth=1, color=black];\n\t1223 -> 1027 [penwidth=1, color=black];\n\t1223 -> 1028 [penwidth=1, color=black];\n\t1223 -> 1029 [penwidth=1, color=black];\n\t1223 -> 1030 [penwidth=1, color=black];\n\t1223 -> 1031 [penwidth=1, color=black];\n\t1223 -> 1032 [penwidth=1, color=black];\n\t1223 -> 1033 [penwidth=1, color=black];\n\t1223 -> 1034 [penwidth=1, color=black];\n\t1223 -> 1035 [penwidth=1, color=black];\n\t1223 -> 1036 [penwidth=1, color=black];\n\t1223 -> 1037 [penwidth=1, color=black];\n\t1223 -> 1038 [penwidth=1, color=black];\n\t1223 -> 1039 [penwidth=1, color=black];\n\t1223 -> 1040 [penwidth=1, color=black];\n\t1223 -> 1041 [penwidth=1, color=black];\n\t1223 -> 1042 [penwidth=1, color=black];\n\t1223 -> 1045 [penwidth=1, color=black];\n\t1223 -> 1046 [penwidth=1, color=black];\n\t1223 -> 1047 [penwidth=1, color=black];\n\t1223 -> 1048 [penwidth=1, color=black];\n\t1223 -> 1049 [penwidth=1, color=black];\n\t1223 -> 1050 [penwidth=1, color=black];\n\t1223 -> 1051 [penwidth=1, color=black];\n\t1223 -> 1052 [penwidth=1, color=black];\n\t1223 -> 1053 [penwidth=1, color=black];\n\t1223 -> 1054 [penwidth=1, color=black];\n\t1223 -> 1055 [penwidth=1, color=black];\n\t1223 -> 1057 [penwidth=1, color=black];\n\t1223 -> 1058 [penwidth=1, color=black];\n\t1223 -> 1059 [penwidth=1, color=black];\n\t1223 -> 1060 [penwidth=1, color=black];\n\t1223 -> 1061 [penwidth=1, color=black];\n\t1223 -> 1062 [penwidth=1, color=black];\n\t1223 -> 1068 [penwidth=1, color=black];\n\t1223 -> 1069 [penwidth=1, color=black];\n\t1223 -> 1070 [penwidth=1, color=black];\n\t1223 -> 1071 [penwidth=1, color=black];\n\t1223 -> 1072 [penwidth=1, color=black];\n\t1223 -> 1081 [penwidth=1, color=black];\n\t1223 -> 1082 [penwidth=1, color=black];\n\t1223 -> 1083 [penwidth=1, color=black];\n\t1223 -> 1084 [penwidth=1, color=black];\n\t1223 -> 1085 [penwidth=1, color=black];\n\t1223 -> 1087 [penwidth=1, color=black];\n\t1223 -> 1088 [penwidth=1, color=black];\n\t1223 -> 1089 [penwidth=1, color=black];\n\t1223 -> 1090 [penwidth=1, color=black];\n\t1223 -> 1091 [penwidth=1, color=black];\n\t1223 -> 1092 [penwidth=1, color=black];\n\t1223 -> 1093 [penwidth=1, color=black];\n\t1223 -> 1094 [penwidth=1, color=black];\n\t1223 -> 1095 [penwidth=1, color=black];\n\t1223 -> 1096 [penwidth=1, color=black];\n\t1223 -> 1097 [penwidth=1, color=black];\n\t1223 -> 1098 [penwidth=1, color=black];\n\t1223 -> 1099 [penwidth=1, color=black];\n\t1223 -> 1100 [penwidth=1, color=black];\n\t1223 -> 1101 [penwidth=1, color=black];\n\t1223 -> 1102 [penwidth=1, color=black];\n\t1223 -> 1103 [penwidth=1, color=black];\n\t1223 -> 1104 [penwidth=1, color=black];\n\t1223 -> 1105 [penwidth=1, color=black];\n\t1223 -> 1106 [penwidth=1, color=black];\n\t1223 -> 1107 [penwidth=1, color=black];\n\t1223 -> 1108 [penwidth=1, color=black];\n\t1223 -> 1109 [penwidth=1, color=black];\n\t1223 -> 1110 [penwidth=1, color=black];\n\t1223 -> 1111 [penwidth=1, color=black];\n\t1223 -> 1112 [penwidth=1, color=black];\n\t1223 -> 1113 [penwidth=1, color=black];\n\t1223 -> 1117 [penwidth=1, color=black];\n\t1223 -> 1118 [penwidth=1, color=black];\n\t1223 -> 1119 [penwidth=1, color=black];\n\t1223 -> 1120 [penwidth=1, color=black];\n\t1223 -> 1121 [penwidth=1, color=black];\n\t1223 -> 1122 [penwidth=1, color=black];\n\t1223 -> 1123 [penwidth=1, color=black];\n\t1223 -> 1124 [penwidth=1, color=black];\n\t1223 -> 1125 [penwidth=1, color=black];\n\t1223 -> 1126 [penwidth=1, color=black];\n\t1223 -> 1127 [penwidth=1, color=black];\n\t1223 -> 1128 [penwidth=1, color=black];\n\t1223 -> 1129 [penwidth=1, color=black];\n\t1223 -> 1130 [penwidth=1, color=black];\n\t1223 -> 1131 [penwidth=1, color=black];\n\t1223 -> 1132 [penwidth=1, color=black];\n\t1223 -> 1133 [penwidth=1, color=black];\n\t1223 -> 1134 [penwidth=1, color=black];\n\t1223 -> 1135 [penwidth=1, color=black];\n\t1223 -> 1136 [penwidth=1, color=black];\n\t1223 -> 1137 [penwidth=1, color=black];\n\t1223 -> 1138 [penwidth=1, color=black];\n\t1223 -> 1139 [penwidth=1, color=black];\n\t1223 -> 1140 [penwidth=1, color=black];\n\t1223 -> 1141 [penwidth=1, color=black];\n\t1223 -> 1143 [penwidth=1, color=black];\n\t1223 -> 1144 [penwidth=1, color=black];\n\t1223 -> 1145 [penwidth=1, color=black];\n\t1223 -> 1146 [penwidth=1, color=black];\n\t1223 -> 1147 [penwidth=1, color=black];\n\t1223 -> 1148 [penwidth=1, color=black];\n\t1223 -> 1149 [penwidth=1, color=black];\n\t1223 -> 1150 [penwidth=1, color=black];\n\t1223 -> 1151 [penwidth=1, color=black];\n\t1223 -> 1152 [penwidth=1, color=black];\n\t1223 -> 1153 [penwidth=1, color=black];\n\t1223 -> 1154 [penwidth=1, color=black];\n\t1223 -> 1155 [penwidth=1, color=black];\n\t1223 -> 1156 [penwidth=1, color=black];\n\t1223 -> 1157 [penwidth=1, color=black];\n\t1223 -> 1158 [penwidth=1, color=black];\n\t1223 -> 1159 [penwidth=1, color=black];\n\t1223 -> 1160 [penwidth=1, color=black];\n\t1223 -> 1161 [penwidth=1, color=black];\n\t1223 -> 1162 [penwidth=1, color=black];\n\t1223 -> 1163 [penwidth=1, color=black];\n\t1223 -> 1164 [penwidth=1, color=black];\n\t1223 -> 1165 [penwidth=1, color=black];\n\t1223 -> 1166 [penwidth=1, color=black];\n\t1223 -> 1167 [penwidth=1, color=black];\n\t1223 -> 1168 [penwidth=1, color=black];\n\t1223 -> 1169 [penwidth=1, color=black];\n\t1223 -> 1170 [penwidth=1, color=black];\n\t1223 -> 1171 [penwidth=1, color=black];\n\t1223 -> 1172 [penwidth=1, color=black];\n\t1223 -> 1173 [penwidth=1, color=black];\n\t1223 -> 1174 [penwidth=1, color=black];\n\t1223 -> 1175 [penwidth=1, color=black];\n\t1223 -> 1176 [penwidth=1, color=black];\n\t1223 -> 1177 [penwidth=1, color=black];\n\t1223 -> 1178 [penwidth=1, color=black];\n\t1223 -> 1179 [penwidth=1, color=black];\n\t1223 -> 1180 [penwidth=1, color=black];\n\t1223 -> 1181 [penwidth=1, color=black];\n\t1223 -> 1182 [penwidth=1, color=black];\n\t1223 -> 1183 [penwidth=1, color=black];\n\t1223 -> 1184 [penwidth=1, color=black];\n\t1223 -> 1185 [penwidth=1, color=black];\n\t1223 -> 1186 [penwidth=1, color=black];\n\t1223 -> 1189 [penwidth=1, color=black];\n\t1223 -> 1190 [penwidth=1, color=black];\n\t1223 -> 1191 [penwidth=1, color=black];\n\t1223 -> 1192 [penwidth=1, color=black];\n\t1223 -> 1193 [penwidth=1, color=black];\n\t1223 -> 1194 [penwidth=1, color=black];\n\t1227 -> 612 [penwidth=1, color=black];\n\t1227 -> 613 [penwidth=1, color=black];\n\t1227 -> 614 [penwidth=1, color=black];\n\t1227 -> 615 [penwidth=1, color=black];\n\t1227 -> 616 [penwidth=1, color=black];\n\t1227 -> 617 [penwidth=1, color=black];\n\t1227 -> 618 [penwidth=1, color=black];\n\t1227 -> 619 [penwidth=1, color=black];\n\t1227 -> 620 [penwidth=1, color=black];\n\t1227 -> 621 [penwidth=1, color=black];\n\t1227 -> 622 [penwidth=1, color=black];\n\t1227 -> 623 [penwidth=1, color=black];\n\t1227 -> 624 [penwidth=1, color=black];\n\t1227 -> 625 [penwidth=1, color=black];\n\t1227 -> 626 [penwidth=1, color=black];\n\t1227 -> 627 [penwidth=1, color=black];\n\t1227 -> 628 [penwidth=1, color=black];\n\t1227 -> 629 [penwidth=1, color=black];\n\t1227 -> 630 [penwidth=1, color=black];\n\t1227 -> 631 [penwidth=1, color=black];\n\t1227 -> 632 [penwidth=1, color=black];\n\t1227 -> 633 [penwidth=1, color=black];\n\t1227 -> 634 [penwidth=1, color=black];\n\t1227 -> 635 [penwidth=1, color=black];\n\t1227 -> 636 [penwidth=1, color=black];\n\t1227 -> 637 [penwidth=1, color=black];\n\t1227 -> 638 [penwidth=1, color=black];\n\t1227 -> 639 [penwidth=1, color=black];\n\t1227 -> 640 [penwidth=1, color=black];\n\t1227 -> 641 [penwidth=1, color=black];\n\t1227 -> 646 [penwidth=1, color=black];\n\t1227 -> 647 [penwidth=1, color=black];\n\t1227 -> 648 [penwidth=1, color=black];\n\t1227 -> 649 [penwidth=1, color=black];\n\t1227 -> 650 [penwidth=1, color=black];\n\t1227 -> 653 [penwidth=1, color=black];\n\t1227 -> 654 [penwidth=1, color=black];\n\t1227 -> 655 [penwidth=1, color=black];\n\t1227 -> 656 [penwidth=1, color=black];\n\t1227 -> 657 [penwidth=1, color=black];\n\t1227 -> 658 [penwidth=1, color=black];\n\t1227 -> 659 [penwidth=1, color=black];\n\t1227 -> 660 [penwidth=1, color=black];\n\t1227 -> 661 [penwidth=1, color=black];\n\t1227 -> 662 [penwidth=1, color=black];\n\t1227 -> 663 [penwidth=1, color=black];\n\t1227 -> 664 [penwidth=1, color=black];\n\t1227 -> 665 [penwidth=1, color=black];\n\t1227 -> 666 [penwidth=1, color=black];\n\t1227 -> 667 [penwidth=1, color=black];\n\t1227 -> 668 [penwidth=1, color=black];\n\t1227 -> 669 [penwidth=1, color=black];\n\t1227 -> 670 [penwidth=1, color=black];\n\t1227 -> 671 [penwidth=1, color=black];\n\t1227 -> 672 [penwidth=1, color=black];\n\t1227 -> 673 [penwidth=1, color=black];\n\t1227 -> 674 [penwidth=1, color=black];\n\t1227 -> 675 [penwidth=1, color=black];\n\t1227 -> 676 [penwidth=1, color=black];\n\t1227 -> 677 [penwidth=1, color=black];\n\t1227 -> 678 [penwidth=1, color=black];\n\t1227 -> 679 [penwidth=1, color=black];\n\t1227 -> 680 [penwidth=1, color=black];\n\t1227 -> 681 [penwidth=1, color=black];\n\t1227 -> 682 [penwidth=1, color=black];\n\t1227 -> 683 [penwidth=1, color=black];\n\t1227 -> 684 [penwidth=1, color=black];\n\t1227 -> 685 [penwidth=1, color=black];\n\t1227 -> 686 [penwidth=1, color=black];\n\t1227 -> 687 [penwidth=1, color=black];\n\t1227 -> 688 [penwidth=1, color=black];\n\t1227 -> 689 [penwidth=1, color=black];\n\t1227 -> 691 [penwidth=1, color=black];\n\t1227 -> 692 [penwidth=1, color=black];\n\t1227 -> 693 [penwidth=1, color=black];\n\t1227 -> 694 [penwidth=1, color=black];\n\t1227 -> 695 [penwidth=1, color=black];\n\t1227 -> 696 [penwidth=1, color=black];\n\t1227 -> 697 [penwidth=1, color=black];\n\t1227 -> 698 [penwidth=1, color=black];\n\t1227 -> 699 [penwidth=1, color=black];\n\t1227 -> 700 [penwidth=1, color=black];\n\t1227 -> 701 [penwidth=1, color=black];\n\t1227 -> 702 [penwidth=1, color=black];\n\t1227 -> 703 [penwidth=1, color=black];\n\t1227 -> 704 [penwidth=1, color=black];\n\t1227 -> 705 [penwidth=1, color=black];\n\t1227 -> 706 [penwidth=1, color=black];\n\t1227 -> 707 [penwidth=1, color=black];\n\t1227 -> 708 [penwidth=1, color=black];\n\t1227 -> 709 [penwidth=1, color=black];\n\t1227 -> 710 [penwidth=1, color=black];\n\t1227 -> 711 [penwidth=1, color=black];\n\t1227 -> 712 [penwidth=1, color=black];\n\t1227 -> 713 [penwidth=1, color=black];\n\t1227 -> 714 [penwidth=1, color=black];\n\t1227 -> 715 [penwidth=1, color=black];\n\t1227 -> 716 [penwidth=1, color=black];\n\t1227 -> 717 [penwidth=1, color=black];\n\t1227 -> 718 [penwidth=1, color=black];\n\t1227 -> 719 [penwidth=1, color=black];\n\t1227 -> 720 [penwidth=1, color=black];\n\t1227 -> 721 [penwidth=1, color=black];\n\t1227 -> 722 [penwidth=1, color=black];\n\t1227 -> 723 [penwidth=1, color=black];\n\t1227 -> 724 [penwidth=1, color=black];\n\t1227 -> 725 [penwidth=1, color=black];\n\t1227 -> 726 [penwidth=1, color=black];\n\t1227 -> 727 [penwidth=1, color=black];\n\t1227 -> 728 [penwidth=1, color=black];\n\t1227 -> 729 [penwidth=1, color=black];\n\t1227 -> 730 [penwidth=1, color=black];\n\t1227 -> 731 [penwidth=1, color=black];\n\t1227 -> 732 [penwidth=1, color=black];\n\t1227 -> 733 [penwidth=1, color=black];\n\t1227 -> 734 [penwidth=1, color=black];\n\t1227 -> 735 [penwidth=1, color=black];\n\t1227 -> 736 [penwidth=1, color=black];\n\t1227 -> 737 [penwidth=1, color=black];\n\t1227 -> 738 [penwidth=1, color=black];\n\t1227 -> 739 [penwidth=1, color=black];\n\t1227 -> 740 [penwidth=1, color=black];\n\t1227 -> 741 [penwidth=1, color=black];\n\t1227 -> 742 [penwidth=1, color=black];\n\t1227 -> 743 [penwidth=1, color=black];\n\t1227 -> 744 [penwidth=1, color=black];\n\t1227 -> 745 [penwidth=1, color=black];\n\t1227 -> 746 [penwidth=1, color=black];\n\t1227 -> 747 [penwidth=1, color=black];\n\t1227 -> 748 [penwidth=1, color=black];\n\t1227 -> 749 [penwidth=1, color=black];\n\t1227 -> 750 [penwidth=1, color=black];\n\t1227 -> 751 [penwidth=1, color=black];\n\t1227 -> 753 [penwidth=1, color=black];\n\t1227 -> 754 [penwidth=1, color=black];\n\t1227 -> 755 [penwidth=1, color=black];\n\t1227 -> 756 [penwidth=1, color=black];\n\t1227 -> 757 [penwidth=1, color=black];\n\t1227 -> 758 [penwidth=1, color=black];\n\t1227 -> 759 [penwidth=1, color=black];\n\t1227 -> 760 [penwidth=1, color=black];\n\t1227 -> 761 [penwidth=1, color=black];\n\t1227 -> 762 [penwidth=1, color=black];\n\t1227 -> 763 [penwidth=1, color=black];\n\t1227 -> 764 [penwidth=1, color=black];\n\t1227 -> 765 [penwidth=1, color=black];\n\t1227 -> 766 [penwidth=1, color=black];\n\t1227 -> 767 [penwidth=1, color=black];\n\t1227 -> 768 [penwidth=1, color=black];\n\t1227 -> 769 [penwidth=1, color=black];\n\t1227 -> 770 [penwidth=1, color=black];\n\t1227 -> 771 [penwidth=1, color=black];\n\t1227 -> 772 [penwidth=1, color=black];\n\t1227 -> 773 [penwidth=1, color=black];\n\t1227 -> 774 [penwidth=1, color=black];\n\t1227 -> 775 [penwidth=1, color=black];\n\t1227 -> 776 [penwidth=1, color=black];\n\t1227 -> 777 [penwidth=1, color=black];\n\t1227 -> 778 [penwidth=1, color=black];\n\t1227 -> 779 [penwidth=1, color=black];\n\t1227 -> 780 [penwidth=1, color=black];\n\t1227 -> 781 [penwidth=1, color=black];\n\t1227 -> 782 [penwidth=1, color=black];\n\t1227 -> 783 [penwidth=1, color=black];\n\t1227 -> 784 [penwidth=1, color=black];\n\t1227 -> 785 [penwidth=1, color=black];\n\t1227 -> 786 [penwidth=1, color=black];\n\t1227 -> 787 [penwidth=1, color=black];\n\t1227 -> 788 [penwidth=1, color=black];\n\t1227 -> 789 [penwidth=1, color=black];\n\t1227 -> 790 [penwidth=1, color=black];\n\t1227 -> 791 [penwidth=1, color=black];\n\t1227 -> 792 [penwidth=1, color=black];\n\t1227 -> 793 [penwidth=1, color=black];\n\t1227 -> 794 [penwidth=1, color=black];\n\t1227 -> 795 [penwidth=1, color=black];\n\t1227 -> 796 [penwidth=1, color=black];\n\t1227 -> 797 [penwidth=1, color=black];\n\t1227 -> 798 [penwidth=1, color=black];\n\t1227 -> 799 [penwidth=1, color=black];\n\t1227 -> 800 [penwidth=1, color=black];\n\t1227 -> 801 [penwidth=1, color=black];\n\t1227 -> 802 [penwidth=1, color=black];\n\t1227 -> 803 [penwidth=1, color=black];\n\t1227 -> 804 [penwidth=1, color=black];\n\t1227 -> 805 [penwidth=1, color=black];\n\t1227 -> 806 [penwidth=1, color=black];\n\t1227 -> 807 [penwidth=1, color=black];\n\t1227 -> 808 [penwidth=1, color=black];\n\t1227 -> 809 [penwidth=1, color=black];\n\t1227 -> 810 [penwidth=1, color=black];\n\t1227 -> 811 [penwidth=1, color=black];\n\t1227 -> 812 [penwidth=1, color=black];\n\t1227 -> 813 [penwidth=1, color=black];\n\t1227 -> 814 [penwidth=1, color=black];\n\t1227 -> 815 [penwidth=1, color=black];\n\t1227 -> 816 [penwidth=1, color=black];\n\t1227 -> 817 [penwidth=1, color=black];\n\t1227 -> 818 [penwidth=1, color=black];\n\t1227 -> 819 [penwidth=1, color=black];\n\t1227 -> 820 [penwidth=1, color=black];\n\t1227 -> 821 [penwidth=1, color=black];\n\t1227 -> 822 [penwidth=1, color=black];\n\t1227 -> 823 [penwidth=1, color=black];\n\t1227 -> 824 [penwidth=1, color=black];\n\t1227 -> 825 [penwidth=1, color=black];\n\t1227 -> 826 [penwidth=1, color=black];\n\t1227 -> 827 [penwidth=1, color=black];\n\t1227 -> 828 [penwidth=1, color=black];\n\t1227 -> 829 [penwidth=1, color=black];\n\t1227 -> 830 [penwidth=1, color=black];\n\t1227 -> 831 [penwidth=1, color=black];\n\t1227 -> 832 [penwidth=1, color=black];\n\t1227 -> 833 [penwidth=1, color=black];\n\t1227 -> 834 [penwidth=1, color=black];\n\t1227 -> 835 [penwidth=1, color=black];\n\t1227 -> 836 [penwidth=1, color=black];\n\t1227 -> 837 [penwidth=1, color=black];\n\t1227 -> 838 [penwidth=1, color=black];\n\t1227 -> 839 [penwidth=1, color=black];\n\t1227 -> 840 [penwidth=1, color=black];\n\t1227 -> 841 [penwidth=1, color=black];\n\t1227 -> 842 [penwidth=1, color=black];\n\t1227 -> 843 [penwidth=1, color=black];\n\t1227 -> 844 [penwidth=1, color=black];\n\t1227 -> 845 [penwidth=1, color=black];\n\t1227 -> 846 [penwidth=1, color=black];\n\t1227 -> 847 [penwidth=1, color=black];\n\t1227 -> 848 [penwidth=1, color=black];\n\t1227 -> 849 [penwidth=1, color=black];\n\t1227 -> 850 [penwidth=1, color=black];\n\t1227 -> 851 [penwidth=1, color=black];\n\t1227 -> 852 [penwidth=1, color=black];\n\t1227 -> 853 [penwidth=1, color=black];\n\t1227 -> 854 [penwidth=1, color=black];\n\t1227 -> 855 [penwidth=1, color=black];\n\t1227 -> 856 [penwidth=1, color=black];\n\t1227 -> 857 [penwidth=1, color=black];\n\t1227 -> 858 [penwidth=1, color=black];\n\t1227 -> 859 [penwidth=1, color=black];\n\t1227 -> 860 [penwidth=1, color=black];\n\t1227 -> 861 [penwidth=1, color=black];\n\t1227 -> 862 [penwidth=1, color=black];\n\t1227 -> 863 [penwidth=1, color=black];\n\t1227 -> 864 [penwidth=1, color=black];\n\t1227 -> 865 [penwidth=1, color=black];\n\t1227 -> 866 [penwidth=1, color=black];\n\t1227 -> 867 [penwidth=1, color=black];\n\t1227 -> 868 [penwidth=1, color=black];\n\t1227 -> 869 [penwidth=1, color=black];\n\t1227 -> 870 [penwidth=1, color=black];\n\t1227 -> 874 [penwidth=1, color=black];\n\t1227 -> 875 [penwidth=1, color=black];\n\t1227 -> 876 [penwidth=1, color=black];\n\t1227 -> 877 [penwidth=1, color=black];\n\t1227 -> 878 [penwidth=1, color=black];\n\t1227 -> 879 [penwidth=1, color=black];\n\t1227 -> 880 [penwidth=1, color=black];\n\t1227 -> 881 [penwidth=1, color=black];\n\t1227 -> 882 [penwidth=1, color=black];\n\t1227 -> 883 [penwidth=1, color=black];\n\t1227 -> 884 [penwidth=1, color=black];\n\t1227 -> 885 [penwidth=1, color=black];\n\t1227 -> 886 [penwidth=1, color=black];\n\t1227 -> 887 [penwidth=1, color=black];\n\t1227 -> 888 [penwidth=1, color=black];\n\t1227 -> 889 [penwidth=1, color=black];\n\t1227 -> 890 [penwidth=1, color=black];\n\t1227 -> 891 [penwidth=1, color=black];\n\t1227 -> 892 [penwidth=1, color=black];\n\t1227 -> 893 [penwidth=1, color=black];\n\t1227 -> 894 [penwidth=1, color=black];\n\t1227 -> 895 [penwidth=1, color=black];\n\t1227 -> 896 [penwidth=1, color=black];\n\t1227 -> 897 [penwidth=1, color=black];\n\t1227 -> 898 [penwidth=1, color=black];\n\t1227 -> 899 [penwidth=1, color=black];\n\t1227 -> 900 [penwidth=1, color=black];\n\t1227 -> 901 [penwidth=1, color=black];\n\t1227 -> 902 [penwidth=1, color=black];\n\t1227 -> 903 [penwidth=1, color=black];\n\t1227 -> 904 [penwidth=1, color=black];\n\t1227 -> 905 [penwidth=1, color=black];\n\t1227 -> 906 [penwidth=1, color=black];\n\t1227 -> 907 [penwidth=1, color=black];\n\t1227 -> 908 [penwidth=1, color=black];\n\t1227 -> 909 [penwidth=1, color=black];\n\t1227 -> 910 [penwidth=1, color=black];\n\t1227 -> 911 [penwidth=1, color=black];\n\t1227 -> 912 [penwidth=1, color=black];\n\t1227 -> 913 [penwidth=1, color=black];\n\t1227 -> 914 [penwidth=1, color=black];\n\t1227 -> 915 [penwidth=1, color=black];\n\t1227 -> 916 [penwidth=1, color=black];\n\t1227 -> 917 [penwidth=1, color=black];\n\t1227 -> 918 [penwidth=1, color=black];\n\t1227 -> 919 [penwidth=1, color=black];\n\t1227 -> 920 [penwidth=1, color=black];\n\t1227 -> 921 [penwidth=1, color=black];\n\t1227 -> 922 [penwidth=1, color=black];\n\t1227 -> 923 [penwidth=1, color=black];\n\t1227 -> 924 [penwidth=1, color=black];\n\t1227 -> 925 [penwidth=1, color=black];\n\t1227 -> 926 [penwidth=1, color=black];\n\t1227 -> 927 [penwidth=1, color=black];\n\t1227 -> 928 [penwidth=1, color=black];\n\t1227 -> 929 [penwidth=1, color=black];\n\t1227 -> 930 [penwidth=1, color=black];\n\t1227 -> 931 [penwidth=1, color=black];\n\t1227 -> 932 [penwidth=1, color=black];\n\t1227 -> 933 [penwidth=1, color=black];\n\t1227 -> 934 [penwidth=1, color=black];\n\t1227 -> 935 [penwidth=1, color=black];\n\t1227 -> 936 [penwidth=1, color=black];\n\t1227 -> 937 [penwidth=1, color=black];\n\t1227 -> 938 [penwidth=1, color=black];\n\t1227 -> 939 [penwidth=1, color=black];\n\t1227 -> 940 [penwidth=1, color=black];\n\t1227 -> 941 [penwidth=1, color=black];\n\t1227 -> 942 [penwidth=1, color=black];\n\t1227 -> 943 [penwidth=1, color=black];\n\t1227 -> 944 [penwidth=1, color=black];\n\t1227 -> 945 [penwidth=1, color=black];\n\t1227 -> 946 [penwidth=1, color=black];\n\t1227 -> 947 [penwidth=1, color=black];\n\t1227 -> 948 [penwidth=1, color=black];\n\t1227 -> 949 [penwidth=1, color=black];\n\t1227 -> 950 [penwidth=1, color=black];\n\t1227 -> 951 [penwidth=1, color=black];\n\t1227 -> 952 [penwidth=1, color=black];\n\t1227 -> 953 [penwidth=1, color=black];\n\t1227 -> 954 [penwidth=1, color=black];\n\t1227 -> 955 [penwidth=1, color=black];\n\t1227 -> 956 [penwidth=1, color=black];\n\t1227 -> 957 [penwidth=1, color=black];\n\t1227 -> 958 [penwidth=1, color=black];\n\t1227 -> 959 [penwidth=1, color=black];\n\t1227 -> 960 [penwidth=1, color=black];\n\t1227 -> 961 [penwidth=1, color=black];\n\t1227 -> 962 [penwidth=1, color=black];\n\t1227 -> 963 [penwidth=1, color=black];\n\t1227 -> 964 [penwidth=1, color=black];\n\t1227 -> 965 [penwidth=1, color=black];\n\t1227 -> 966 [penwidth=1, color=black];\n\t1227 -> 967 [penwidth=1, color=black];\n\t1227 -> 968 [penwidth=1, color=black];\n\t1227 -> 969 [penwidth=1, color=black];\n\t1227 -> 970 [penwidth=1, color=black];\n\t1227 -> 971 [penwidth=1, color=black];\n\t1227 -> 972 [penwidth=1, color=black];\n\t1227 -> 973 [penwidth=1, color=black];\n\t1227 -> 974 [penwidth=1, color=black];\n\t1227 -> 975 [penwidth=1, color=black];\n\t1227 -> 976 [penwidth=1, color=black];\n\t1227 -> 977 [penwidth=1, color=black];\n\t1227 -> 978 [penwidth=1, color=black];\n\t1227 -> 979 [penwidth=1, color=black];\n\t1227 -> 980 [penwidth=1, color=black];\n\t1227 -> 981 [penwidth=1, color=black];\n\t1227 -> 982 [penwidth=1, color=black];\n\t1227 -> 983 [penwidth=1, color=black];\n\t1227 -> 984 [penwidth=1, color=black];\n\t1227 -> 985 [penwidth=1, color=black];\n\t1227 -> 986 [penwidth=1, color=black];\n\t1227 -> 987 [penwidth=1, color=black];\n\t1227 -> 988 [penwidth=1, color=black];\n\t1227 -> 989 [penwidth=1, color=black];\n\t1227 -> 990 [penwidth=1, color=black];\n\t1227 -> 991 [penwidth=1, color=black];\n\t1227 -> 992 [penwidth=1, color=black];\n\t1227 -> 993 [penwidth=1, color=black];\n\t1227 -> 994 [penwidth=1, color=black];\n\t1227 -> 995 [penwidth=1, color=black];\n\t1227 -> 996 [penwidth=1, color=black];\n\t1227 -> 997 [penwidth=1, color=black];\n\t1227 -> 998 [penwidth=1, color=black];\n\t1227 -> 999 [penwidth=1, color=black];\n\t1227 -> 1000 [penwidth=1, color=black];\n\t1227 -> 1001 [penwidth=1, color=black];\n\t1227 -> 1002 [penwidth=1, color=black];\n\t1227 -> 1003 [penwidth=1, color=black];\n\t1227 -> 1004 [penwidth=1, color=black];\n\t1227 -> 1005 [penwidth=1, color=black];\n\t1227 -> 1006 [penwidth=1, color=black];\n\t1227 -> 1007 [penwidth=1, color=black];\n\t1227 -> 1008 [penwidth=1, color=black];\n\t1227 -> 1009 [penwidth=1, color=black];\n\t1227 -> 1010 [penwidth=1, color=black];\n\t1227 -> 1011 [penwidth=1, color=black];\n\t1227 -> 1012 [penwidth=1, color=black];\n\t1227 -> 1013 [penwidth=1, color=black];\n\t1227 -> 1014 [penwidth=1, color=black];\n\t1227 -> 1015 [penwidth=1, color=black];\n\t1227 -> 1016 [penwidth=1, color=black];\n\t1227 -> 1017 [penwidth=1, color=black];\n\t1227 -> 1019 [penwidth=1, color=black];\n\t1227 -> 1020 [penwidth=1, color=black];\n\t1227 -> 1021 [penwidth=1, color=black];\n\t1227 -> 1022 [penwidth=1, color=black];\n\t1227 -> 1023 [penwidth=1, color=black];\n\t1227 -> 1026 [penwidth=1, color=black];\n\t1227 -> 1027 [penwidth=1, color=black];\n\t1227 -> 1028 [penwidth=1, color=black];\n\t1227 -> 1029 [penwidth=1, color=black];\n\t1227 -> 1030 [penwidth=1, color=black];\n\t1227 -> 1031 [penwidth=1, color=black];\n\t1227 -> 1032 [penwidth=1, color=black];\n\t1227 -> 1033 [penwidth=1, color=black];\n\t1227 -> 1034 [penwidth=1, color=black];\n\t1227 -> 1035 [penwidth=1, color=black];\n\t1227 -> 1036 [penwidth=1, color=black];\n\t1227 -> 1037 [penwidth=1, color=black];\n\t1227 -> 1038 [penwidth=1, color=black];\n\t1227 -> 1039 [penwidth=1, color=black];\n\t1227 -> 1040 [penwidth=1, color=black];\n\t1227 -> 1041 [penwidth=1, color=black];\n\t1227 -> 1042 [penwidth=1, color=black];\n\t1227 -> 1045 [penwidth=1, color=black];\n\t1227 -> 1046 [penwidth=1, color=black];\n\t1227 -> 1047 [penwidth=1, color=black];\n\t1227 -> 1048 [penwidth=1, color=black];\n\t1227 -> 1049 [penwidth=1, color=black];\n\t1227 -> 1050 [penwidth=1, color=black];\n\t1227 -> 1051 [penwidth=1, color=black];\n\t1227 -> 1052 [penwidth=1, color=black];\n\t1227 -> 1053 [penwidth=1, color=black];\n\t1227 -> 1054 [penwidth=1, color=black];\n\t1227 -> 1055 [penwidth=1, color=black];\n\t1227 -> 1057 [penwidth=1, color=black];\n\t1227 -> 1058 [penwidth=1, color=black];\n\t1227 -> 1059 [penwidth=1, color=black];\n\t1227 -> 1060 [penwidth=1, color=black];\n\t1227 -> 1061 [penwidth=1, color=black];\n\t1227 -> 1062 [penwidth=1, color=black];\n\t1227 -> 1068 [penwidth=1, color=black];\n\t1227 -> 1069 [penwidth=1, color=black];\n\t1227 -> 1070 [penwidth=1, color=black];\n\t1227 -> 1071 [penwidth=1, color=black];\n\t1227 -> 1072 [penwidth=1, color=black];\n\t1227 -> 1081 [penwidth=1, color=black];\n\t1227 -> 1082 [penwidth=1, color=black];\n\t1227 -> 1083 [penwidth=1, color=black];\n\t1227 -> 1084 [penwidth=1, color=black];\n\t1227 -> 1085 [penwidth=1, color=black];\n\t1227 -> 1087 [penwidth=1, color=black];\n\t1227 -> 1088 [penwidth=1, color=black];\n\t1227 -> 1089 [penwidth=1, color=black];\n\t1227 -> 1090 [penwidth=1, color=black];\n\t1227 -> 1091 [penwidth=1, color=black];\n\t1227 -> 1092 [penwidth=1, color=black];\n\t1227 -> 1093 [penwidth=1, color=black];\n\t1227 -> 1094 [penwidth=1, color=black];\n\t1227 -> 1095 [penwidth=1, color=black];\n\t1227 -> 1096 [penwidth=1, color=black];\n\t1227 -> 1097 [penwidth=1, color=black];\n\t1227 -> 1098 [penwidth=1, color=black];\n\t1227 -> 1099 [penwidth=1, color=black];\n\t1227 -> 1100 [penwidth=1, color=black];\n\t1227 -> 1101 [penwidth=1, color=black];\n\t1227 -> 1102 [penwidth=1, color=black];\n\t1227 -> 1103 [penwidth=1, color=black];\n\t1227 -> 1104 [penwidth=1, color=black];\n\t1227 -> 1105 [penwidth=1, color=black];\n\t1227 -> 1106 [penwidth=1, color=black];\n\t1227 -> 1107 [penwidth=1, color=black];\n\t1227 -> 1108 [penwidth=1, color=black];\n\t1227 -> 1109 [penwidth=1, color=black];\n\t1227 -> 1110 [penwidth=1, color=black];\n\t1227 -> 1111 [penwidth=1, color=black];\n\t1227 -> 1112 [penwidth=1, color=black];\n\t1227 -> 1113 [penwidth=1, color=black];\n\t1227 -> 1117 [penwidth=1, color=black];\n\t1227 -> 1118 [penwidth=1, color=black];\n\t1227 -> 1119 [penwidth=1, color=black];\n\t1227 -> 1120 [penwidth=1, color=black];\n\t1227 -> 1121 [penwidth=1, color=black];\n\t1227 -> 1122 [penwidth=1, color=black];\n\t1227 -> 1123 [penwidth=1, color=black];\n\t1227 -> 1124 [penwidth=1, color=black];\n\t1227 -> 1125 [penwidth=1, color=black];\n\t1227 -> 1126 [penwidth=1, color=black];\n\t1227 -> 1127 [penwidth=1, color=black];\n\t1227 -> 1128 [penwidth=1, color=black];\n\t1227 -> 1129 [penwidth=1, color=black];\n\t1227 -> 1130 [penwidth=1, color=black];\n\t1227 -> 1131 [penwidth=1, color=black];\n\t1227 -> 1132 [penwidth=1, color=black];\n\t1227 -> 1133 [penwidth=1, color=black];\n\t1227 -> 1134 [penwidth=1, color=black];\n\t1227 -> 1135 [penwidth=1, color=black];\n\t1227 -> 1136 [penwidth=1, color=black];\n\t1227 -> 1137 [penwidth=1, color=black];\n\t1227 -> 1138 [penwidth=1, color=black];\n\t1227 -> 1139 [penwidth=1, color=black];\n\t1227 -> 1140 [penwidth=1, color=black];\n\t1227 -> 1141 [penwidth=1, color=black];\n\t1227 -> 1143 [penwidth=1, color=black];\n\t1227 -> 1144 [penwidth=1, color=black];\n\t1227 -> 1145 [penwidth=1, color=black];\n\t1227 -> 1146 [penwidth=1, color=black];\n\t1227 -> 1147 [penwidth=1, color=black];\n\t1227 -> 1148 [penwidth=1, color=black];\n\t1227 -> 1149 [penwidth=1, color=black];\n\t1227 -> 1150 [penwidth=1, color=black];\n\t1227 -> 1151 [penwidth=1, color=black];\n\t1227 -> 1152 [penwidth=1, color=black];\n\t1227 -> 1153 [penwidth=1, color=black];\n\t1227 -> 1154 [penwidth=1, color=black];\n\t1227 -> 1155 [penwidth=1, color=black];\n\t1227 -> 1156 [penwidth=1, color=black];\n\t1227 -> 1157 [penwidth=1, color=black];\n\t1227 -> 1158 [penwidth=1, color=black];\n\t1227 -> 1159 [penwidth=1, color=black];\n\t1227 -> 1160 [penwidth=1, color=black];\n\t1227 -> 1161 [penwidth=1, color=black];\n\t1227 -> 1162 [penwidth=1, color=black];\n\t1227 -> 1163 [penwidth=1, color=black];\n\t1227 -> 1164 [penwidth=1, color=black];\n\t1227 -> 1165 [penwidth=1, color=black];\n\t1227 -> 1166 [penwidth=1, color=black];\n\t1227 -> 1167 [penwidth=1, color=black];\n\t1227 -> 1168 [penwidth=1, color=black];\n\t1227 -> 1169 [penwidth=1, color=black];\n\t1227 -> 1170 [penwidth=1, color=black];\n\t1227 -> 1171 [penwidth=1, color=black];\n\t1227 -> 1172 [penwidth=1, color=black];\n\t1227 -> 1173 [penwidth=1, color=black];\n\t1227 -> 1174 [penwidth=1, color=black];\n\t1227 -> 1175 [penwidth=1, color=black];\n\t1227 -> 1176 [penwidth=1, color=black];\n\t1227 -> 1177 [penwidth=1, color=black];\n\t1227 -> 1178 [penwidth=1, color=black];\n\t1227 -> 1179 [penwidth=1, color=black];\n\t1227 -> 1180 [penwidth=1, color=black];\n\t1227 -> 1181 [penwidth=1, color=black];\n\t1227 -> 1182 [penwidth=1, color=black];\n\t1227 -> 1183 [penwidth=1, color=black];\n\t1227 -> 1184 [penwidth=1, color=black];\n\t1227 -> 1185 [penwidth=1, color=black];\n\t1227 -> 1186 [penwidth=1, color=black];\n\t1227 -> 1189 [penwidth=1, color=black];\n\t1227 -> 1190 [penwidth=1, color=black];\n\t1227 -> 1191 [penwidth=1, color=black];\n\t1227 -> 1192 [penwidth=1, color=black];\n\t1227 -> 1193 [penwidth=1, color=black];\n\t1227 -> 1194 [penwidth=1, color=black];\n\t1272 -> 1273 [penwidth=1, color=black];\n\t1273 -> 1275 [penwidth=1, color=black];\n\t1274 -> 1273 [penwidth=1, color=black];\n\t1276 -> 1275 [penwidth=1, color=black];\n\t1291 -> 1435 [penwidth=\"1.6931471805599454\", color=black];\n\t1292 -> 1370 [penwidth=1, color=black];\n\t1292 -> 1371 [penwidth=1, color=black];\n\t1292 -> 1373 [penwidth=1, color=black];\n\t1292 -> 1387 [penwidth=1, color=black];\n\t1292 -> 1392 [penwidth=1, color=black];\n\t1292 -> 1433 [penwidth=1, color=black];\n\t1292 -> 1439 [penwidth=1, color=black];\n\t1293 -> 1294 [penwidth=1, color=black];\n\t1293 -> 1416 [penwidth=1, color=black];\n\t1294 -> 1395 [penwidth=1, color=black];\n\t1294 -> 1429 [penwidth=1, color=black];\n\t1294 -> 1433 [penwidth=1, color=black];\n\t1295 -> 1296 [penwidth=1, color=black];\n\t1296 -> 1370 [penwidth=1, color=black];\n\t1296 -> 1371 [penwidth=\"1.6931471805599454\", color=black];\n\t1296 -> 1373 [penwidth=1, color=black];\n\t1296 -> 1387 [penwidth=1, color=black];\n\t1296 -> 1392 [penwidth=\"1.6931471805599454\", color=black];\n\t1296 -> 1433 [penwidth=1, color=black];\n\t1296 -> 1439 [penwidth=1, color=black];\n\t1301 -> 1229 [penwidth=1, color=black];\n\t1301 -> 1230 [penwidth=1, color=black];\n\t1301 -> 1232 [penwidth=1, color=black];\n\t1301 -> 1234 [penwidth=1, color=black];\n\t1301 -> 1435 [penwidth=\"2.386294361119891\", color=black];\n\t1302 -> 1236 [penwidth=1, color=black];\n\t1302 -> 1237 [penwidth=1, color=black];\n\t1302 -> 1238 [penwidth=1, color=black];\n\t1302 -> 1239 [penwidth=1, color=black];\n\t1302 -> 1240 [penwidth=1, color=black];\n\t1302 -> 1241 [penwidth=1, color=black];\n\t1302 -> 1242 [penwidth=1, color=black];\n\t1302 -> 1243 [penwidth=1, color=black];\n\t1302 -> 1244 [penwidth=1, color=black];\n\t1302 -> 1248 [penwidth=1, color=black];\n\t1302 -> 1249 [penwidth=1, color=black];\n\t1302 -> 1251 [penwidth=1, color=black];\n\t1302 -> 1252 [penwidth=1, color=black];\n\t1302 -> 1258 [penwidth=1, color=black];\n\t1302 -> 1259 [penwidth=1, color=black];\n\t1302 -> 1261 [penwidth=1, color=black];\n\t1302 -> 1262 [penwidth=1, color=black];\n\t1302 -> 1264 [penwidth=1, color=black];\n\t1302 -> 1267 [penwidth=1, color=black];\n\t1302 -> 1269 [penwidth=\"1.6931471805599454\", color=black];\n\t1302 -> 1270 [penwidth=1, color=black];\n\t1302 -> 1271 [penwidth=1, color=black];\n\t1302 -> 1291 [penwidth=1, color=black];\n\t1302 -> 1293 [penwidth=\"3.70805020110221\", color=black];\n\t1302 -> 1294 [penwidth=\"3.0794415416798357\", color=black];\n\t1302 -> 1325 [penwidth=\"2.9459101490553135\", color=black];\n\t1302 -> 1350 [penwidth=1, color=black];\n\t1303 -> 1254 [penwidth=1, color=black];\n\t1303 -> 1255 [penwidth=1, color=black];\n\t1303 -> 1296 [penwidth=1, color=black];\n\t1303 -> 1442 [penwidth=1, color=black];\n\t1304 -> 1253 [penwidth=1, color=black];\n\t1304 -> 1292 [penwidth=1, color=black];\n\t1304 -> 1442 [penwidth=1, color=black];\n\t1305 -> 1266 [penwidth=1, color=black];\n\t1305 -> 1268 [penwidth=1, color=black];\n\t1306 -> 1260 [penwidth=1, color=black];\n\t1306 -> 1296 [penwidth=1, color=black];\n\t1306 -> 1442 [penwidth=1, color=black];\n\t1307 -> 1245 [penwidth=1, color=black];\n\t1307 -> 1246 [penwidth=1, color=black];\n\t1307 -> 1247 [penwidth=1, color=black];\n\t1307 -> 1256 [penwidth=1, color=black];\n\t1307 -> 1263 [penwidth=1, color=black];\n\t1307 -> 1435 [penwidth=\"2.6094379124341005\", color=black];\n\t1308 -> 1233 [penwidth=1, color=black];\n\t1308 -> 1295 [penwidth=1, color=black];\n\t1308 -> 1296 [penwidth=1, color=black];\n\t1308 -> 1323 [penwidth=1, color=black];\n\t1308 -> 1442 [penwidth=\"2.09861228866811\", color=black];\n\t1309 -> 1250 [penwidth=1, color=black];\n\t1309 -> 1257 [penwidth=1, color=black];\n\t1309 -> 1265 [penwidth=1, color=black];\n\t1309 -> 1292 [penwidth=1, color=black];\n\t1309 -> 1295 [penwidth=1, color=black];\n\t1309 -> 1327 [penwidth=1, color=black];\n\t1310 -> 1228 [penwidth=1, color=black];\n\t1310 -> 1231 [penwidth=1, color=black];\n\t1310 -> 1235 [penwidth=1, color=black];\n\t1310 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t1311 -> 1370 [penwidth=1, color=black];\n\t1312 -> 1371 [penwidth=1, color=black];\n\t1312 -> 1442 [penwidth=1, color=black];\n\t1313 -> 1371 [penwidth=1, color=black];\n\t1313 -> 1442 [penwidth=1, color=black];\n\t1315 -> 1871 [penwidth=1, color=black];\n\t1316 -> 1321 [penwidth=1, color=black];\n\t1317 -> 1454 [penwidth=1, color=black];\n\t1317 -> 1456 [penwidth=1, color=black];\n\t1317 -> 1470 [penwidth=1, color=black];\n\t1318 -> 1319 [penwidth=1, color=black];\n\t1318 -> 1475 [penwidth=1, color=black];\n\t1320 -> 1321 [penwidth=1, color=black];\n\t1321 -> 1454 [penwidth=\"1.6931471805599454\", color=black];\n\t1321 -> 1456 [penwidth=1, color=black];\n\t1321 -> 1470 [penwidth=1, color=black];\n\t1325 -> 1326 [penwidth=1, color=black];\n\t1326 -> 1275 [penwidth=1, color=black];\n\t1326 -> 1276 [penwidth=1, color=black];\n\t1326 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t1327 -> 1326 [penwidth=1, color=black];\n\t1328 -> 1229 [penwidth=1, color=black];\n\t1328 -> 1230 [penwidth=1, color=black];\n\t1328 -> 1232 [penwidth=1, color=black];\n\t1328 -> 1234 [penwidth=1, color=black];\n\t1329 -> 1236 [penwidth=1, color=black];\n\t1329 -> 1237 [penwidth=1, color=black];\n\t1329 -> 1238 [penwidth=1, color=black];\n\t1329 -> 1239 [penwidth=1, color=black];\n\t1329 -> 1240 [penwidth=1, color=black];\n\t1329 -> 1241 [penwidth=1, color=black];\n\t1329 -> 1242 [penwidth=1, color=black];\n\t1329 -> 1243 [penwidth=1, color=black];\n\t1329 -> 1244 [penwidth=1, color=black];\n\t1329 -> 1248 [penwidth=1, color=black];\n\t1329 -> 1249 [penwidth=1, color=black];\n\t1329 -> 1251 [penwidth=1, color=black];\n\t1329 -> 1252 [penwidth=1, color=black];\n\t1329 -> 1258 [penwidth=1, color=black];\n\t1329 -> 1259 [penwidth=1, color=black];\n\t1329 -> 1261 [penwidth=1, color=black];\n\t1329 -> 1262 [penwidth=1, color=black];\n\t1329 -> 1264 [penwidth=1, color=black];\n\t1329 -> 1267 [penwidth=1, color=black];\n\t1329 -> 1269 [penwidth=1, color=black];\n\t1329 -> 1270 [penwidth=1, color=black];\n\t1329 -> 1271 [penwidth=1, color=black];\n\t1329 -> 1272 [penwidth=\"2.791759469228055\", color=black];\n\t1329 -> 1315 [penwidth=1, color=black];\n\t1329 -> 1318 [penwidth=\"3.70805020110221\", color=black];\n\t1329 -> 1319 [penwidth=\"2.9459101490553135\", color=black];\n\t1329 -> 1363 [penwidth=1, color=black];\n\t1330 -> 1254 [penwidth=1, color=black];\n\t1330 -> 1255 [penwidth=1, color=black];\n\t1330 -> 1316 [penwidth=\"1.6931471805599454\", color=black];\n\t1331 -> 1253 [penwidth=1, color=black];\n\t1331 -> 1317 [penwidth=1, color=black];\n\t1332 -> 1266 [penwidth=1, color=black];\n\t1332 -> 1268 [penwidth=1, color=black];\n\t1333 -> 1260 [penwidth=1, color=black];\n\t1333 -> 1321 [penwidth=1, color=black];\n\t1334 -> 1245 [penwidth=1, color=black];\n\t1334 -> 1246 [penwidth=1, color=black];\n\t1334 -> 1247 [penwidth=1, color=black];\n\t1334 -> 1256 [penwidth=1, color=black];\n\t1334 -> 1263 [penwidth=1, color=black];\n\t1335 -> 1320 [penwidth=1, color=black];\n\t1335 -> 1321 [penwidth=1, color=black];\n\t1335 -> 1322 [penwidth=1, color=black];\n\t1335 -> 1323 [penwidth=1, color=black];\n\t1335 -> 1324 [penwidth=1, color=black];\n\t1336 -> 1250 [penwidth=1, color=black];\n\t1336 -> 1257 [penwidth=1, color=black];\n\t1336 -> 1265 [penwidth=1, color=black];\n\t1336 -> 1274 [penwidth=1, color=black];\n\t1336 -> 1317 [penwidth=1, color=black];\n\t1336 -> 1320 [penwidth=1, color=black];\n\t1337 -> 1228 [penwidth=1, color=black];\n\t1337 -> 1231 [penwidth=1, color=black];\n\t1337 -> 1235 [penwidth=1, color=black];\n\t1355 -> 1343 [penwidth=1, color=black];\n\t1355 -> 1345 [penwidth=1, color=black];\n\t1355 -> 1356 [penwidth=1, color=black];\n\t1355 -> 1363 [penwidth=1, color=black];\n\t1356 -> 1342 [penwidth=1, color=black];\n\t1356 -> 1344 [penwidth=1, color=black];\n\t1356 -> 1346 [penwidth=1, color=black];\n\t1356 -> 1347 [penwidth=1, color=black];\n\t1356 -> 1348 [penwidth=1, color=black];\n\t1356 -> 1349 [penwidth=1, color=black];\n\t1356 -> 1351 [penwidth=1, color=black];\n\t1356 -> 1352 [penwidth=1, color=black];\n\t1356 -> 1353 [penwidth=1, color=black];\n\t1356 -> 1354 [penwidth=1, color=black];\n\t1357 -> 1369 [penwidth=1, color=black];\n\t1357 -> 1429 [penwidth=1, color=black];\n\t1358 -> 1355 [penwidth=1, color=black];\n\t1358 -> 1369 [penwidth=1, color=black];\n\t1358 -> 1429 [penwidth=1, color=black];\n\t1359 -> 1345 [penwidth=1, color=black];\n\t1359 -> 1373 [penwidth=1, color=black];\n\t1359 -> 1387 [penwidth=\"2.09861228866811\", color=black];\n\t1360 -> 1342 [penwidth=1, color=black];\n\t1360 -> 1344 [penwidth=1, color=black];\n\t1360 -> 1346 [penwidth=1, color=black];\n\t1360 -> 1347 [penwidth=1, color=black];\n\t1360 -> 1348 [penwidth=1, color=black];\n\t1360 -> 1349 [penwidth=1, color=black];\n\t1360 -> 1351 [penwidth=1, color=black];\n\t1360 -> 1352 [penwidth=1, color=black];\n\t1360 -> 1353 [penwidth=1, color=black];\n\t1360 -> 1354 [penwidth=1, color=black];\n\t1360 -> 1435 [penwidth=\"3.302585092994046\", color=black];\n\t1361 -> 1350 [penwidth=1, color=black];\n\t1361 -> 1396 [penwidth=1, color=black];\n\t1362 -> 1345 [penwidth=1, color=black];\n\t1362 -> 1355 [penwidth=1, color=black];\n\t1362 -> 1373 [penwidth=1, color=black];\n\t1364 -> 1363 [penwidth=1, color=black];\n\t1365 -> 1345 [penwidth=\"1.6931471805599454\", color=black];\n\t1366 -> 1342 [penwidth=1, color=black];\n\t1366 -> 1344 [penwidth=1, color=black];\n\t1366 -> 1346 [penwidth=1, color=black];\n\t1366 -> 1347 [penwidth=1, color=black];\n\t1366 -> 1348 [penwidth=1, color=black];\n\t1366 -> 1349 [penwidth=1, color=black];\n\t1366 -> 1351 [penwidth=1, color=black];\n\t1366 -> 1352 [penwidth=1, color=black];\n\t1366 -> 1353 [penwidth=1, color=black];\n\t1366 -> 1354 [penwidth=1, color=black];\n\t1367 -> 1363 [penwidth=1, color=black];\n\t1368 -> 1343 [penwidth=1, color=black];\n\t1368 -> 1345 [penwidth=1, color=black];\n\t1369 -> 1350 [penwidth=1, color=black];\n\t1369 -> 1431 [penwidth=1, color=black];\n\t1370 -> 1371 [penwidth=1, color=black];\n\t1370 -> 1379 [penwidth=1, color=black];\n\t1370 -> 1440 [penwidth=1, color=black];\n\t1371 -> 1378 [penwidth=1, color=black];\n\t1371 -> 1380 [penwidth=1, color=black];\n\t1371 -> 1441 [penwidth=1, color=black];\n\t1372 -> 1378 [penwidth=1, color=black];\n\t1374 -> 1375 [penwidth=1, color=black];\n\t1374 -> 1387 [penwidth=\"1.6931471805599454\", color=black];\n\t1375 -> 1394 [penwidth=1, color=black];\n\t1375 -> 1441 [penwidth=\"1.6931471805599454\", color=black];\n\t1376 -> 1375 [penwidth=1, color=black];\n\t1376 -> 1416 [penwidth=\"1.6931471805599454\", color=black];\n\t1377 -> 1381 [penwidth=1, color=black];\n\t1379 -> 1433 [penwidth=1, color=black];\n\t1380 -> 1379 [penwidth=1, color=black];\n\t1380 -> 1441 [penwidth=1, color=black];\n\t1382 -> 1406 [penwidth=1, color=black];\n\t1382 -> 1415 [penwidth=1, color=black];\n\t1383 -> 1435 [penwidth=\"1.6931471805599454\", color=black];\n\t1384 -> 1429 [penwidth=1, color=black];\n\t1385 -> 1384 [penwidth=1, color=black];\n\t1385 -> 1433 [penwidth=1, color=black];\n\t1386 -> 1428 [penwidth=1, color=black];\n\t1386 -> 1435 [penwidth=1, color=black];\n\t1388 -> 1384 [penwidth=1, color=black];\n\t1389 -> 1429 [penwidth=1, color=black];\n\t1389 -> 1882 [penwidth=1, color=black];\n\t1391 -> 1371 [penwidth=1, color=black];\n\t1391 -> 1378 [penwidth=1, color=black];\n\t1392 -> 1372 [penwidth=1, color=black];\n\t1392 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t1393 -> 1372 [penwidth=1, color=black];\n\t1393 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t1394 -> 1373 [penwidth=1, color=black];\n\t1395 -> 1373 [penwidth=1, color=black];\n\t1395 -> 1442 [penwidth=1, color=black];\n\t1396 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t1396 -> 1428 [penwidth=1, color=black];\n\t1397 -> 1387 [penwidth=1, color=black];\n\t1397 -> 1395 [penwidth=1, color=black];\n\t1397 -> 1433 [penwidth=1, color=black];\n\t1398 -> 1399 [penwidth=1, color=black];\n\t1399 -> 1397 [penwidth=1, color=black];\n\t1399 -> 1433 [penwidth=1, color=black];\n\t1399 -> 1871 [penwidth=1, color=black];\n\t1399 -> 1882 [penwidth=1, color=black];\n\t1400 -> 1397 [penwidth=1, color=black];\n\t1401 -> 1398 [penwidth=1, color=black];\n\t1402 -> 1399 [penwidth=1, color=black];\n\t1403 -> 1373 [penwidth=\"2.09861228866811\", color=black];\n\t1403 -> 1405 [penwidth=\"1.6931471805599454\", color=black];\n\t1403 -> 1406 [penwidth=1, color=black];\n\t1403 -> 1432 [penwidth=1, color=black];\n\t1404 -> 1403 [penwidth=1, color=black];\n\t1404 -> 1405 [penwidth=1, color=black];\n\t1404 -> 1414 [penwidth=1, color=black];\n\t1406 -> 1405 [penwidth=1, color=black];\n\t1406 -> 1414 [penwidth=1, color=black];\n\t1407 -> 1387 [penwidth=1, color=black];\n\t1408 -> 1387 [penwidth=1, color=black];\n\t1408 -> 1432 [penwidth=1, color=black];\n\t1410 -> 1429 [penwidth=1, color=black];\n\t1411 -> 1429 [penwidth=1, color=black];\n\t1411 -> 1430 [penwidth=1, color=black];\n\t1411 -> 1431 [penwidth=1, color=black];\n\t1412 -> 1429 [penwidth=1, color=black];\n\t1413 -> 1373 [penwidth=1, color=black];\n\t1413 -> 1428 [penwidth=1, color=black];\n\t1414 -> 1373 [penwidth=1, color=black];\n\t1415 -> 1403 [penwidth=1, color=black];\n\t1415 -> 1414 [penwidth=1, color=black];\n\t1417 -> 1383 [penwidth=1, color=black];\n\t1417 -> 1406 [penwidth=1, color=black];\n\t1418 -> 1428 [penwidth=1, color=black];\n\t1419 -> 1404 [penwidth=1, color=chartreuse];\n\t1420 -> 1406 [penwidth=1, color=black];\n\t1421 -> 1405 [penwidth=1, color=black];\n\t1422 -> 1405 [penwidth=1, color=black];\n\t1425 -> 1370 [penwidth=1, color=black];\n\t1425 -> 1371 [penwidth=1, color=black];\n\t1425 -> 1373 [penwidth=\"1.6931471805599454\", color=black];\n\t1425 -> 1391 [penwidth=1, color=black];\n\t1425 -> 1394 [penwidth=1, color=black];\n\t1425 -> 1442 [penwidth=1, color=black];\n\t1426 -> 1430 [penwidth=1, color=black];\n\t1427 -> 1373 [penwidth=1, color=black];\n\t1429 -> 1372 [penwidth=1, color=black];\n\t1429 -> 1413 [penwidth=\"1.6931471805599454\", color=black];\n\t1430 -> 1396 [penwidth=1, color=black];\n\t1431 -> 1382 [penwidth=1, color=black];\n\t1431 -> 1434 [penwidth=1, color=black];\n\t1432 -> 1371 [penwidth=1, color=black];\n\t1432 -> 1378 [penwidth=1, color=black];\n\t1433 -> 1373 [penwidth=1, color=black];\n\t1434 -> 1874 [penwidth=1, color=black];\n\t1434 -> 1882 [penwidth=1, color=black];\n\t1435 -> 1436 [penwidth=1, color=black];\n\t1436 -> 1433 [penwidth=1, color=black];\n\t1437 -> 1433 [penwidth=1, color=black];\n\t1438 -> 1387 [penwidth=1, color=black];\n\t1438 -> 1439 [penwidth=1, color=black];\n\t1442 -> 1371 [penwidth=\"1.6931471805599454\", color=black];\n\t1442 -> 1372 [penwidth=1, color=black];\n\t1443 -> 1370 [penwidth=1, color=black];\n\t1443 -> 1373 [penwidth=1, color=black];\n\t1443 -> 1428 [penwidth=\"2.09861228866811\", color=black];\n\t1443 -> 1429 [penwidth=1, color=black];\n\t1443 -> 1433 [penwidth=1, color=black];\n\t1443 -> 1449 [penwidth=1, color=black];\n\t1443 -> 1450 [penwidth=1, color=black];\n\t1444 -> 1392 [penwidth=1, color=black];\n\t1444 -> 1444 [penwidth=1, color=black];\n\t1445 -> 1377 [penwidth=1, color=black];\n\t1445 -> 1433 [penwidth=1, color=black];\n\t1446 -> 1372 [penwidth=1, color=black];\n\t1446 -> 1373 [penwidth=1, color=black];\n\t1446 -> 1433 [penwidth=\"1.6931471805599454\", color=black];\n\t1447 -> 1443 [penwidth=1, color=black];\n\t1447 -> 1444 [penwidth=1, color=black];\n\t1447 -> 1450 [penwidth=1, color=black];\n\t1448 -> 1373 [penwidth=1, color=black];\n\t1448 -> 1377 [penwidth=1, color=black];\n\t1448 -> 1379 [penwidth=1, color=black];\n\t1449 -> 1373 [penwidth=1, color=black];\n\t1449 -> 1379 [penwidth=1, color=black];\n\t1450 -> 1445 [penwidth=1, color=black];\n\t1450 -> 1446 [penwidth=1, color=black];\n\t1450 -> 1448 [penwidth=1, color=black];\n\t1450 -> 1449 [penwidth=1, color=black];\n\t1451 -> 1432 [penwidth=1, color=black];\n\t1451 -> 1447 [penwidth=1, color=black];\n\t1453 -> 1462 [penwidth=1, color=black];\n\t1453 -> 1871 [penwidth=1, color=black];\n\t1454 -> 1457 [penwidth=1, color=black];\n\t1454 -> 1468 [penwidth=1, color=black];\n\t1454 -> 1489 [penwidth=1, color=black];\n\t1455 -> 1475 [penwidth=\"1.6931471805599454\", color=black];\n\t1460 -> 1467 [penwidth=1, color=chartreuse];\n\t1462 -> 1876 [penwidth=1, color=black];\n\t1462 -> 1878 [penwidth=1, color=black];\n\t1462 -> 1879 [penwidth=1, color=black];\n\t1463 -> 1452 [penwidth=1, color=black];\n\t1463 -> 1453 [penwidth=1, color=black];\n\t1464 -> 1470 [penwidth=1, color=black];\n\t1465 -> 1469 [penwidth=1, color=black];\n\t1465 -> 1470 [penwidth=1, color=black];\n\t1466 -> 1882 [penwidth=1, color=black];\n\t1467 -> 1463 [penwidth=1, color=black];\n\t1472 -> 1466 [penwidth=1, color=chartreuse];\n\t1483 -> 1452 [penwidth=1, color=black];\n\t1486 -> 1488 [penwidth=1, color=chartreuse];\n\t1488 -> 1483 [penwidth=1, color=black];\n\t1492 -> 1502 [penwidth=1, color=black];\n\t1492 -> 1503 [penwidth=1, color=black];\n\t1492 -> 1504 [penwidth=1, color=black];\n\t1492 -> 1505 [penwidth=1, color=black];\n\t1492 -> 1506 [penwidth=1, color=black];\n\t1492 -> 1507 [penwidth=1, color=black];\n\t1492 -> 1508 [penwidth=1, color=black];\n\t1492 -> 1509 [penwidth=1, color=black];\n\t1492 -> 1510 [penwidth=1, color=black];\n\t1492 -> 1511 [penwidth=1, color=black];\n\t1492 -> 1512 [penwidth=1, color=black];\n\t1492 -> 1514 [penwidth=1, color=black];\n\t1492 -> 1515 [penwidth=1, color=black];\n\t1492 -> 1516 [penwidth=1, color=black];\n\t1492 -> 1517 [penwidth=1, color=black];\n\t1497 -> 1491 [penwidth=1, color=black];\n\t1497 -> 1499 [penwidth=1, color=black];\n\t1497 -> 1500 [penwidth=1, color=black];\n\t1498 -> 1491 [penwidth=\"2.386294361119891\", color=black];\n\t1498 -> 1493 [penwidth=1, color=black];\n\t1498 -> 1494 [penwidth=1, color=black];\n\t1498 -> 1496 [penwidth=1, color=black];\n\t1498 -> 1501 [penwidth=1, color=black];\n\t1499 -> 1498 [penwidth=1, color=black];\n\t1499 -> 1500 [penwidth=1, color=black];\n\t1500 -> 1491 [penwidth=1, color=black];\n\t1502 -> 1490 [penwidth=1, color=black];\n\t1502 -> 1493 [penwidth=1, color=black];\n\t1502 -> 1495 [penwidth=1, color=black];\n\t1502 -> 1496 [penwidth=1, color=black];\n\t1502 -> 1501 [penwidth=1, color=black];\n\t1503 -> 1490 [penwidth=1, color=black];\n\t1503 -> 1493 [penwidth=1, color=black];\n\t1503 -> 1495 [penwidth=1, color=black];\n\t1503 -> 1496 [penwidth=1, color=black];\n\t1503 -> 1501 [penwidth=1, color=black];\n\t1504 -> 1490 [penwidth=1, color=black];\n\t1504 -> 1493 [penwidth=1, color=black];\n\t1504 -> 1495 [penwidth=1, color=black];\n\t1504 -> 1496 [penwidth=1, color=black];\n\t1504 -> 1501 [penwidth=1, color=black];\n\t1505 -> 1490 [penwidth=1, color=black];\n\t1505 -> 1493 [penwidth=1, color=black];\n\t1505 -> 1495 [penwidth=1, color=black];\n\t1505 -> 1496 [penwidth=1, color=black];\n\t1505 -> 1501 [penwidth=1, color=black];\n\t1506 -> 1490 [penwidth=1, color=black];\n\t1506 -> 1493 [penwidth=1, color=black];\n\t1506 -> 1495 [penwidth=1, color=black];\n\t1506 -> 1496 [penwidth=1, color=black];\n\t1506 -> 1501 [penwidth=1, color=black];\n\t1507 -> 1490 [penwidth=1, color=black];\n\t1507 -> 1493 [penwidth=1, color=black];\n\t1507 -> 1495 [penwidth=1, color=black];\n\t1507 -> 1496 [penwidth=1, color=black];\n\t1507 -> 1501 [penwidth=1, color=black];\n\t1508 -> 1490 [penwidth=1, color=black];\n\t1508 -> 1493 [penwidth=1, color=black];\n\t1508 -> 1495 [penwidth=1, color=black];\n\t1508 -> 1496 [penwidth=1, color=black];\n\t1508 -> 1501 [penwidth=1, color=black];\n\t1509 -> 1490 [penwidth=1, color=black];\n\t1509 -> 1493 [penwidth=1, color=black];\n\t1509 -> 1495 [penwidth=1, color=black];\n\t1509 -> 1496 [penwidth=1, color=black];\n\t1509 -> 1501 [penwidth=1, color=black];\n\t1510 -> 1490 [penwidth=1, color=black];\n\t1510 -> 1493 [penwidth=1, color=black];\n\t1510 -> 1495 [penwidth=1, color=black];\n\t1510 -> 1496 [penwidth=1, color=black];\n\t1510 -> 1501 [penwidth=1, color=black];\n\t1511 -> 1490 [penwidth=1, color=black];\n\t1511 -> 1493 [penwidth=1, color=black];\n\t1511 -> 1495 [penwidth=1, color=black];\n\t1511 -> 1496 [penwidth=1, color=black];\n\t1511 -> 1501 [penwidth=1, color=black];\n\t1512 -> 1490 [penwidth=1, color=black];\n\t1512 -> 1493 [penwidth=1, color=black];\n\t1512 -> 1495 [penwidth=1, color=black];\n\t1512 -> 1496 [penwidth=1, color=black];\n\t1512 -> 1501 [penwidth=1, color=black];\n\t1513 -> 1490 [penwidth=1, color=black];\n\t1513 -> 1493 [penwidth=1, color=black];\n\t1513 -> 1495 [penwidth=1, color=black];\n\t1513 -> 1496 [penwidth=1, color=black];\n\t1513 -> 1501 [penwidth=1, color=black];\n\t1514 -> 1490 [penwidth=1, color=black];\n\t1514 -> 1493 [penwidth=1, color=black];\n\t1514 -> 1495 [penwidth=1, color=black];\n\t1514 -> 1496 [penwidth=1, color=black];\n\t1514 -> 1501 [penwidth=1, color=black];\n\t1515 -> 1490 [penwidth=1, color=black];\n\t1515 -> 1493 [penwidth=1, color=black];\n\t1515 -> 1495 [penwidth=1, color=black];\n\t1515 -> 1496 [penwidth=1, color=black];\n\t1515 -> 1501 [penwidth=1, color=black];\n\t1516 -> 1490 [penwidth=1, color=black];\n\t1516 -> 1493 [penwidth=1, color=black];\n\t1516 -> 1495 [penwidth=1, color=black];\n\t1516 -> 1496 [penwidth=1, color=black];\n\t1516 -> 1501 [penwidth=1, color=black];\n\t1517 -> 1490 [penwidth=1, color=black];\n\t1517 -> 1493 [penwidth=1, color=black];\n\t1517 -> 1495 [penwidth=1, color=black];\n\t1517 -> 1496 [penwidth=1, color=black];\n\t1517 -> 1501 [penwidth=1, color=black];\n\t1519 -> 1889 [penwidth=\"2.386294361119891\", color=black];\n\t1520 -> 152 [penwidth=1, color=black];\n\t1520 -> 161 [penwidth=1, color=black];\n\t1520 -> 225 [penwidth=1, color=black];\n\t1520 -> 304 [penwidth=1, color=black];\n\t1520 -> 1520 [penwidth=1, color=black];\n\t1520 -> 1528 [penwidth=\"1.6931471805599454\", color=black];\n\t1520 -> 1871 [penwidth=1, color=black];\n\t1520 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t1521 -> 1527 [penwidth=1, color=black];\n\t1521 -> 1778 [penwidth=1, color=black];\n\t1522 -> 1266 [penwidth=1, color=black];\n\t1522 -> 1268 [penwidth=1, color=black];\n\t1522 -> 1524 [penwidth=1, color=black];\n\t1522 -> 1889 [penwidth=1, color=black];\n\t1523 -> 1250 [penwidth=1, color=black];\n\t1523 -> 1257 [penwidth=1, color=black];\n\t1523 -> 1265 [penwidth=1, color=black];\n\t1523 -> 1524 [penwidth=1, color=orange];\n\t1523 -> 1528 [penwidth=1, color=black];\n\t1523 -> 1889 [penwidth=\"1.6931471805599454\", color=black];\n\t1524 -> 1523 [penwidth=1, color=orange];\n\t1524 -> 1661 [penwidth=1, color=chartreuse];\n\t1525 -> 1606 [penwidth=1, color=black];\n\t1526 -> 431 [penwidth=1, color=black];\n\t1526 -> 1528 [penwidth=1, color=black];\n\t1527 -> 1889 [penwidth=1, color=black];\n\t1528 -> 1606 [penwidth=1, color=black];\n\t1529 -> 1528 [penwidth=1, color=black];\n\t1533 -> 1519 [penwidth=1, color=black];\n\t1534 -> 1519 [penwidth=1, color=black];\n\t1535 -> 1602 [penwidth=1, color=black];\n\t1535 -> 1776 [penwidth=1, color=black];\n\t1536 -> 1773 [penwidth=1, color=black];\n\t1536 -> 1774 [penwidth=1, color=black];\n\t1536 -> 1775 [penwidth=1, color=black];\n\t1536 -> 1778 [penwidth=1, color=black];\n\t1537 -> 1521 [penwidth=1, color=black];\n\t1537 -> 1777 [penwidth=1, color=black];\n\t1538 -> 1518 [penwidth=1, color=black];\n\t1539 -> 84 [penwidth=1, color=black];\n\t1540 -> 1518 [penwidth=1, color=black];\n\t1541 -> 1518 [penwidth=1, color=black];\n\t1542 -> 82 [penwidth=1, color=black];\n\t1542 -> 1527 [penwidth=1, color=black];\n\t1543 -> 316 [penwidth=1, color=black];\n\t1543 -> 317 [penwidth=1, color=black];\n\t1543 -> 1612 [penwidth=1, color=black];\n\t1544 -> 85 [penwidth=1, color=black];\n\t1544 -> 86 [penwidth=1, color=black];\n\t1544 -> 87 [penwidth=1, color=black];\n\t1544 -> 88 [penwidth=1, color=black];\n\t1544 -> 93 [penwidth=1, color=black];\n\t1544 -> 94 [penwidth=1, color=black];\n\t1544 -> 104 [penwidth=1, color=black];\n\t1544 -> 105 [penwidth=1, color=black];\n\t1544 -> 108 [penwidth=1, color=black];\n\t1544 -> 109 [penwidth=1, color=black];\n\t1544 -> 110 [penwidth=1, color=black];\n\t1544 -> 111 [penwidth=1, color=black];\n\t1544 -> 113 [penwidth=1, color=black];\n\t1544 -> 117 [penwidth=1, color=black];\n\t1544 -> 118 [penwidth=1, color=black];\n\t1544 -> 121 [penwidth=1, color=black];\n\t1544 -> 123 [penwidth=1, color=black];\n\t1544 -> 125 [penwidth=1, color=black];\n\t1544 -> 126 [penwidth=1, color=black];\n\t1544 -> 130 [penwidth=1, color=black];\n\t1544 -> 131 [penwidth=1, color=black];\n\t1544 -> 132 [penwidth=1, color=black];\n\t1544 -> 133 [penwidth=1, color=black];\n\t1544 -> 134 [penwidth=1, color=black];\n\t1544 -> 141 [penwidth=1, color=black];\n\t1544 -> 143 [penwidth=1, color=black];\n\t1544 -> 144 [penwidth=1, color=black];\n\t1544 -> 145 [penwidth=1, color=black];\n\t1544 -> 149 [penwidth=1, color=black];\n\t1544 -> 154 [penwidth=1, color=black];\n\t1544 -> 160 [penwidth=1, color=black];\n\t1544 -> 163 [penwidth=1, color=black];\n\t1544 -> 164 [penwidth=1, color=black];\n\t1544 -> 165 [penwidth=1, color=black];\n\t1544 -> 166 [penwidth=1, color=black];\n\t1544 -> 167 [penwidth=1, color=black];\n\t1544 -> 175 [penwidth=1, color=black];\n\t1544 -> 176 [penwidth=1, color=black];\n\t1544 -> 177 [penwidth=1, color=black];\n\t1544 -> 178 [penwidth=1, color=black];\n\t1544 -> 179 [penwidth=1, color=black];\n\t1544 -> 180 [penwidth=1, color=black];\n\t1544 -> 181 [penwidth=1, color=black];\n\t1544 -> 182 [penwidth=1, color=black];\n\t1544 -> 188 [penwidth=1, color=black];\n\t1544 -> 189 [penwidth=1, color=black];\n\t1544 -> 190 [penwidth=1, color=black];\n\t1544 -> 202 [penwidth=1, color=black];\n\t1544 -> 205 [penwidth=1, color=black];\n\t1544 -> 207 [penwidth=1, color=black];\n\t1544 -> 212 [penwidth=1, color=black];\n\t1544 -> 213 [penwidth=1, color=black];\n\t1544 -> 214 [penwidth=1, color=black];\n\t1544 -> 215 [penwidth=1, color=black];\n\t1544 -> 216 [penwidth=1, color=black];\n\t1544 -> 217 [penwidth=1, color=black];\n\t1544 -> 218 [penwidth=1, color=black];\n\t1544 -> 219 [penwidth=1, color=black];\n\t1544 -> 220 [penwidth=1, color=black];\n\t1544 -> 221 [penwidth=1, color=black];\n\t1544 -> 222 [penwidth=1, color=black];\n\t1544 -> 223 [penwidth=1, color=black];\n\t1544 -> 224 [penwidth=1, color=black];\n\t1544 -> 226 [penwidth=1, color=black];\n\t1544 -> 227 [penwidth=1, color=black];\n\t1544 -> 228 [penwidth=1, color=black];\n\t1544 -> 229 [penwidth=1, color=black];\n\t1544 -> 230 [penwidth=1, color=black];\n\t1544 -> 233 [penwidth=1, color=black];\n\t1544 -> 234 [penwidth=1, color=black];\n\t1544 -> 235 [penwidth=1, color=black];\n\t1544 -> 239 [penwidth=1, color=black];\n\t1544 -> 245 [penwidth=1, color=black];\n\t1544 -> 246 [penwidth=1, color=black];\n\t1544 -> 248 [penwidth=1, color=black];\n\t1544 -> 249 [penwidth=1, color=black];\n\t1544 -> 251 [penwidth=1, color=black];\n\t1544 -> 252 [penwidth=1, color=black];\n\t1544 -> 253 [penwidth=1, color=black];\n\t1544 -> 259 [penwidth=1, color=black];\n\t1544 -> 265 [penwidth=1, color=black];\n\t1544 -> 269 [penwidth=1, color=black];\n\t1544 -> 272 [penwidth=1, color=black];\n\t1544 -> 273 [penwidth=1, color=black];\n\t1544 -> 276 [penwidth=1, color=black];\n\t1544 -> 277 [penwidth=1, color=black];\n\t1544 -> 278 [penwidth=1, color=black];\n\t1544 -> 279 [penwidth=1, color=black];\n\t1544 -> 280 [penwidth=1, color=black];\n\t1544 -> 282 [penwidth=1, color=black];\n\t1544 -> 287 [penwidth=1, color=black];\n\t1544 -> 289 [penwidth=1, color=black];\n\t1544 -> 290 [penwidth=1, color=black];\n\t1544 -> 291 [penwidth=1, color=black];\n\t1544 -> 293 [penwidth=1, color=black];\n\t1544 -> 294 [penwidth=1, color=black];\n\t1544 -> 296 [penwidth=1, color=black];\n\t1544 -> 297 [penwidth=1, color=black];\n\t1544 -> 305 [penwidth=1, color=black];\n\t1544 -> 308 [penwidth=1, color=black];\n\t1544 -> 309 [penwidth=1, color=black];\n\t1544 -> 312 [penwidth=1, color=black];\n\t1544 -> 313 [penwidth=1, color=black];\n\t1544 -> 314 [penwidth=1, color=black];\n\t1544 -> 315 [penwidth=1, color=black];\n\t1544 -> 319 [penwidth=1, color=black];\n\t1544 -> 323 [penwidth=1, color=black];\n\t1544 -> 324 [penwidth=1, color=black];\n\t1544 -> 327 [penwidth=1, color=black];\n\t1544 -> 329 [penwidth=1, color=black];\n\t1544 -> 330 [penwidth=1, color=black];\n\t1544 -> 334 [penwidth=1, color=black];\n\t1544 -> 336 [penwidth=1, color=black];\n\t1544 -> 337 [penwidth=1, color=black];\n\t1544 -> 340 [penwidth=1, color=black];\n\t1544 -> 342 [penwidth=1, color=black];\n\t1544 -> 344 [penwidth=1, color=black];\n\t1544 -> 345 [penwidth=1, color=black];\n\t1544 -> 347 [penwidth=1, color=black];\n\t1544 -> 348 [penwidth=1, color=black];\n\t1544 -> 350 [penwidth=1, color=black];\n\t1544 -> 351 [penwidth=1, color=black];\n\t1544 -> 352 [penwidth=1, color=black];\n\t1544 -> 354 [penwidth=1, color=black];\n\t1544 -> 359 [penwidth=1, color=black];\n\t1544 -> 361 [penwidth=1, color=black];\n\t1544 -> 366 [penwidth=1, color=black];\n\t1544 -> 367 [penwidth=1, color=black];\n\t1544 -> 370 [penwidth=1, color=black];\n\t1544 -> 371 [penwidth=1, color=black];\n\t1544 -> 372 [penwidth=1, color=black];\n\t1544 -> 373 [penwidth=1, color=black];\n\t1544 -> 374 [penwidth=1, color=black];\n\t1544 -> 375 [penwidth=1, color=black];\n\t1544 -> 376 [penwidth=1, color=black];\n\t1544 -> 379 [penwidth=1, color=black];\n\t1544 -> 385 [penwidth=1, color=black];\n\t1544 -> 386 [penwidth=1, color=black];\n\t1544 -> 388 [penwidth=1, color=black];\n\t1544 -> 394 [penwidth=1, color=black];\n\t1544 -> 395 [penwidth=1, color=black];\n\t1544 -> 396 [penwidth=1, color=black];\n\t1544 -> 398 [penwidth=1, color=black];\n\t1544 -> 399 [penwidth=1, color=black];\n\t1544 -> 401 [penwidth=1, color=black];\n\t1544 -> 1525 [penwidth=1, color=black];\n\t1544 -> 1527 [penwidth=\"2.386294361119891\", color=black];\n\t1544 -> 1528 [penwidth=\"4.49650756146648\", color=black];\n\t1544 -> 1664 [penwidth=1, color=black];\n\t1545 -> 1518 [penwidth=1, color=black];\n\t1546 -> 1518 [penwidth=1, color=black];\n\t1547 -> 644 [penwidth=1, color=black];\n\t1547 -> 873 [penwidth=1, color=black];\n\t1547 -> 1074 [penwidth=1, color=black];\n\t1547 -> 1075 [penwidth=1, color=black];\n\t1547 -> 1188 [penwidth=1, color=black];\n\t1548 -> 645 [penwidth=1, color=black];\n\t1548 -> 1187 [penwidth=1, color=black];\n\t1549 -> 1518 [penwidth=1, color=black];\n\t1550 -> 1518 [penwidth=1, color=black];\n\t1551 -> 122 [penwidth=1, color=black];\n\t1551 -> 281 [penwidth=1, color=black];\n\t1551 -> 1611 [penwidth=1, color=black];\n\t1552 -> 1518 [penwidth=1, color=black];\n\t1553 -> 1518 [penwidth=1, color=black];\n\t1554 -> 263 [penwidth=1, color=black];\n\t1554 -> 400 [penwidth=1, color=black];\n\t1554 -> 1528 [penwidth=1, color=black];\n\t1555 -> 1527 [penwidth=\"2.09861228866811\", color=black];\n\t1556 -> 1528 [penwidth=1, color=black];\n\t1556 -> 1608 [penwidth=1, color=black];\n\t1557 -> 1518 [penwidth=1, color=black];\n\t1558 -> 1236 [penwidth=1, color=black];\n\t1558 -> 1237 [penwidth=1, color=black];\n\t1558 -> 1238 [penwidth=1, color=black];\n\t1558 -> 1239 [penwidth=1, color=black];\n\t1558 -> 1240 [penwidth=1, color=black];\n\t1558 -> 1241 [penwidth=1, color=black];\n\t1558 -> 1242 [penwidth=1, color=black];\n\t1558 -> 1243 [penwidth=1, color=black];\n\t1558 -> 1244 [penwidth=1, color=black];\n\t1558 -> 1248 [penwidth=1, color=black];\n\t1558 -> 1249 [penwidth=1, color=black];\n\t1558 -> 1251 [penwidth=1, color=black];\n\t1558 -> 1252 [penwidth=1, color=black];\n\t1558 -> 1258 [penwidth=1, color=black];\n\t1558 -> 1259 [penwidth=1, color=black];\n\t1558 -> 1261 [penwidth=1, color=black];\n\t1558 -> 1262 [penwidth=1, color=black];\n\t1558 -> 1264 [penwidth=1, color=black];\n\t1558 -> 1267 [penwidth=1, color=black];\n\t1558 -> 1269 [penwidth=1, color=black];\n\t1558 -> 1270 [penwidth=1, color=black];\n\t1558 -> 1271 [penwidth=1, color=black];\n\t1558 -> 1528 [penwidth=\"2.6094379124341005\", color=black];\n\t1559 -> 1254 [penwidth=1, color=black];\n\t1559 -> 1255 [penwidth=1, color=black];\n\t1559 -> 1522 [penwidth=1, color=black];\n\t1560 -> 1253 [penwidth=1, color=black];\n\t1561 -> 1522 [penwidth=1, color=black];\n\t1562 -> 1260 [penwidth=1, color=black];\n\t1562 -> 1527 [penwidth=1, color=black];\n\t1563 -> 1518 [penwidth=1, color=black];\n\t1564 -> 1233 [penwidth=1, color=black];\n\t1564 -> 1527 [penwidth=1, color=black];\n\t1565 -> 1523 [penwidth=1, color=chartreuse];\n\t1566 -> 1518 [penwidth=1, color=black];\n\t1567 -> 1518 [penwidth=1, color=black];\n\t1568 -> 187 [penwidth=1, color=black];\n\t1568 -> 321 [penwidth=1, color=black];\n\t1568 -> 365 [penwidth=1, color=black];\n\t1568 -> 1527 [penwidth=1, color=black];\n\t1568 -> 1528 [penwidth=1, color=black];\n\t1568 -> 1610 [penwidth=1, color=black];\n\t1569 -> 83 [penwidth=1, color=black];\n\t1569 -> 209 [penwidth=1, color=black];\n\t1569 -> 210 [penwidth=1, color=black];\n\t1569 -> 1526 [penwidth=1, color=black];\n\t1569 -> 1603 [penwidth=1, color=black];\n\t1570 -> 206 [penwidth=1, color=black];\n\t1570 -> 210 [penwidth=1, color=black];\n\t1571 -> 208 [penwidth=1, color=black];\n\t1571 -> 211 [penwidth=1, color=black];\n\t1572 -> 1518 [penwidth=1, color=black];\n\t1573 -> 1518 [penwidth=1, color=black];\n\t1574 -> 1518 [penwidth=1, color=black];\n\t1575 -> 115 [penwidth=1, color=black];\n\t1575 -> 197 [penwidth=1, color=black];\n\t1575 -> 204 [penwidth=1, color=black];\n\t1575 -> 307 [penwidth=1, color=black];\n\t1575 -> 326 [penwidth=1, color=black];\n\t1575 -> 338 [penwidth=1, color=black];\n\t1575 -> 339 [penwidth=1, color=black];\n\t1575 -> 397 [penwidth=1, color=black];\n\t1576 -> 135 [penwidth=1, color=black];\n\t1576 -> 136 [penwidth=1, color=black];\n\t1576 -> 286 [penwidth=1, color=black];\n\t1577 -> 283 [penwidth=1, color=black];\n\t1577 -> 284 [penwidth=1, color=black];\n\t1577 -> 285 [penwidth=1, color=black];\n\t1577 -> 288 [penwidth=1, color=black];\n\t1578 -> 1518 [penwidth=1, color=black];\n\t1579 -> 299 [penwidth=1, color=black];\n\t1579 -> 1612 [penwidth=\"2.09861228866811\", color=black];\n\t1580 -> 1528 [penwidth=1, color=black];\n\t1580 -> 1607 [penwidth=1, color=black];\n\t1582 -> 300 [penwidth=1, color=black];\n\t1582 -> 358 [penwidth=1, color=black];\n\t1582 -> 1527 [penwidth=1, color=black];\n\t1582 -> 1662 [penwidth=1, color=black];\n\t1583 -> 1518 [penwidth=1, color=black];\n\t1584 -> 1518 [penwidth=1, color=black];\n\t1585 -> 1518 [penwidth=1, color=black];\n\t1586 -> 89 [penwidth=1, color=black];\n\t1586 -> 90 [penwidth=1, color=black];\n\t1586 -> 116 [penwidth=1, color=black];\n\t1586 -> 150 [penwidth=1, color=black];\n\t1586 -> 156 [penwidth=1, color=black];\n\t1586 -> 1612 [penwidth=1, color=black];\n\t1587 -> 1520 [penwidth=1, color=chartreuse];\n\t1588 -> 322 [penwidth=1, color=black];\n\t1588 -> 1611 [penwidth=\"1.6931471805599454\", color=black];\n\t1589 -> 198 [penwidth=1, color=black];\n\t1589 -> 264 [penwidth=1, color=black];\n\t1589 -> 270 [penwidth=1, color=black];\n\t1589 -> 1528 [penwidth=1, color=black];\n\t1590 -> 1518 [penwidth=1, color=black];\n\t1591 -> 1518 [penwidth=1, color=black];\n\t1592 -> 1518 [penwidth=1, color=black];\n\t1593 -> 1518 [penwidth=1, color=black];\n\t1594 -> 356 [penwidth=1, color=black];\n\t1595 -> 362 [penwidth=1, color=black];\n\t1595 -> 363 [penwidth=1, color=black];\n\t1595 -> 364 [penwidth=1, color=black];\n\t1596 -> 333 [penwidth=1, color=black];\n\t1596 -> 1529 [penwidth=1, color=black];\n\t1597 -> 96 [penwidth=1, color=black];\n\t1597 -> 120 [penwidth=1, color=black];\n\t1597 -> 124 [penwidth=1, color=black];\n\t1597 -> 127 [penwidth=1, color=black];\n\t1597 -> 138 [penwidth=1, color=black];\n\t1597 -> 158 [penwidth=1, color=black];\n\t1597 -> 195 [penwidth=1, color=black];\n\t1597 -> 331 [penwidth=1, color=black];\n\t1597 -> 1529 [penwidth=1, color=black];\n\t1598 -> 1518 [penwidth=1, color=black];\n\t1599 -> 391 [penwidth=1, color=black];\n\t1600 -> 1518 [penwidth=1, color=black];\n\t1602 -> 1521 [penwidth=1, color=black];\n\t1604 -> 1657 [penwidth=1, color=black];\n\t1605 -> 1658 [penwidth=1, color=black];\n\t1607 -> 1356 [penwidth=1, color=black];\n\t1610 -> 152 [penwidth=1, color=black];\n\t1611 -> 407 [penwidth=1, color=black];\n\t1611 -> 1612 [penwidth=\"1.6931471805599454\", color=black];\n\t1612 -> 1601 [penwidth=1, color=black];\n\t1612 -> 1889 [penwidth=1, color=black];\n\t1614 -> 1657 [penwidth=1, color=black];\n\t1616 -> 1657 [penwidth=1, color=black];\n\t1617 -> 1613 [penwidth=1, color=black];\n\t1617 -> 1656 [penwidth=\"2.386294361119891\", color=black];\n\t1619 -> 1655 [penwidth=1, color=black];\n\t1619 -> 1776 [penwidth=\"1.6931471805599454\", color=black];\n\t1620 -> 1773 [penwidth=\"1.6931471805599454\", color=black];\n\t1620 -> 1774 [penwidth=\"1.6931471805599454\", color=black];\n\t1620 -> 1775 [penwidth=\"1.6931471805599454\", color=black];\n\t1620 -> 1778 [penwidth=\"1.6931471805599454\", color=black];\n\t1621 -> 1655 [penwidth=1, color=black];\n\t1621 -> 1777 [penwidth=\"1.6931471805599454\", color=black];\n\t1622 -> 82 [penwidth=\"1.6931471805599454\", color=black];\n\t1622 -> 1604 [penwidth=1, color=black];\n\t1623 -> 316 [penwidth=\"1.6931471805599454\", color=black];\n\t1623 -> 317 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 85 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 86 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 87 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 88 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 93 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 94 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 104 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 105 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 108 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 109 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 110 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 111 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 113 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 117 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 118 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 121 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 123 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 125 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 126 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 130 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 131 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 132 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 133 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 134 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 141 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 143 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 144 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 145 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 149 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 154 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 160 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 163 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 164 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 165 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 166 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 167 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 175 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 176 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 177 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 178 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 179 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 180 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 181 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 182 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 188 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 189 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 190 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 202 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 205 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 207 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 212 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 213 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 214 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 215 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 216 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 217 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 218 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 219 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 220 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 221 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 222 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 223 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 224 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 226 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 227 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 228 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 229 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 230 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 233 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 234 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 235 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 239 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 245 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 246 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 248 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 249 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 251 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 252 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 253 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 259 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 265 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 269 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 272 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 273 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 276 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 277 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 278 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 279 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 280 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 282 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 287 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 289 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 290 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 291 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 293 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 294 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 296 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 297 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 305 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 308 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 309 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 312 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 313 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 314 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 315 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 319 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 323 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 324 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 327 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 329 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 330 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 334 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 336 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 337 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 340 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 342 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 344 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 345 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 347 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 348 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 350 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 351 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 352 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 354 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 359 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 361 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 366 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 367 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 370 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 371 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 372 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 373 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 374 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 375 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 376 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 379 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 385 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 386 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 388 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 394 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 395 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 396 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 398 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 399 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 401 [penwidth=\"1.6931471805599454\", color=black];\n\t1624 -> 1604 [penwidth=\"2.386294361119891\", color=black];\n\t1624 -> 1660 [penwidth=\"4.526360524616162\", color=black];\n\t1624 -> 1664 [penwidth=1, color=black];\n\t1625 -> 644 [penwidth=\"1.6931471805599454\", color=black];\n\t1625 -> 1074 [penwidth=\"2.09861228866811\", color=black];\n\t1625 -> 1075 [penwidth=\"1.6931471805599454\", color=black];\n\t1626 -> 645 [penwidth=\"1.6931471805599454\", color=black];\n\t1627 -> 122 [penwidth=\"1.6931471805599454\", color=black];\n\t1627 -> 281 [penwidth=\"1.6931471805599454\", color=black];\n\t1628 -> 263 [penwidth=\"1.6931471805599454\", color=black];\n\t1628 -> 400 [penwidth=\"1.6931471805599454\", color=black];\n\t1628 -> 1660 [penwidth=1, color=black];\n\t1629 -> 1604 [penwidth=\"2.09861228866811\", color=black];\n\t1630 -> 1608 [penwidth=1, color=black];\n\t1630 -> 1660 [penwidth=1, color=black];\n\t1631 -> 1236 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1237 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1238 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1239 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1240 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1241 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1242 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1243 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1244 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1248 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1249 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1251 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1252 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1258 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1259 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1261 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1262 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1264 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1267 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1269 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1270 [penwidth=\"1.6931471805599454\", color=black];\n\t1631 -> 1271 [penwidth=\"1.6931471805599454\", color=black];\n\t1632 -> 1254 [penwidth=\"1.6931471805599454\", color=black];\n\t1632 -> 1255 [penwidth=\"1.6931471805599454\", color=black];\n\t1632 -> 1613 [penwidth=1, color=black];\n\t1633 -> 1266 [penwidth=\"1.6931471805599454\", color=black];\n\t1633 -> 1268 [penwidth=\"1.6931471805599454\", color=black];\n\t1633 -> 1656 [penwidth=1, color=black];\n\t1634 -> 1260 [penwidth=\"1.6931471805599454\", color=black];\n\t1634 -> 1656 [penwidth=1, color=black];\n\t1635 -> 1233 [penwidth=\"1.6931471805599454\", color=black];\n\t1635 -> 1656 [penwidth=1, color=black];\n\t1636 -> 1250 [penwidth=\"1.6931471805599454\", color=black];\n\t1636 -> 1257 [penwidth=\"1.6931471805599454\", color=black];\n\t1636 -> 1265 [penwidth=\"1.6931471805599454\", color=black];\n\t1636 -> 1613 [penwidth=1, color=black];\n\t1636 -> 1656 [penwidth=1, color=black];\n\t1636 -> 1660 [penwidth=1, color=black];\n\t1637 -> 187 [penwidth=\"1.6931471805599454\", color=black];\n\t1637 -> 321 [penwidth=\"1.6931471805599454\", color=black];\n\t1637 -> 365 [penwidth=\"1.6931471805599454\", color=black];\n\t1637 -> 1610 [penwidth=1, color=black];\n\t1637 -> 1657 [penwidth=1, color=black];\n\t1637 -> 1660 [penwidth=1, color=black];\n\t1638 -> 83 [penwidth=1, color=black];\n\t1638 -> 209 [penwidth=\"1.6931471805599454\", color=black];\n\t1638 -> 210 [penwidth=\"1.6931471805599454\", color=black];\n\t1638 -> 1603 [penwidth=1, color=black];\n\t1638 -> 1660 [penwidth=1, color=black];\n\t1639 -> 206 [penwidth=\"1.6931471805599454\", color=black];\n\t1639 -> 1604 [penwidth=1, color=black];\n\t1640 -> 208 [penwidth=\"2.386294361119891\", color=black];\n\t1640 -> 211 [penwidth=1, color=black];\n\t1641 -> 307 [penwidth=\"1.6931471805599454\", color=black];\n\t1642 -> 286 [penwidth=\"1.6931471805599454\", color=black];\n\t1643 -> 283 [penwidth=\"1.6931471805599454\", color=black];\n\t1644 -> 299 [penwidth=1, color=black];\n\t1644 -> 607 [penwidth=1, color=black];\n\t1644 -> 608 [penwidth=1, color=black];\n\t1644 -> 609 [penwidth=1, color=black];\n\t1644 -> 1659 [penwidth=1, color=black];\n\t1645 -> 1607 [penwidth=1, color=black];\n\t1645 -> 1660 [penwidth=1, color=black];\n\t1647 -> 300 [penwidth=\"1.6931471805599454\", color=black];\n\t1647 -> 358 [penwidth=\"1.6931471805599454\", color=black];\n\t1647 -> 1604 [penwidth=1, color=black];\n\t1647 -> 1662 [penwidth=1, color=black];\n\t1648 -> 89 [penwidth=\"1.6931471805599454\", color=black];\n\t1648 -> 1601 [penwidth=1, color=black];\n\t1649 -> 152 [penwidth=\"2.09861228866811\", color=black];\n\t1649 -> 161 [penwidth=\"1.6931471805599454\", color=black];\n\t1649 -> 225 [penwidth=1, color=black];\n\t1649 -> 304 [penwidth=\"2.09861228866811\", color=black];\n\t1649 -> 1657 [penwidth=1, color=black];\n\t1649 -> 1660 [penwidth=1, color=black];\n\t1650 -> 322 [penwidth=\"1.6931471805599454\", color=black];\n\t1651 -> 264 [penwidth=\"1.6931471805599454\", color=black];\n\t1651 -> 1660 [penwidth=1, color=black];\n\t1652 -> 356 [penwidth=\"2.386294361119891\", color=black];\n\t1652 -> 1659 [penwidth=\"1.6931471805599454\", color=black];\n\t1653 -> 362 [penwidth=\"1.6931471805599454\", color=black];\n\t1653 -> 363 [penwidth=1, color=black];\n\t1653 -> 364 [penwidth=\"1.6931471805599454\", color=black];\n\t1654 -> 391 [penwidth=\"1.6931471805599454\", color=black];\n\t1654 -> 1659 [penwidth=1, color=black];\n\t1655 -> 1900 [penwidth=1, color=black];\n\t1656 -> 1657 [penwidth=1, color=black];\n\t1657 -> 1658 [penwidth=1, color=black];\n\t1657 -> 1900 [penwidth=1, color=black];\n\t1659 -> 1900 [penwidth=1, color=black];\n\t1660 -> 1605 [penwidth=1, color=black];\n\t1660 -> 1663 [penwidth=1, color=black];\n\t1661 -> 1250 [penwidth=\"1.6931471805599454\", color=black];\n\t1661 -> 1257 [penwidth=\"1.6931471805599454\", color=black];\n\t1661 -> 1265 [penwidth=\"1.6931471805599454\", color=black];\n\t1662 -> 356 [penwidth=1, color=black];\n\t1663 -> 1606 [penwidth=1, color=black];\n\t1663 -> 1609 [penwidth=1, color=black];\n\t1665 -> 1885 [penwidth=1, color=black];\n\t1671 -> 1668 [penwidth=\"2.386294361119891\", color=black];\n\t1671 -> 1670 [penwidth=\"2.386294361119891\", color=black];\n\t1672 -> 1667 [penwidth=1, color=black];\n\t1672 -> 1668 [penwidth=1, color=black];\n\t1672 -> 1669 [penwidth=1, color=black];\n\t1672 -> 1670 [penwidth=1, color=black];\n\t1672 -> 1672 [penwidth=1, color=black];\n\t1673 -> 1672 [penwidth=1, color=black];\n\t1673 -> 1674 [penwidth=1, color=black];\n\t1673 -> 1678 [penwidth=1, color=black];\n\t1674 -> 1668 [penwidth=\"1.6931471805599454\", color=black];\n\t1674 -> 1670 [penwidth=1, color=black];\n\t1674 -> 1671 [penwidth=1, color=black];\n\t1674 -> 1674 [penwidth=1, color=black];\n\t1674 -> 1675 [penwidth=1, color=black];\n\t1674 -> 1676 [penwidth=1, color=black];\n\t1675 -> 1668 [penwidth=1, color=black];\n\t1675 -> 1670 [penwidth=1, color=black];\n\t1676 -> 1668 [penwidth=\"1.6931471805599454\", color=black];\n\t1676 -> 1670 [penwidth=\"1.6931471805599454\", color=black];\n\t1677 -> 1668 [penwidth=1, color=black];\n\t1677 -> 1670 [penwidth=1, color=black];\n\t1677 -> 1678 [penwidth=1, color=orange];\n\t1678 -> 1677 [penwidth=1, color=orange];\n\t1693 -> 1692 [penwidth=1, color=black];\n\t1694 -> 600 [penwidth=1, color=black];\n\t1694 -> 602 [penwidth=1, color=black];\n\t1694 -> 603 [penwidth=1, color=black];\n\t1694 -> 1682 [penwidth=1, color=black];\n\t1694 -> 1684 [penwidth=\"1.6931471805599454\", color=black];\n\t1694 -> 1687 [penwidth=1, color=black];\n\t1696 -> 1695 [penwidth=1, color=black];\n\t1698 -> 1697 [penwidth=1, color=black];\n\t1703 -> 1701 [penwidth=\"1.6931471805599454\", color=black];\n\t1703 -> 1702 [penwidth=\"1.6931471805599454\", color=black];\n\t1704 -> 1714 [penwidth=\"1.6931471805599454\", color=black];\n\t1705 -> 601 [penwidth=1, color=black];\n\t1705 -> 1683 [penwidth=1, color=black];\n\t1705 -> 1700 [penwidth=1, color=black];\n\t1705 -> 1701 [penwidth=1, color=black];\n\t1705 -> 1702 [penwidth=1, color=black];\n\t1706 -> 601 [penwidth=1, color=black];\n\t1706 -> 603 [penwidth=1, color=black];\n\t1706 -> 1682 [penwidth=1, color=black];\n\t1706 -> 1683 [penwidth=1, color=black];\n\t1706 -> 1684 [penwidth=1, color=black];\n\t1706 -> 1685 [penwidth=1, color=black];\n\t1706 -> 1687 [penwidth=1, color=black];\n\t1706 -> 1688 [penwidth=1, color=black];\n\t1707 -> 603 [penwidth=1, color=black];\n\t1707 -> 1688 [penwidth=1, color=black];\n\t1707 -> 1713 [penwidth=1, color=black];\n\t1707 -> 1714 [penwidth=1, color=black];\n\t1711 -> 178 [penwidth=1, color=black];\n\t1711 -> 372 [penwidth=1, color=black];\n\t1711 -> 1680 [penwidth=1, color=black];\n\t1711 -> 1690 [penwidth=\"1.6931471805599454\", color=black];\n\t1712 -> 1711 [penwidth=1, color=black];\n\t1718 -> 1760 [penwidth=1, color=black];\n\t1719 -> 1387 [penwidth=1, color=black];\n\t1719 -> 1439 [penwidth=1, color=black];\n\t1719 -> 1441 [penwidth=1, color=black];\n\t1720 -> 1719 [penwidth=1, color=black];\n\t1720 -> 1734 [penwidth=1, color=black];\n\t1721 -> 1393 [penwidth=1, color=black];\n\t1721 -> 1441 [penwidth=1, color=black];\n\t1721 -> 1442 [penwidth=1, color=black];\n\t1722 -> 1711 [penwidth=1, color=black];\n\t1722 -> 1724 [penwidth=\"1.6931471805599454\", color=black];\n\t1722 -> 1726 [penwidth=1, color=black];\n\t1723 -> 1712 [penwidth=1, color=black];\n\t1723 -> 1719 [penwidth=1, color=black];\n\t1723 -> 1725 [penwidth=\"1.6931471805599454\", color=black];\n\t1723 -> 1726 [penwidth=1, color=black];\n\t1724 -> 1359 [penwidth=1, color=black];\n\t1724 -> 1373 [penwidth=1, color=black];\n\t1724 -> 1387 [penwidth=1, color=black];\n\t1725 -> 1393 [penwidth=1, color=black];\n\t1725 -> 1442 [penwidth=1, color=black];\n\t1725 -> 1724 [penwidth=\"1.6931471805599454\", color=black];\n\t1725 -> 1734 [penwidth=1, color=black];\n\t1726 -> 1435 [penwidth=\"1.6931471805599454\", color=black];\n\t1726 -> 1442 [penwidth=1, color=black];\n\t1726 -> 1695 [penwidth=1, color=black];\n\t1726 -> 1762 [penwidth=1, color=black];\n\t1727 -> 1435 [penwidth=\"2.09861228866811\", color=black];\n\t1727 -> 1682 [penwidth=1, color=black];\n\t1727 -> 1684 [penwidth=1, color=black];\n\t1727 -> 1687 [penwidth=1, color=black];\n\t1728 -> 1371 [penwidth=1, color=black];\n\t1728 -> 1387 [penwidth=1, color=black];\n\t1728 -> 1391 [penwidth=\"2.09861228866811\", color=black];\n\t1728 -> 1433 [penwidth=1, color=black];\n\t1728 -> 1435 [penwidth=\"1.6931471805599454\", color=black];\n\t1728 -> 1697 [penwidth=1, color=black];\n\t1728 -> 1758 [penwidth=1, color=black];\n\t1728 -> 1764 [penwidth=1, color=black];\n\t1732 -> 1373 [penwidth=1, color=black];\n\t1732 -> 1387 [penwidth=1, color=black];\n\t1732 -> 1681 [penwidth=1, color=black];\n\t1732 -> 1726 [penwidth=1, color=black];\n\t1733 -> 1373 [penwidth=1, color=black];\n\t1733 -> 1387 [penwidth=1, color=black];\n\t1733 -> 1391 [penwidth=1, color=black];\n\t1733 -> 1432 [penwidth=1, color=black];\n\t1733 -> 1435 [penwidth=1, color=black];\n\t1733 -> 1689 [penwidth=\"1.6931471805599454\", color=black];\n\t1733 -> 1692 [penwidth=1, color=black];\n\t1733 -> 1760 [penwidth=1, color=black];\n\t1734 -> 1378 [penwidth=1, color=black];\n\t1734 -> 1441 [penwidth=1, color=black];\n\t1734 -> 1757 [penwidth=\"1.6931471805599454\", color=black];\n\t1735 -> 1721 [penwidth=1, color=black];\n\t1736 -> 1433 [penwidth=1, color=black];\n\t1736 -> 1440 [penwidth=1, color=black];\n\t1736 -> 1733 [penwidth=1, color=black];\n\t1736 -> 1755 [penwidth=1, color=black];\n\t1737 -> 1719 [penwidth=1, color=black];\n\t1737 -> 1722 [penwidth=1, color=black];\n\t1738 -> 1719 [penwidth=1, color=black];\n\t1738 -> 1732 [penwidth=1, color=black];\n\t1739 -> 1441 [penwidth=1, color=black];\n\t1739 -> 1694 [penwidth=1, color=black];\n\t1739 -> 1727 [penwidth=1, color=black];\n\t1740 -> 1760 [penwidth=1, color=black];\n\t1741 -> 1723 [penwidth=1, color=black];\n\t1741 -> 1734 [penwidth=1, color=black];\n\t1742 -> 1720 [penwidth=1, color=black];\n\t1742 -> 1732 [penwidth=1, color=black];\n\t1743 -> 1734 [penwidth=1, color=black];\n\t1744 -> 1470 [penwidth=1, color=black];\n\t1745 -> 1744 [penwidth=1, color=black];\n\t1747 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t1747 -> 1696 [penwidth=1, color=black];\n\t1747 -> 1699 [penwidth=1, color=black];\n\t1747 -> 1701 [penwidth=1, color=black];\n\t1747 -> 1702 [penwidth=1, color=black];\n\t1747 -> 1763 [penwidth=1, color=black];\n\t1747 -> 1871 [penwidth=1, color=black];\n\t1748 -> 1682 [penwidth=1, color=black];\n\t1748 -> 1684 [penwidth=1, color=black];\n\t1748 -> 1687 [penwidth=1, color=black];\n\t1749 -> 1470 [penwidth=1, color=black];\n\t1749 -> 1698 [penwidth=1, color=black];\n\t1749 -> 1759 [penwidth=1, color=black];\n\t1749 -> 1765 [penwidth=1, color=black];\n\t1749 -> 1871 [penwidth=\"1.6931471805599454\", color=black];\n\t1750 -> 1470 [penwidth=1, color=black];\n\t1750 -> 1714 [penwidth=1, color=black];\n\t1751 -> 1469 [penwidth=1, color=black];\n\t1751 -> 1470 [penwidth=\"1.6931471805599454\", color=black];\n\t1751 -> 1475 [penwidth=1, color=black];\n\t1751 -> 1689 [penwidth=1, color=black];\n\t1751 -> 1692 [penwidth=1, color=black];\n\t1751 -> 1871 [penwidth=1, color=black];\n\t1752 -> 1746 [penwidth=1, color=chartreuse];\n\t1753 -> 1752 [penwidth=1, color=black];\n\t1754 -> 1693 [penwidth=1, color=black];\n\t1754 -> 1751 [penwidth=1, color=black];\n\t1754 -> 1756 [penwidth=1, color=black];\n\t1754 -> 1871 [penwidth=1, color=black];\n\t1756 -> 1755 [penwidth=1, color=black];\n\t1757 -> 1373 [penwidth=1, color=black];\n\t1757 -> 1379 [penwidth=1, color=black];\n\t1757 -> 1380 [penwidth=1, color=black];\n\t1757 -> 1440 [penwidth=1, color=black];\n\t1757 -> 1441 [penwidth=1, color=black];\n\t1759 -> 1758 [penwidth=1, color=black];\n\t1760 -> 1679 [penwidth=1, color=black];\n\t1760 -> 1686 [penwidth=1, color=black];\n\t1760 -> 1689 [penwidth=1, color=black];\n\t1760 -> 1883 [penwidth=1, color=black];\n\t1760 -> 1884 [penwidth=1, color=black];\n\t1761 -> 1689 [penwidth=1, color=black];\n\t1763 -> 1762 [penwidth=1, color=black];\n\t1765 -> 1764 [penwidth=1, color=black];\n\t1766 -> 1700 [penwidth=1, color=black];\n\t1766 -> 1744 [penwidth=1, color=black];\n\t1766 -> 1747 [penwidth=1, color=black];\n\t1767 -> 1713 [penwidth=1, color=black];\n\t1767 -> 1744 [penwidth=1, color=black];\n\t1767 -> 1750 [penwidth=1, color=black];\n\t1768 -> 1691 [penwidth=1, color=black];\n\t1768 -> 1748 [penwidth=1, color=black];\n\t1769 -> 1679 [penwidth=1, color=black];\n\t1769 -> 1686 [penwidth=1, color=black];\n\t1769 -> 1689 [penwidth=1, color=black];\n\t1770 -> 1700 [penwidth=1, color=black];\n\t1770 -> 1745 [penwidth=1, color=black];\n\t1770 -> 1747 [penwidth=1, color=black];\n\t1771 -> 1713 [penwidth=1, color=black];\n\t1771 -> 1745 [penwidth=1, color=black];\n\t1771 -> 1750 [penwidth=1, color=black];\n\t1772 -> 1691 [penwidth=1, color=black];\n\t1772 -> 1745 [penwidth=1, color=black];\n\t1772 -> 1748 [penwidth=1, color=black];\n\t1779 -> 1785 [penwidth=1, color=black];\n\t1779 -> 1815 [penwidth=1, color=black];\n\t1779 -> 1846 [penwidth=1, color=black];\n\t1780 -> 1785 [penwidth=\"1.6931471805599454\", color=black];\n\t1781 -> 1773 [penwidth=\"1.6931471805599454\", color=black];\n\t1781 -> 1774 [penwidth=\"1.6931471805599454\", color=black];\n\t1781 -> 1775 [penwidth=\"1.6931471805599454\", color=black];\n\t1781 -> 1778 [penwidth=\"1.6931471805599454\", color=black];\n\t1782 -> 1789 [penwidth=\"1.6931471805599454\", color=black];\n\t1790 -> 1776 [penwidth=1, color=black];\n\t1790 -> 1783 [penwidth=1, color=black];\n\t1790 -> 1784 [penwidth=1, color=black];\n\t1790 -> 1785 [penwidth=1, color=black];\n\t1790 -> 1787 [penwidth=1, color=black];\n\t1790 -> 1791 [penwidth=1, color=black];\n\t1791 -> 1773 [penwidth=1, color=black];\n\t1791 -> 1774 [penwidth=1, color=black];\n\t1791 -> 1775 [penwidth=1, color=black];\n\t1791 -> 1778 [penwidth=1, color=black];\n\t1791 -> 1792 [penwidth=1, color=orange];\n\t1792 -> 1777 [penwidth=1, color=black];\n\t1792 -> 1786 [penwidth=1, color=black];\n\t1792 -> 1788 [penwidth=1, color=black];\n\t1792 -> 1789 [penwidth=1, color=black];\n\t1792 -> 1791 [penwidth=1, color=orange];\n\t1793 -> 1784 [penwidth=1, color=black];\n\t1794 -> 1783 [penwidth=1, color=black];\n\t1795 -> 1787 [penwidth=1, color=black];\n\t1796 -> 1785 [penwidth=1, color=black];\n\t1796 -> 1817 [penwidth=1, color=black];\n\t1796 -> 1848 [penwidth=1, color=black];\n\t1799 -> 1787 [penwidth=1, color=black];\n\t1800 -> 1785 [penwidth=1, color=black];\n\t1800 -> 1816 [penwidth=1, color=black];\n\t1800 -> 1849 [penwidth=1, color=black];\n\t1804 -> 1387 [penwidth=1, color=black];\n\t1807 -> 1728 [penwidth=1, color=black];\n\t1807 -> 1735 [penwidth=1, color=black];\n\t1807 -> 1776 [penwidth=1, color=black];\n\t1807 -> 1804 [penwidth=1, color=black];\n\t1808 -> 1773 [penwidth=1, color=black];\n\t1808 -> 1774 [penwidth=1, color=black];\n\t1808 -> 1775 [penwidth=1, color=black];\n\t1808 -> 1778 [penwidth=1, color=black];\n\t1809 -> 1721 [penwidth=1, color=black];\n\t1809 -> 1735 [penwidth=1, color=black];\n\t1809 -> 1736 [penwidth=1, color=black];\n\t1809 -> 1777 [penwidth=\"1.6931471805599454\", color=black];\n\t1809 -> 1804 [penwidth=\"1.6931471805599454\", color=black];\n\t1810 -> 1442 [penwidth=1, color=black];\n\t1810 -> 1723 [penwidth=1, color=black];\n\t1810 -> 1734 [penwidth=1, color=black];\n\t1810 -> 1773 [penwidth=1, color=black];\n\t1811 -> 1380 [penwidth=1, color=black];\n\t1811 -> 1441 [penwidth=1, color=black];\n\t1812 -> 1470 [penwidth=1, color=black];\n\t1813 -> 1754 [penwidth=1, color=black];\n\t1813 -> 1786 [penwidth=1, color=black];\n\t1813 -> 1788 [penwidth=1, color=black];\n\t1814 -> 1784 [penwidth=1, color=black];\n\t1815 -> 1818 [penwidth=1, color=orange];\n\t1816 -> 1819 [penwidth=1, color=orange];\n\t1817 -> 1820 [penwidth=1, color=orange];\n\t1818 -> 1773 [penwidth=1, color=black];\n\t1818 -> 1775 [penwidth=1, color=black];\n\t1818 -> 1778 [penwidth=1, color=black];\n\t1818 -> 1815 [penwidth=1, color=orange];\n\t1818 -> 1826 [penwidth=1, color=black];\n\t1818 -> 1832 [penwidth=1, color=black];\n\t1818 -> 1833 [penwidth=1, color=black];\n\t1818 -> 1861 [penwidth=1, color=black];\n\t1819 -> 1773 [penwidth=1, color=black];\n\t1819 -> 1774 [penwidth=1, color=black];\n\t1819 -> 1775 [penwidth=1, color=black];\n\t1819 -> 1778 [penwidth=1, color=black];\n\t1819 -> 1816 [penwidth=1, color=orange];\n\t1819 -> 1826 [penwidth=1, color=black];\n\t1819 -> 1834 [penwidth=1, color=black];\n\t1819 -> 1837 [penwidth=1, color=black];\n\t1819 -> 1838 [penwidth=1, color=black];\n\t1819 -> 1861 [penwidth=1, color=black];\n\t1820 -> 1775 [penwidth=1, color=black];\n\t1820 -> 1778 [penwidth=1, color=black];\n\t1820 -> 1817 [penwidth=1, color=orange];\n\t1820 -> 1826 [penwidth=1, color=black];\n\t1820 -> 1836 [penwidth=1, color=black];\n\t1820 -> 1839 [penwidth=1, color=black];\n\t1821 -> 1749 [penwidth=1, color=black];\n\t1821 -> 1752 [penwidth=1, color=black];\n\t1821 -> 1783 [penwidth=1, color=black];\n\t1821 -> 1784 [penwidth=1, color=black];\n\t1821 -> 1785 [penwidth=1, color=black];\n\t1821 -> 1787 [penwidth=1, color=black];\n\t1821 -> 1812 [penwidth=1, color=black];\n\t1822 -> 1773 [penwidth=1, color=black];\n\t1822 -> 1774 [penwidth=1, color=black];\n\t1822 -> 1775 [penwidth=1, color=black];\n\t1822 -> 1778 [penwidth=1, color=black];\n\t1823 -> 1752 [penwidth=1, color=black];\n\t1823 -> 1789 [penwidth=1, color=black];\n\t1823 -> 1812 [penwidth=1, color=black];\n\t1823 -> 1813 [penwidth=1, color=black];\n\t1825 -> 1753 [penwidth=1, color=black];\n\t1825 -> 1789 [penwidth=1, color=black];\n\t1825 -> 1812 [penwidth=1, color=black];\n\t1825 -> 1813 [penwidth=1, color=black];\n\t1826 -> 1786 [penwidth=1, color=black];\n\t1826 -> 1788 [penwidth=1, color=black];\n\t1826 -> 1789 [penwidth=1, color=black];\n\t1826 -> 1871 [penwidth=1, color=black];\n\t1827 -> 517 [penwidth=1, color=black];\n\t1827 -> 1845 [penwidth=1, color=black];\n\t1831 -> 1854 [penwidth=1, color=black];\n\t1831 -> 1860 [penwidth=1, color=black];\n\t1831 -> 1862 [penwidth=1, color=black];\n\t1832 -> 1680 [penwidth=1, color=black];\n\t1832 -> 1700 [penwidth=\"1.6931471805599454\", color=black];\n\t1832 -> 1847 [penwidth=1, color=black];\n\t1832 -> 1860 [penwidth=1, color=black];\n\t1832 -> 1863 [penwidth=1, color=black];\n\t1832 -> 1867 [penwidth=1, color=black];\n\t1832 -> 1868 [penwidth=1, color=black];\n\t1833 -> 1682 [penwidth=1, color=black];\n\t1833 -> 1835 [penwidth=1, color=black];\n\t1834 -> 1680 [penwidth=1, color=black];\n\t1834 -> 1847 [penwidth=1, color=black];\n\t1834 -> 1850 [penwidth=1, color=black];\n\t1834 -> 1856 [penwidth=1, color=black];\n\t1835 -> 1858 [penwidth=1, color=black];\n\t1835 -> 1868 [penwidth=1, color=black];\n\t1835 -> 1869 [penwidth=1, color=black];\n\t1836 -> 1684 [penwidth=1, color=black];\n\t1836 -> 1835 [penwidth=1, color=black];\n\t1837 -> 1681 [penwidth=1, color=black];\n\t1837 -> 1847 [penwidth=1, color=black];\n\t1837 -> 1850 [penwidth=1, color=black];\n\t1837 -> 1856 [penwidth=1, color=black];\n\t1838 -> 1687 [penwidth=1, color=black];\n\t1838 -> 1835 [penwidth=1, color=black];\n\t1839 -> 1831 [penwidth=1, color=black];\n\t1839 -> 1847 [penwidth=1, color=black];\n\t1839 -> 1850 [penwidth=1, color=black];\n\t1839 -> 1861 [penwidth=1, color=black];\n\t1842 -> 1845 [penwidth=1, color=black];\n\t1842 -> 1888 [penwidth=1, color=black];\n\t1846 -> 1830 [penwidth=1, color=black];\n\t1846 -> 1843 [penwidth=1, color=black];\n\t1846 -> 1865 [penwidth=1, color=black];\n\t1846 -> 1870 [penwidth=1, color=black];\n\t1847 -> 1851 [penwidth=1, color=black];\n\t1848 -> 1684 [penwidth=1, color=black];\n\t1848 -> 1830 [penwidth=1, color=black];\n\t1848 -> 1851 [penwidth=1, color=black];\n\t1848 -> 1865 [penwidth=1, color=black];\n\t1848 -> 1867 [penwidth=1, color=black];\n\t1848 -> 1870 [penwidth=1, color=black];\n\t1849 -> 1830 [penwidth=1, color=black];\n\t1849 -> 1841 [penwidth=1, color=black];\n\t1849 -> 1844 [penwidth=1, color=black];\n\t1849 -> 1853 [penwidth=1, color=black];\n\t1849 -> 1867 [penwidth=1, color=black];\n\t1849 -> 1870 [penwidth=1, color=black];\n\t1850 -> 1852 [penwidth=1, color=black];\n\t1854 -> 1840 [penwidth=1, color=chartreuse];\n\t1855 -> 1828 [penwidth=\"2.09861228866811\", color=black];\n\t1855 -> 1857 [penwidth=1, color=black];\n\t1856 -> 1828 [penwidth=1, color=black];\n\t1856 -> 1855 [penwidth=1, color=black];\n\t1856 -> 1860 [penwidth=1, color=black];\n\t1856 -> 1866 [penwidth=1, color=black];\n\t1857 -> 1888 [penwidth=1, color=black];\n\t1858 -> 1830 [penwidth=1, color=black];\n\t1858 -> 1851 [penwidth=\"1.6931471805599454\", color=black];\n\t1859 -> 1830 [penwidth=1, color=black];\n\t1859 -> 1852 [penwidth=\"1.6931471805599454\", color=black];\n\t1860 -> 1830 [penwidth=1, color=black];\n\t1860 -> 1870 [penwidth=\"1.6931471805599454\", color=black];\n\t1861 -> 1847 [penwidth=1, color=black];\n\t1861 -> 1850 [penwidth=1, color=black];\n\t1861 -> 1858 [penwidth=1, color=black];\n\t1861 -> 1859 [penwidth=\"1.6931471805599454\", color=black];\n\t1864 -> 1681 [penwidth=1, color=black];\n\t1866 -> 1829 [penwidth=1, color=black];\n\t1867 -> 1845 [penwidth=1, color=black];\n\t1868 -> 1829 [penwidth=1, color=black];\n\t1872 -> 1872 [penwidth=\"1.6931471805599454\", color=black];\n\t1873 -> 1873 [penwidth=\"1.6931471805599454\", color=black];\n\t1876 -> 1874 [penwidth=1, color=black];\n\t1876 -> 1882 [penwidth=1, color=black];\n\t1877 -> 1883 [penwidth=1, color=black];\n\t1878 -> 1881 [penwidth=1, color=chartreuse];\n\t1879 -> 1877 [penwidth=1, color=chartreuse];\n\t1882 -> 1874 [penwidth=1, color=black];\n\t1885 -> 1886 [penwidth=1, color=black];\n\t1886 -> 1875 [penwidth=1, color=chartreuse];\n\t1887 -> 144 [penwidth=1, color=black];\n\t1887 -> 219 [penwidth=\"1.6931471805599454\", color=black];\n\t1887 -> 348 [penwidth=1, color=black];\n\t1887 -> 367 [penwidth=1, color=black];\n}\n"
utils/TestParsing.hs view
@@ -18,7 +18,7 @@ import Data.GraphViz import qualified Data.GraphViz.Types.Generalised as G-import Data.GraphViz.Parsing(runParser, parse)+import Data.GraphViz.Parsing(runParser) import Data.GraphViz.PreProcessing(preProcess) import Data.GraphViz.Commands.IO(hGetStrict, toUTF8) import Data.GraphViz.Exception@@ -26,7 +26,7 @@ import qualified Data.Text.Lazy as T import Data.Text.Lazy(Text) import qualified Data.ByteString.Lazy as B-import Control.Exception.Extensible(try, IOException)+import Control.Exception(try, evaluate, SomeException) import Control.Monad(liftM, filterM) import System.Directory import System.FilePath@@ -58,27 +58,30 @@ withParse :: (PPDotRepr dg n) => (a -> IO Text) -> (dg n -> IO ()) -> (ErrMsg -> String) -> a -> IO ()-withParse toStr withDG cmbErr a = do dc <- toStr a- edg <- tryParse dc- case edg of- (Right dg) -> withDG dg- (Left err) -> do putStrLn "Parsing problem!"- putStrLn $ cmbErr err- putStrLn ""+withParse toStr withDG cmbErr a = do dc <- liftM getMsg . try $ toStr a+ case dc of+ Right dc' -> do edg <- tryParse dc'+ case edg of+ (Right dg) -> withDG dg+ (Left err) -> do putStrLn "Parsing problem!"+ putStrLn $ cmbErr err+ putStrLn ""+ Left err -> do putStrLn "IO problem!"+ putStrLn err+ putStrLn ""+ where+ getMsg :: Either SomeException Text -> Either ErrMsg Text+ getMsg = either (Left . show) Right type DG = DotGraph Text type GDG = G.DotGraph Text type ErrMsg = String tryParseFile :: FilePath -> IO ()-tryParseFile fp = readFile' fp >>= maybeParse- where- maybeParse (Left err) = putStrLn $ "Error parsing \"" ++ fp ++ "\":\n\t"- ++ err ++ "\n"- maybeParse (Right dot) = withParse (const $ return dot)- (tryParseCanon fp)- ("Cannot parse as a G.DotGraph: "++)- fp+tryParseFile fp = withParse readFile'+ (tryParseCanon fp)+ ("Cannot parse as a G.DotGraph: "++)+ fp tryParseCanon :: FilePath -> GDG -> IO () tryParseCanon fp = withParse prettyPrint@@ -95,16 +98,16 @@ $ let (dg, rst) = runParser parse $ preProcess dc in T.length rst `seq` return dg where- getErr :: GraphvizException -> IO (Either ErrMsg a)+ getErr :: SomeException -> IO (Either ErrMsg a) getErr = return . Left . show -readFile' :: FilePath -> IO (Either ErrMsg Text)+readFile' :: FilePath -> IO Text readFile' fp = do putStr fp putStr " - "- liftM getMsg . try $ readUTF8File fp- where- getMsg :: Either IOException Text -> Either ErrMsg Text- getMsg = either (Left . show) Right+ readUTF8File fp -readUTF8File :: FilePath -> IO Text-readUTF8File = liftM toUTF8 . B.readFile+-- Force any encoding errors into the IO section rather than when parsing.+readUTF8File :: FilePath -> IO Text+readUTF8File fp = do cnts <- liftM toUTF8 $ B.readFile fp+ _ <- evaluate $ T.length cnts+ return cnts