From d3a98cf6cbc3bd0b9efc570f58e8812c03931c18 Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Tue, 16 Oct 2018 10:08:48 +0200
Subject: Original 5.40
---
hacks/glx/Makefile.in | 3473 +
hacks/glx/README | 10 +
hacks/glx/antinspect.c | 704 +
hacks/glx/antinspect.man | 56 +
hacks/glx/antmaze.c | 1613 +
hacks/glx/antmaze.man | 52 +
hacks/glx/ants.h | 45 +
hacks/glx/antspotlight.c | 799 +
hacks/glx/antspotlight.man | 56 +
hacks/glx/atlantis.c | 577 +
hacks/glx/atlantis.h | 133 +
hacks/glx/atlantis.man | 78 +
hacks/glx/atunnel.c | 317 +
hacks/glx/atunnel.man | 83 +
hacks/glx/b_draw.c | 239 +
hacks/glx/b_lockglue.c | 240 +
hacks/glx/b_sphere.c | 219 +
hacks/glx/blinkbox.c | 608 +
hacks/glx/blinkbox.man | 73 +
hacks/glx/blocktube.c | 457 +
hacks/glx/blocktube.man | 73 +
hacks/glx/boing.c | 658 +
hacks/glx/boing.man | 105 +
hacks/glx/bouncingcow.c | 519 +
hacks/glx/bouncingcow.man | 73 +
hacks/glx/boxed.c | 1370 +
hacks/glx/boxed.h | 4116 +
hacks/glx/boxed.man | 56 +
hacks/glx/bubble3d.c | 281 +
hacks/glx/bubble3d.h | 100 +
hacks/glx/bubble3d.man | 62 +
hacks/glx/buildlwo.c | 96 +
hacks/glx/buildlwo.h | 43 +
hacks/glx/cage.c | 480 +
hacks/glx/cage.man | 61 +
hacks/glx/carousel.c | 941 +
hacks/glx/carousel.man | 109 +
hacks/glx/chessgames.h | 343 +
hacks/glx/chessmodels.c | 1738 +
hacks/glx/chessmodels.h | 44 +
hacks/glx/circuit.c | 2094 +
hacks/glx/circuit.man | 72 +
hacks/glx/cityflow.c | 545 +
hacks/glx/cityflow.man | 77 +
hacks/glx/companion.c | 592 +
hacks/glx/companion_disc.c | 9593 ++
hacks/glx/companion_heart.c | 653 +
hacks/glx/companion_quad.c | 389 +
hacks/glx/companioncube.man | 85 +
hacks/glx/cow_face.c | 341 +
hacks/glx/cow_hide.c | 13055 +++
hacks/glx/cow_hoofs.c | 1037 +
hacks/glx/cow_horns.c | 1025 +
hacks/glx/cow_tail.c | 464 +
hacks/glx/cow_udder.c | 1520 +
hacks/glx/crackberg.c | 1468 +
hacks/glx/crackberg.man | 123 +
hacks/glx/crumbler.c | 875 +
hacks/glx/crumbler.man | 77 +
hacks/glx/cube21.c | 941 +
hacks/glx/cube21.man | 147 +
hacks/glx/cubenetic.c | 598 +
hacks/glx/cubenetic.man | 89 +
hacks/glx/cubestack.c | 462 +
hacks/glx/cubestack.man | 72 +
hacks/glx/cubestorm.c | 469 +
hacks/glx/cubestorm.man | 77 +
hacks/glx/cubetwist.c | 595 +
hacks/glx/cubetwist.man | 80 +
hacks/glx/cubicgrid.c | 269 +
hacks/glx/cubicgrid.man | 83 +
hacks/glx/curlicue.h | 261 +
hacks/glx/dangerball.c | 364 +
hacks/glx/dangerball.man | 72 +
hacks/glx/discoball.c | 707 +
hacks/glx/discoball.man | 72 +
hacks/glx/dnalogo.c | 3639 +
hacks/glx/dnapizza.h | 122 +
hacks/glx/dolphin.c | 2061 +
hacks/glx/dropshadow.c | 181 +
hacks/glx/dropshadow.h | 40 +
hacks/glx/dxf2gl.pl | 729 +
hacks/glx/dymaxionmap-coords.c | 685 +
hacks/glx/dymaxionmap-coords.h | 6 +
hacks/glx/dymaxionmap.c | 1654 +
hacks/glx/dymaxionmap.man | 117 +
hacks/glx/e_textures.h | 1478 +
hacks/glx/endgame.c | 971 +
hacks/glx/endgame.man | 72 +
hacks/glx/energystream.c | 534 +
hacks/glx/energystream.man | 56 +
hacks/glx/engine.c | 1006 +
hacks/glx/engine.man | 80 +
hacks/glx/erase-gl.c | 38 +
hacks/glx/esper.c | 2412 +
hacks/glx/esper.man | 68 +
hacks/glx/extrusion-helix2.c | 47 +
hacks/glx/extrusion-helix3.c | 46 +
hacks/glx/extrusion-helix4.c | 63 +
hacks/glx/extrusion-joinoffset.c | 148 +
hacks/glx/extrusion-screw.c | 114 +
hacks/glx/extrusion-taper.c | 218 +
hacks/glx/extrusion-twistoid.c | 215 +
hacks/glx/extrusion.c | 556 +
hacks/glx/extrusion.h | 55 +
hacks/glx/extrusion.man | 71 +
hacks/glx/flipflop.c | 859 +
hacks/glx/flipflop.man | 95 +
hacks/glx/flipscreen3d.c | 518 +
hacks/glx/flipscreen3d.man | 61 +
hacks/glx/fliptext.c | 1001 +
hacks/glx/fliptext.man | 114 +
hacks/glx/flurry-smoke.c | 1441 +
hacks/glx/flurry-spark.c | 285 +
hacks/glx/flurry-star.c | 106 +
hacks/glx/flurry-texture.c | 224 +
hacks/glx/flurry.c | 549 +
hacks/glx/flurry.h | 299 +
hacks/glx/flurry.man | 73 +
hacks/glx/flyingtoasters.c | 868 +
hacks/glx/flyingtoasters.man | 86 +
hacks/glx/fps-gl.c | 98 +
hacks/glx/gears.c | 938 +
hacks/glx/gears.man | 79 +
hacks/glx/geodesic.c | 816 +
hacks/glx/geodesic.man | 79 +
hacks/glx/geodesicgears.c | 1803 +
hacks/glx/geodesicgears.man | 78 +
hacks/glx/gflux.c | 803 +
hacks/glx/gflux.man | 111 +
hacks/glx/glblur.c | 610 +
hacks/glx/glblur.man | 76 +
hacks/glx/glcells.c | 1388 +
hacks/glx/glcells.man | 97 +
hacks/glx/gleidescope.c | 1624 +
hacks/glx/gleidescope.man | 77 +
hacks/glx/glforestfire.c | 1097 +
hacks/glx/glforestfire.man | 130 +
hacks/glx/glhanoi.c | 2086 +
hacks/glx/glhanoi.man | 83 +
hacks/glx/glknots.c | 445 +
hacks/glx/glknots.man | 81 +
hacks/glx/gllist.c | 127 +
hacks/glx/gllist.h | 44 +
hacks/glx/glmatrix.c | 1068 +
hacks/glx/glmatrix.man | 116 +
hacks/glx/glplanet.c | 847 +
hacks/glx/glplanet.man | 75 +
hacks/glx/glschool.c | 216 +
hacks/glx/glschool.h | 17 +
hacks/glx/glschool.man | 126 +
hacks/glx/glschool_alg.c | 364 +
hacks/glx/glschool_alg.h | 126 +
hacks/glx/glschool_gl.c | 274 +
hacks/glx/glschool_gl.h | 51 +
hacks/glx/glslideshow.c | 1222 +
hacks/glx/glslideshow.man | 131 +
hacks/glx/glsnake.c | 2694 +
hacks/glx/glsnake.man | 98 +
hacks/glx/gltext.c | 660 +
hacks/glx/gltext.man | 152 +
hacks/glx/gltrackball.c | 337 +
hacks/glx/gltrackball.h | 72 +
hacks/glx/glut_mroman.h | 2456 +
hacks/glx/glut_roman.h | 2455 +
hacks/glx/glut_stroke.c | 66 +
hacks/glx/glut_swidth.c | 77 +
hacks/glx/glutstroke.h | 47 +
hacks/glx/grab-ximage.c | 813 +
hacks/glx/grab-ximage.h | 76 +
hacks/glx/hexstrut.c | 509 +
hacks/glx/hexstrut.man | 77 +
hacks/glx/hilbert.c | 1144 +
hacks/glx/hilbert.man | 103 +
hacks/glx/hydrostat.c | 809 +
hacks/glx/hydrostat.man | 103 +
hacks/glx/hypertorus.c | 1016 +
hacks/glx/hypertorus.man | 188 +
hacks/glx/hypnowheel.c | 322 +
hacks/glx/hypnowheel.man | 80 +
hacks/glx/involute.c | 998 +
hacks/glx/involute.h | 78 +
hacks/glx/jigglypuff.c | 1076 +
hacks/glx/jigglypuff.man | 121 +
hacks/glx/jigsaw.c | 1509 +
hacks/glx/jigsaw.man | 90 +
hacks/glx/juggler3d.c | 3022 +
hacks/glx/juggler3d.man | 183 +
hacks/glx/kaleidocycle.c | 574 +
hacks/glx/kaleidocycle.man | 96 +
hacks/glx/klein.c | 2099 +
hacks/glx/klein.man | 308 +
hacks/glx/lament.c | 1786 +
hacks/glx/lament.dxf | 163404 ++++++++++++++++++++++++++++
hacks/glx/lament.man | 68 +
hacks/glx/lament_model.c | 16258 +++
hacks/glx/lavalite.c | 1539 +
hacks/glx/lavalite.man | 160 +
hacks/glx/lockward.c | 970 +
hacks/glx/lockward.man | 79 +
hacks/glx/marching.c | 645 +
hacks/glx/marching.h | 48 +
hacks/glx/maze3d.c | 1955 +
hacks/glx/maze3d.man | 116 +
hacks/glx/menger.c | 562 +
hacks/glx/menger.man | 78 +
hacks/glx/mirrorblob.c | 1841 +
hacks/glx/mirrorblob.man | 107 +
hacks/glx/moebius.c | 788 +
hacks/glx/moebius.man | 65 +
hacks/glx/moebiusgears.c | 437 +
hacks/glx/moebiusgears.man | 86 +
hacks/glx/molecule.c | 1682 +
hacks/glx/molecule.man | 160 +
hacks/glx/molecules.sh | 23 +
hacks/glx/morph3d.c | 837 +
hacks/glx/morph3d.man | 57 +
hacks/glx/noof.c | 519 +
hacks/glx/noof.man | 52 +
hacks/glx/normals.c | 52 +
hacks/glx/normals.h | 48 +
hacks/glx/peepers.c | 1455 +
hacks/glx/peepers.man | 80 +
hacks/glx/photopile.c | 833 +
hacks/glx/photopile.man | 113 +
hacks/glx/pinion.c | 1470 +
hacks/glx/pinion.man | 82 +
hacks/glx/pipeobjs.c | 3262 +
hacks/glx/pipes.c | 1220 +
hacks/glx/pipes.man | 85 +
hacks/glx/polyhedra-gl.c | 683 +
hacks/glx/polyhedra.c | 2457 +
hacks/glx/polyhedra.h | 52 +
hacks/glx/polyhedra.man | 124 +
hacks/glx/polytopes.c | 3189 +
hacks/glx/polytopes.man | 207 +
hacks/glx/projectiveplane.c | 1550 +
hacks/glx/projectiveplane.man | 400 +
hacks/glx/providence.c | 799 +
hacks/glx/providence.man | 66 +
hacks/glx/pulsar.c | 515 +
hacks/glx/pulsar.man | 102 +
hacks/glx/quasicrystal.c | 478 +
hacks/glx/quasicrystal.man | 83 +
hacks/glx/queens.c | 610 +
hacks/glx/queens.man | 66 +
hacks/glx/quickhull.c | 1368 +
hacks/glx/quickhull.h | 56 +
hacks/glx/raverhoop.c | 767 +
hacks/glx/raverhoop.man | 83 +
hacks/glx/razzledazzle.c | 725 +
hacks/glx/razzledazzle.man | 76 +
hacks/glx/robot-wireframe.c | 154 +
hacks/glx/robot-wireframe.dxf | 1160 +
hacks/glx/robot.c | 18539 ++++
hacks/glx/robot.dxf | 185616 ++++++++++++++++++++++++++++++++
hacks/glx/romanboy.c | 1552 +
hacks/glx/romanboy.man | 390 +
hacks/glx/rotator.c | 274 +
hacks/glx/rotator.h | 60 +
hacks/glx/rubik.c | 2140 +
hacks/glx/rubik.man | 69 +
hacks/glx/rubikblocks.c | 633 +
hacks/glx/rubikblocks.man | 117 +
hacks/glx/s1_1.c | 1733 +
hacks/glx/s1_2.c | 1733 +
hacks/glx/s1_3.c | 1733 +
hacks/glx/s1_4.c | 1733 +
hacks/glx/s1_5.c | 1733 +
hacks/glx/s1_6.c | 1733 +
hacks/glx/s1_b.c | 505 +
hacks/glx/sballs.c | 823 +
hacks/glx/sballs.man | 125 +
hacks/glx/seccam.c | 1388 +
hacks/glx/seccam.dxf | 13606 +++
hacks/glx/shark.c | 1395 +
hacks/glx/ships.c | 4976 +
hacks/glx/ships.dxf | 49148 +++++++++
hacks/glx/sierpinski3d.c | 581 +
hacks/glx/sierpinski3d.man | 67 +
hacks/glx/skytentacles.c | 1103 +
hacks/glx/skytentacles.man | 102 +
hacks/glx/sonar-icmp.c | 1703 +
hacks/glx/sonar-sim.c | 112 +
hacks/glx/sonar.c | 1258 +
hacks/glx/sonar.h | 71 +
hacks/glx/sonar.man | 169 +
hacks/glx/sphere.c | 155 +
hacks/glx/sphere.h | 24 +
hacks/glx/spheremonics.c | 882 +
hacks/glx/spheremonics.man | 92 +
hacks/glx/splitflap.c | 1408 +
hacks/glx/splitflap.dxf | 1658 +
hacks/glx/splitflap.man | 98 +
hacks/glx/splitflap_obj.c | 200 +
hacks/glx/splodesic.c | 640 +
hacks/glx/splodesic.man | 69 +
hacks/glx/sproingies.c | 906 +
hacks/glx/sproingies.h | 43 +
hacks/glx/sproingies.man | 68 +
hacks/glx/sproingiewrap.c | 231 +
hacks/glx/stairs.c | 589 +
hacks/glx/stairs.man | 56 +
hacks/glx/starwars.c | 1075 +
hacks/glx/starwars.h | 363 +
hacks/glx/starwars.man | 181 +
hacks/glx/starwars.txt | 415 +
hacks/glx/stonerview-move.c | 147 +
hacks/glx/stonerview-move.h | 32 +
hacks/glx/stonerview-osc.c | 341 +
hacks/glx/stonerview-osc.h | 175 +
hacks/glx/stonerview-view.c | 134 +
hacks/glx/stonerview.c | 154 +
hacks/glx/stonerview.h | 59 +
hacks/glx/stonerview.man | 53 +
hacks/glx/superquadrics.c | 807 +
hacks/glx/superquadrics.man | 70 +
hacks/glx/surfaces.c | 648 +
hacks/glx/surfaces.man | 127 +
hacks/glx/swim.c | 232 +
hacks/glx/tangram.c | 1067 +
hacks/glx/tangram.man | 67 +
hacks/glx/tangram_shapes.c | 240 +
hacks/glx/tangram_shapes.h | 15 +
hacks/glx/teapot.c | 285 +
hacks/glx/teapot.h | 7 +
hacks/glx/teapot2.h | 6330 ++
hacks/glx/texfont.c | 961 +
hacks/glx/texfont.h | 72 +
hacks/glx/timetunnel.c | 1240 +
hacks/glx/timetunnel.man | 105 +
hacks/glx/toast.c | 190 +
hacks/glx/toast.dxf | 1814 +
hacks/glx/toast2.c | 214 +
hacks/glx/toast2.dxf | 2054 +
hacks/glx/toaster.c | 376 +
hacks/glx/toaster.dxf | 3674 +
hacks/glx/toaster_base.c | 130 +
hacks/glx/toaster_base.dxf | 1214 +
hacks/glx/toaster_handle.c | 64 +
hacks/glx/toaster_handle.dxf | 554 +
hacks/glx/toaster_handle2.c | 40 +
hacks/glx/toaster_handle2.dxf | 314 +
hacks/glx/toaster_jet.c | 178 +
hacks/glx/toaster_jet.dxf | 1694 +
hacks/glx/toaster_knob.c | 76 +
hacks/glx/toaster_knob.dxf | 674 +
hacks/glx/toaster_slots.c | 106 +
hacks/glx/toaster_slots.dxf | 974 +
hacks/glx/toaster_wing.c | 43 +
hacks/glx/toaster_wing.dxf | 344 +
hacks/glx/topblock.c | 883 +
hacks/glx/topblock.h | 45 +
hacks/glx/topblock.man | 170 +
hacks/glx/trackball.c | 331 +
hacks/glx/trackball.h | 82 +
hacks/glx/tronbit.c | 536 +
hacks/glx/tronbit.man | 79 +
hacks/glx/tronbit_idle1.c | 247 +
hacks/glx/tronbit_idle2.c | 175 +
hacks/glx/tronbit_no.c | 1087 +
hacks/glx/tronbit_yes.c | 31 +
hacks/glx/tube.c | 403 +
hacks/glx/tube.h | 32 +
hacks/glx/tunnel_draw.c | 512 +
hacks/glx/tunnel_draw.h | 11 +
hacks/glx/unicrud.c | 961 +
hacks/glx/unicrud.man | 74 +
hacks/glx/unknownpleasures.c | 486 +
hacks/glx/unknownpleasures.man | 74 +
hacks/glx/vigilance.c | 1150 +
hacks/glx/vigilance.man | 57 +
hacks/glx/voronoi.c | 543 +
hacks/glx/voronoi.man | 88 +
hacks/glx/vrml2gl.pl | 361 +
hacks/glx/wfront2gl.pl | 361 +
hacks/glx/whale.c | 1887 +
hacks/glx/winduprobot.c | 2483 +
hacks/glx/winduprobot.man | 85 +
hacks/glx/xlock-gl-utils.c | 230 +
hacks/glx/xscreensaver-gl-helper.c | 74 +
hacks/glx/xscreensaver-gl-helper.man | 33 +
hacks/glx/zalgo.txt | 30 +
383 files changed, 693076 insertions(+)
create mode 100644 hacks/glx/Makefile.in
create mode 100644 hacks/glx/README
create mode 100644 hacks/glx/antinspect.c
create mode 100644 hacks/glx/antinspect.man
create mode 100644 hacks/glx/antmaze.c
create mode 100644 hacks/glx/antmaze.man
create mode 100644 hacks/glx/ants.h
create mode 100644 hacks/glx/antspotlight.c
create mode 100644 hacks/glx/antspotlight.man
create mode 100644 hacks/glx/atlantis.c
create mode 100644 hacks/glx/atlantis.h
create mode 100644 hacks/glx/atlantis.man
create mode 100644 hacks/glx/atunnel.c
create mode 100644 hacks/glx/atunnel.man
create mode 100644 hacks/glx/b_draw.c
create mode 100644 hacks/glx/b_lockglue.c
create mode 100644 hacks/glx/b_sphere.c
create mode 100644 hacks/glx/blinkbox.c
create mode 100644 hacks/glx/blinkbox.man
create mode 100644 hacks/glx/blocktube.c
create mode 100644 hacks/glx/blocktube.man
create mode 100644 hacks/glx/boing.c
create mode 100644 hacks/glx/boing.man
create mode 100644 hacks/glx/bouncingcow.c
create mode 100644 hacks/glx/bouncingcow.man
create mode 100644 hacks/glx/boxed.c
create mode 100644 hacks/glx/boxed.h
create mode 100644 hacks/glx/boxed.man
create mode 100644 hacks/glx/bubble3d.c
create mode 100644 hacks/glx/bubble3d.h
create mode 100644 hacks/glx/bubble3d.man
create mode 100644 hacks/glx/buildlwo.c
create mode 100644 hacks/glx/buildlwo.h
create mode 100644 hacks/glx/cage.c
create mode 100644 hacks/glx/cage.man
create mode 100644 hacks/glx/carousel.c
create mode 100644 hacks/glx/carousel.man
create mode 100644 hacks/glx/chessgames.h
create mode 100644 hacks/glx/chessmodels.c
create mode 100644 hacks/glx/chessmodels.h
create mode 100644 hacks/glx/circuit.c
create mode 100644 hacks/glx/circuit.man
create mode 100644 hacks/glx/cityflow.c
create mode 100644 hacks/glx/cityflow.man
create mode 100644 hacks/glx/companion.c
create mode 100644 hacks/glx/companion_disc.c
create mode 100644 hacks/glx/companion_heart.c
create mode 100644 hacks/glx/companion_quad.c
create mode 100644 hacks/glx/companioncube.man
create mode 100644 hacks/glx/cow_face.c
create mode 100644 hacks/glx/cow_hide.c
create mode 100644 hacks/glx/cow_hoofs.c
create mode 100644 hacks/glx/cow_horns.c
create mode 100644 hacks/glx/cow_tail.c
create mode 100644 hacks/glx/cow_udder.c
create mode 100644 hacks/glx/crackberg.c
create mode 100644 hacks/glx/crackberg.man
create mode 100644 hacks/glx/crumbler.c
create mode 100644 hacks/glx/crumbler.man
create mode 100644 hacks/glx/cube21.c
create mode 100644 hacks/glx/cube21.man
create mode 100644 hacks/glx/cubenetic.c
create mode 100644 hacks/glx/cubenetic.man
create mode 100644 hacks/glx/cubestack.c
create mode 100644 hacks/glx/cubestack.man
create mode 100644 hacks/glx/cubestorm.c
create mode 100644 hacks/glx/cubestorm.man
create mode 100644 hacks/glx/cubetwist.c
create mode 100644 hacks/glx/cubetwist.man
create mode 100644 hacks/glx/cubicgrid.c
create mode 100644 hacks/glx/cubicgrid.man
create mode 100644 hacks/glx/curlicue.h
create mode 100644 hacks/glx/dangerball.c
create mode 100644 hacks/glx/dangerball.man
create mode 100644 hacks/glx/discoball.c
create mode 100644 hacks/glx/discoball.man
create mode 100644 hacks/glx/dnalogo.c
create mode 100644 hacks/glx/dnapizza.h
create mode 100644 hacks/glx/dolphin.c
create mode 100644 hacks/glx/dropshadow.c
create mode 100644 hacks/glx/dropshadow.h
create mode 100755 hacks/glx/dxf2gl.pl
create mode 100644 hacks/glx/dymaxionmap-coords.c
create mode 100644 hacks/glx/dymaxionmap-coords.h
create mode 100644 hacks/glx/dymaxionmap.c
create mode 100644 hacks/glx/dymaxionmap.man
create mode 100644 hacks/glx/e_textures.h
create mode 100644 hacks/glx/endgame.c
create mode 100644 hacks/glx/endgame.man
create mode 100644 hacks/glx/energystream.c
create mode 100644 hacks/glx/energystream.man
create mode 100644 hacks/glx/engine.c
create mode 100644 hacks/glx/engine.man
create mode 100644 hacks/glx/erase-gl.c
create mode 100644 hacks/glx/esper.c
create mode 100644 hacks/glx/esper.man
create mode 100644 hacks/glx/extrusion-helix2.c
create mode 100644 hacks/glx/extrusion-helix3.c
create mode 100644 hacks/glx/extrusion-helix4.c
create mode 100644 hacks/glx/extrusion-joinoffset.c
create mode 100644 hacks/glx/extrusion-screw.c
create mode 100644 hacks/glx/extrusion-taper.c
create mode 100644 hacks/glx/extrusion-twistoid.c
create mode 100644 hacks/glx/extrusion.c
create mode 100644 hacks/glx/extrusion.h
create mode 100644 hacks/glx/extrusion.man
create mode 100644 hacks/glx/flipflop.c
create mode 100644 hacks/glx/flipflop.man
create mode 100644 hacks/glx/flipscreen3d.c
create mode 100644 hacks/glx/flipscreen3d.man
create mode 100644 hacks/glx/fliptext.c
create mode 100644 hacks/glx/fliptext.man
create mode 100644 hacks/glx/flurry-smoke.c
create mode 100644 hacks/glx/flurry-spark.c
create mode 100644 hacks/glx/flurry-star.c
create mode 100644 hacks/glx/flurry-texture.c
create mode 100644 hacks/glx/flurry.c
create mode 100644 hacks/glx/flurry.h
create mode 100644 hacks/glx/flurry.man
create mode 100644 hacks/glx/flyingtoasters.c
create mode 100644 hacks/glx/flyingtoasters.man
create mode 100644 hacks/glx/fps-gl.c
create mode 100644 hacks/glx/gears.c
create mode 100644 hacks/glx/gears.man
create mode 100644 hacks/glx/geodesic.c
create mode 100644 hacks/glx/geodesic.man
create mode 100644 hacks/glx/geodesicgears.c
create mode 100644 hacks/glx/geodesicgears.man
create mode 100644 hacks/glx/gflux.c
create mode 100644 hacks/glx/gflux.man
create mode 100644 hacks/glx/glblur.c
create mode 100644 hacks/glx/glblur.man
create mode 100644 hacks/glx/glcells.c
create mode 100644 hacks/glx/glcells.man
create mode 100644 hacks/glx/gleidescope.c
create mode 100644 hacks/glx/gleidescope.man
create mode 100644 hacks/glx/glforestfire.c
create mode 100644 hacks/glx/glforestfire.man
create mode 100644 hacks/glx/glhanoi.c
create mode 100644 hacks/glx/glhanoi.man
create mode 100644 hacks/glx/glknots.c
create mode 100644 hacks/glx/glknots.man
create mode 100644 hacks/glx/gllist.c
create mode 100644 hacks/glx/gllist.h
create mode 100644 hacks/glx/glmatrix.c
create mode 100644 hacks/glx/glmatrix.man
create mode 100644 hacks/glx/glplanet.c
create mode 100644 hacks/glx/glplanet.man
create mode 100644 hacks/glx/glschool.c
create mode 100644 hacks/glx/glschool.h
create mode 100644 hacks/glx/glschool.man
create mode 100644 hacks/glx/glschool_alg.c
create mode 100644 hacks/glx/glschool_alg.h
create mode 100644 hacks/glx/glschool_gl.c
create mode 100644 hacks/glx/glschool_gl.h
create mode 100644 hacks/glx/glslideshow.c
create mode 100644 hacks/glx/glslideshow.man
create mode 100644 hacks/glx/glsnake.c
create mode 100644 hacks/glx/glsnake.man
create mode 100644 hacks/glx/gltext.c
create mode 100644 hacks/glx/gltext.man
create mode 100644 hacks/glx/gltrackball.c
create mode 100644 hacks/glx/gltrackball.h
create mode 100644 hacks/glx/glut_mroman.h
create mode 100644 hacks/glx/glut_roman.h
create mode 100644 hacks/glx/glut_stroke.c
create mode 100644 hacks/glx/glut_swidth.c
create mode 100644 hacks/glx/glutstroke.h
create mode 100644 hacks/glx/grab-ximage.c
create mode 100644 hacks/glx/grab-ximage.h
create mode 100644 hacks/glx/hexstrut.c
create mode 100644 hacks/glx/hexstrut.man
create mode 100644 hacks/glx/hilbert.c
create mode 100644 hacks/glx/hilbert.man
create mode 100644 hacks/glx/hydrostat.c
create mode 100644 hacks/glx/hydrostat.man
create mode 100644 hacks/glx/hypertorus.c
create mode 100644 hacks/glx/hypertorus.man
create mode 100644 hacks/glx/hypnowheel.c
create mode 100644 hacks/glx/hypnowheel.man
create mode 100644 hacks/glx/involute.c
create mode 100644 hacks/glx/involute.h
create mode 100644 hacks/glx/jigglypuff.c
create mode 100644 hacks/glx/jigglypuff.man
create mode 100644 hacks/glx/jigsaw.c
create mode 100644 hacks/glx/jigsaw.man
create mode 100644 hacks/glx/juggler3d.c
create mode 100644 hacks/glx/juggler3d.man
create mode 100644 hacks/glx/kaleidocycle.c
create mode 100644 hacks/glx/kaleidocycle.man
create mode 100644 hacks/glx/klein.c
create mode 100644 hacks/glx/klein.man
create mode 100644 hacks/glx/lament.c
create mode 100644 hacks/glx/lament.dxf
create mode 100644 hacks/glx/lament.man
create mode 100644 hacks/glx/lament_model.c
create mode 100644 hacks/glx/lavalite.c
create mode 100644 hacks/glx/lavalite.man
create mode 100644 hacks/glx/lockward.c
create mode 100644 hacks/glx/lockward.man
create mode 100644 hacks/glx/marching.c
create mode 100644 hacks/glx/marching.h
create mode 100755 hacks/glx/maze3d.c
create mode 100755 hacks/glx/maze3d.man
create mode 100644 hacks/glx/menger.c
create mode 100644 hacks/glx/menger.man
create mode 100644 hacks/glx/mirrorblob.c
create mode 100644 hacks/glx/mirrorblob.man
create mode 100644 hacks/glx/moebius.c
create mode 100644 hacks/glx/moebius.man
create mode 100644 hacks/glx/moebiusgears.c
create mode 100644 hacks/glx/moebiusgears.man
create mode 100644 hacks/glx/molecule.c
create mode 100644 hacks/glx/molecule.man
create mode 100755 hacks/glx/molecules.sh
create mode 100644 hacks/glx/morph3d.c
create mode 100644 hacks/glx/morph3d.man
create mode 100644 hacks/glx/noof.c
create mode 100644 hacks/glx/noof.man
create mode 100644 hacks/glx/normals.c
create mode 100644 hacks/glx/normals.h
create mode 100644 hacks/glx/peepers.c
create mode 100644 hacks/glx/peepers.man
create mode 100644 hacks/glx/photopile.c
create mode 100644 hacks/glx/photopile.man
create mode 100644 hacks/glx/pinion.c
create mode 100644 hacks/glx/pinion.man
create mode 100644 hacks/glx/pipeobjs.c
create mode 100644 hacks/glx/pipes.c
create mode 100644 hacks/glx/pipes.man
create mode 100644 hacks/glx/polyhedra-gl.c
create mode 100644 hacks/glx/polyhedra.c
create mode 100644 hacks/glx/polyhedra.h
create mode 100644 hacks/glx/polyhedra.man
create mode 100644 hacks/glx/polytopes.c
create mode 100644 hacks/glx/polytopes.man
create mode 100644 hacks/glx/projectiveplane.c
create mode 100644 hacks/glx/projectiveplane.man
create mode 100644 hacks/glx/providence.c
create mode 100644 hacks/glx/providence.man
create mode 100644 hacks/glx/pulsar.c
create mode 100644 hacks/glx/pulsar.man
create mode 100644 hacks/glx/quasicrystal.c
create mode 100644 hacks/glx/quasicrystal.man
create mode 100644 hacks/glx/queens.c
create mode 100644 hacks/glx/queens.man
create mode 100644 hacks/glx/quickhull.c
create mode 100644 hacks/glx/quickhull.h
create mode 100644 hacks/glx/raverhoop.c
create mode 100644 hacks/glx/raverhoop.man
create mode 100644 hacks/glx/razzledazzle.c
create mode 100644 hacks/glx/razzledazzle.man
create mode 100644 hacks/glx/robot-wireframe.c
create mode 100644 hacks/glx/robot-wireframe.dxf
create mode 100644 hacks/glx/robot.c
create mode 100644 hacks/glx/robot.dxf
create mode 100644 hacks/glx/romanboy.c
create mode 100644 hacks/glx/romanboy.man
create mode 100644 hacks/glx/rotator.c
create mode 100644 hacks/glx/rotator.h
create mode 100644 hacks/glx/rubik.c
create mode 100644 hacks/glx/rubik.man
create mode 100644 hacks/glx/rubikblocks.c
create mode 100644 hacks/glx/rubikblocks.man
create mode 100644 hacks/glx/s1_1.c
create mode 100644 hacks/glx/s1_2.c
create mode 100644 hacks/glx/s1_3.c
create mode 100644 hacks/glx/s1_4.c
create mode 100644 hacks/glx/s1_5.c
create mode 100644 hacks/glx/s1_6.c
create mode 100644 hacks/glx/s1_b.c
create mode 100644 hacks/glx/sballs.c
create mode 100644 hacks/glx/sballs.man
create mode 100644 hacks/glx/seccam.c
create mode 100644 hacks/glx/seccam.dxf
create mode 100644 hacks/glx/shark.c
create mode 100644 hacks/glx/ships.c
create mode 100644 hacks/glx/ships.dxf
create mode 100644 hacks/glx/sierpinski3d.c
create mode 100644 hacks/glx/sierpinski3d.man
create mode 100644 hacks/glx/skytentacles.c
create mode 100644 hacks/glx/skytentacles.man
create mode 100644 hacks/glx/sonar-icmp.c
create mode 100644 hacks/glx/sonar-sim.c
create mode 100644 hacks/glx/sonar.c
create mode 100644 hacks/glx/sonar.h
create mode 100644 hacks/glx/sonar.man
create mode 100644 hacks/glx/sphere.c
create mode 100644 hacks/glx/sphere.h
create mode 100644 hacks/glx/spheremonics.c
create mode 100644 hacks/glx/spheremonics.man
create mode 100644 hacks/glx/splitflap.c
create mode 100644 hacks/glx/splitflap.dxf
create mode 100644 hacks/glx/splitflap.man
create mode 100644 hacks/glx/splitflap_obj.c
create mode 100644 hacks/glx/splodesic.c
create mode 100644 hacks/glx/splodesic.man
create mode 100644 hacks/glx/sproingies.c
create mode 100644 hacks/glx/sproingies.h
create mode 100644 hacks/glx/sproingies.man
create mode 100644 hacks/glx/sproingiewrap.c
create mode 100644 hacks/glx/stairs.c
create mode 100644 hacks/glx/stairs.man
create mode 100644 hacks/glx/starwars.c
create mode 100644 hacks/glx/starwars.h
create mode 100644 hacks/glx/starwars.man
create mode 100644 hacks/glx/starwars.txt
create mode 100644 hacks/glx/stonerview-move.c
create mode 100644 hacks/glx/stonerview-move.h
create mode 100644 hacks/glx/stonerview-osc.c
create mode 100644 hacks/glx/stonerview-osc.h
create mode 100644 hacks/glx/stonerview-view.c
create mode 100644 hacks/glx/stonerview.c
create mode 100644 hacks/glx/stonerview.h
create mode 100644 hacks/glx/stonerview.man
create mode 100644 hacks/glx/superquadrics.c
create mode 100644 hacks/glx/superquadrics.man
create mode 100644 hacks/glx/surfaces.c
create mode 100644 hacks/glx/surfaces.man
create mode 100644 hacks/glx/swim.c
create mode 100644 hacks/glx/tangram.c
create mode 100644 hacks/glx/tangram.man
create mode 100644 hacks/glx/tangram_shapes.c
create mode 100644 hacks/glx/tangram_shapes.h
create mode 100644 hacks/glx/teapot.c
create mode 100644 hacks/glx/teapot.h
create mode 100644 hacks/glx/teapot2.h
create mode 100644 hacks/glx/texfont.c
create mode 100644 hacks/glx/texfont.h
create mode 100644 hacks/glx/timetunnel.c
create mode 100644 hacks/glx/timetunnel.man
create mode 100644 hacks/glx/toast.c
create mode 100644 hacks/glx/toast.dxf
create mode 100644 hacks/glx/toast2.c
create mode 100644 hacks/glx/toast2.dxf
create mode 100644 hacks/glx/toaster.c
create mode 100644 hacks/glx/toaster.dxf
create mode 100644 hacks/glx/toaster_base.c
create mode 100644 hacks/glx/toaster_base.dxf
create mode 100644 hacks/glx/toaster_handle.c
create mode 100644 hacks/glx/toaster_handle.dxf
create mode 100644 hacks/glx/toaster_handle2.c
create mode 100644 hacks/glx/toaster_handle2.dxf
create mode 100644 hacks/glx/toaster_jet.c
create mode 100644 hacks/glx/toaster_jet.dxf
create mode 100644 hacks/glx/toaster_knob.c
create mode 100644 hacks/glx/toaster_knob.dxf
create mode 100644 hacks/glx/toaster_slots.c
create mode 100644 hacks/glx/toaster_slots.dxf
create mode 100644 hacks/glx/toaster_wing.c
create mode 100644 hacks/glx/toaster_wing.dxf
create mode 100644 hacks/glx/topblock.c
create mode 100644 hacks/glx/topblock.h
create mode 100644 hacks/glx/topblock.man
create mode 100644 hacks/glx/trackball.c
create mode 100644 hacks/glx/trackball.h
create mode 100644 hacks/glx/tronbit.c
create mode 100644 hacks/glx/tronbit.man
create mode 100644 hacks/glx/tronbit_idle1.c
create mode 100644 hacks/glx/tronbit_idle2.c
create mode 100644 hacks/glx/tronbit_no.c
create mode 100644 hacks/glx/tronbit_yes.c
create mode 100644 hacks/glx/tube.c
create mode 100644 hacks/glx/tube.h
create mode 100644 hacks/glx/tunnel_draw.c
create mode 100644 hacks/glx/tunnel_draw.h
create mode 100644 hacks/glx/unicrud.c
create mode 100644 hacks/glx/unicrud.man
create mode 100644 hacks/glx/unknownpleasures.c
create mode 100644 hacks/glx/unknownpleasures.man
create mode 100644 hacks/glx/vigilance.c
create mode 100644 hacks/glx/vigilance.man
create mode 100644 hacks/glx/voronoi.c
create mode 100644 hacks/glx/voronoi.man
create mode 100755 hacks/glx/vrml2gl.pl
create mode 100755 hacks/glx/wfront2gl.pl
create mode 100644 hacks/glx/whale.c
create mode 100644 hacks/glx/winduprobot.c
create mode 100644 hacks/glx/winduprobot.man
create mode 100644 hacks/glx/xlock-gl-utils.c
create mode 100644 hacks/glx/xscreensaver-gl-helper.c
create mode 100644 hacks/glx/xscreensaver-gl-helper.man
create mode 100644 hacks/glx/zalgo.txt
(limited to 'hacks/glx')
diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in
new file mode 100644
index 0000000..e3fa617
--- /dev/null
+++ b/hacks/glx/Makefile.in
@@ -0,0 +1,3473 @@
+# hacks/glx/Makefile.in --- xscreensaver, Copyright (c) 1999-2018
+# by Jamie Zawinski.
+# the `../../configure' script generates `hacks/glx/Makefile' from this file.
+
+@SET_MAKE@
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = ..
+
+install_prefix =
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+mandir = @mandir@
+libexecdir = @libexecdir@
+mansuffix = 6
+manNdir = $(mandir)/man$(mansuffix)
+
+HACKDIR = @HACKDIR@
+HACK_CONF_DIR = @HACK_CONF_DIR@
+
+CC = @CC@
+CFLAGS = @CFLAGS@
+LDFLAGS = @LDFLAGS@
+DEFS = -DSTANDALONE -DUSE_GL @DEFS@
+LIBS = @LIBS@
+PERL = @PERL@
+
+DEPEND = @DEPEND@
+DEPEND_FLAGS = @DEPEND_FLAGS@
+DEPEND_DEFINES = @DEPEND_DEFINES@
+
+SHELL = /bin/sh
+INSTALL = @INSTALL@
+SUID_FLAGS = -o root -m 4755
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SETUID = @INSTALL_SETUID@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_DIRS = @INSTALL_DIRS@
+
+X_CFLAGS = @X_CFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+XMU_LIBS = @XMU_LIBS@
+XFT_LIBS = @XFT_LIBS@
+
+# Note: see comment in ../../driver/Makefile.in for explanation of X_LIBS, etc.
+#
+HACK_PRE = $(LIBS) $(X_LIBS)
+HACK_POST = $(X_PRE_LIBS) $(XFT_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm
+HACK_POST2 = @GL_LIBS@ @HACK_LIBS@ $(HACK_POST)
+HACK_LIBS = $(HACK_PRE) @ANIM_LIBS@ $(HACK_POST2)
+PNG_LIBS = $(HACK_PRE) @PNG_LIBS@ $(HACK_POST2)
+GLE_LIBS = $(HACK_PRE) @GLE_LIBS@ @PNG_LIBS@ $(HACK_POST2)
+TEXT_LIBS = @PTY_LIBS@
+
+HACK_SRC = $(srcdir)/..
+HACK_BIN = ..
+UTILS_SRC = $(HACK_SRC)/../utils
+JWXYZ_SRC = $(HACK_SRC)/../jwxyz
+UTILS_BIN = $(HACK_BIN)/../utils
+JWXYZ_BIN = $(HACK_BIN)/../jwxyz
+
+INCLUDES_1 = -I. -I$(srcdir) -I$(UTILS_SRC) -I$(JWXYZ_SRC) -I$(HACK_SRC) -I$(HACK_BIN) -I../..
+INCLUDES = $(INCLUDES_1) @INCLUDES@
+
+UTILDIR_OBJS = $(UTILS_BIN)/colors.o $(UTILS_BIN)/grabclient.o \
+ $(UTILS_BIN)/hsv.o $(UTILS_BIN)/resources.o \
+ $(UTILS_BIN)/usleep.o $(UTILS_BIN)/visual.o \
+ $(UTILS_BIN)/xmu.o $(UTILS_BIN)/xft.o \
+ $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/logo.o \
+ $(UTILS_BIN)/visual-gl.o \
+ $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/xshm.o \
+ $(UTILS_BIN)/textclient.o $(UTILS_BIN)/async_netdb.o \
+ $(UTILS_BIN)/aligned_malloc.o $(UTILS_BIN)/thread_util.o \
+ $(UTILS_BIN)/spline.o $(UTILS_BIN)/pow2.o \
+ $(UTILS_SRC)/font-retry.c
+JWXYZ_OBJS = $(JWXYZ_BIN)/jwzgles.o
+HACKDIR_OBJS = $(HACK_BIN)/screenhack.o $(HACK_BIN)/xlockmore.o \
+ $(HACK_BIN)/fps.o $(HACK_BIN)/ximage-loader.o
+PNG = $(HACK_BIN)/ximage-loader.o
+
+SRCS = xscreensaver-gl-helper.c normals.c erase-gl.c fps-gl.c \
+ atlantis.c b_draw.c b_lockglue.c b_sphere.c bubble3d.c \
+ buildlwo.c cage.c dolphin.c gears.c lament.c lament_model.c \
+ moebius.c morph3d.c pipeobjs.c pipes.c rubik.c s1_1.c s1_2.c \
+ s1_3.c s1_4.c s1_5.c s1_6.c s1_b.c shark.c sproingies.c \
+ sproingiewrap.c stairs.c superquadrics.c swim.c whale.c \
+ xlock-gl-utils.c glplanet.c pulsar.c \
+ extrusion.c extrusion-helix2.c extrusion-helix3.c \
+ extrusion-helix4.c extrusion-joinoffset.c extrusion-screw.c \
+ extrusion-taper.c extrusion-twistoid.c sierpinski3d.c \
+ gflux.c stonerview.c stonerview-move.c stonerview-osc.c \
+ stonerview-view.c starwars.c glut_stroke.c glut_swidth.c \
+ gltext.c molecule.c dangerball.c sphere.c tube.c circuit.c \
+ menger.c engine.c flipscreen3d.c dnalogo.c \
+ grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c \
+ cubenetic.c spheremonics.c marching.c lavalite.c rotator.c \
+ trackball.c gltrackball.c queens.c endgame.c chessmodels.c \
+ glblur.c gllist.c flurry.c flurry-smoke.c flurry-spark.c \
+ flurry-star.c flurry-texture.c atunnel.c tunnel_draw.c \
+ flyingtoasters.c toaster.c toaster_base.c toaster_handle.c \
+ toaster_handle2.c toaster_jet.c toaster_knob.c \
+ toaster_slots.c toaster_wing.c toast.c toast2.c \
+ bouncingcow.c cow_face.c cow_hide.c cow_hoofs.c cow_horns.c \
+ cow_tail.c cow_udder.c glslideshow.c jigglypuff.c klein.c \
+ hypertorus.c glmatrix.c cubestorm.c glknots.c blocktube.c \
+ flipflop.c antspotlight.c polytopes.c gleidescope.c \
+ mirrorblob.c blinkbox.c noof.c polyhedra.c polyhedra-gl.c \
+ antinspect.c providence.c pinion.c involute.c boing.c \
+ texfont.c carousel.c fliptext.c antmaze.c tangram.c \
+ tangram_shapes.c crackberg.c glhanoi.c cube21.c \
+ timetunnel.c juggler3d.c topblock.c glschool.c \
+ glschool_gl.c glschool_alg.c glcells.c voronoi.c \
+ moebiusgears.c lockward.c cubicgrid.c hypnowheel.c \
+ skytentacles.c teapot.c sonar.c sonar-sim.c sonar-icmp.c \
+ jigsaw.c photopile.c dropshadow.c rubikblocks.c surfaces.c \
+ hilbert.c companion.c companion_quad.c companion_disc.c \
+ companion_heart.c tronbit.c tronbit_idle1.c tronbit_idle2.c \
+ tronbit_no.c tronbit_yes.c kaleidocycle.c \
+ quasicrystal.c unknownpleasures.c geodesic.c geodesicgears.c \
+ projectiveplane.c winduprobot.c robot.c robot-wireframe.c \
+ cityflow.c romanboy.c splitflap.c splitflap_obj.c \
+ dymaxionmap.c dymaxionmap-coords.c unicrud.c energystream.c \
+ raverhoop.c hydrostat.c discoball.c cubetwist.c cubestack.c \
+ splodesic.c hexstrut.c vigilance.c seccam.c esper.c \
+ razzledazzle.c ships.c peepers.c crumbler.c quickhull.c \
+ maze3d.c
+
+OBJS = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \
+ atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
+ buildlwo.o cage.o dolphin.o gears.o lament.o lament_model.o \
+ moebius.o morph3d.o pipeobjs.o pipes.o rubik.o s1_1.o s1_2.o \
+ s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o shark.o sproingies.o \
+ sproingiewrap.o stairs.o superquadrics.o swim.o whale.o \
+ xlock-gl-utils.o glplanet.o pulsar.o \
+ extrusion.o extrusion-helix2.o extrusion-helix3.o \
+ extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
+ extrusion-taper.o extrusion-twistoid.o sierpinski3d.o \
+ gflux.o stonerview.o stonerview-move.o stonerview-osc.o \
+ stonerview-view.o starwars.o glut_stroke.o glut_swidth.o \
+ gltext.o molecule.o dangerball.o sphere.o tube.o circuit.o \
+ menger.o engine.o flipscreen3d.o dnalogo.o \
+ grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o \
+ cubenetic.o spheremonics.o marching.o lavalite.o rotator.o \
+ trackball.o gltrackball.o queens.o endgame.o chessmodels.o \
+ glblur.o gllist.o flurry.o flurry-smoke.o flurry-spark.o \
+ flurry-star.o flurry-texture.o atunnel.o tunnel_draw.o \
+ flyingtoasters.o toaster.o toaster_base.o toaster_handle.o \
+ toaster_handle2.o toaster_jet.o toaster_knob.o \
+ toaster_slots.o toaster_wing.o toast.o toast2.o \
+ bouncingcow.o cow_face.o cow_hide.o cow_hoofs.o cow_horns.o \
+ cow_tail.o cow_udder.o glslideshow.o jigglypuff.o klein.o \
+ hypertorus.o glmatrix.o cubestorm.o glknots.o blocktube.o \
+ flipflop.o antspotlight.o polytopes.o gleidescope.o \
+ mirrorblob.o blinkbox.o noof.o polyhedra.o polyhedra-gl.o \
+ antinspect.o providence.o pinion.o involute.o boing.o \
+ texfont.o carousel.o fliptext.o antmaze.o tangram.o \
+ tangram_shapes.o crackberg.o glhanoi.o cube21.o \
+ timetunnel.o juggler3d.o topblock.o glschool.o \
+ glschool_gl.o glschool_alg.o glcells.o voronoi.o \
+ moebiusgears.o lockward.o cubicgrid.o hypnowheel.o \
+ skytentacles.o teapot.o sonar.o sonar-sim.o sonar-icmp.o \
+ jigsaw.o photopile.o dropshadow.o rubikblocks.o surfaces.o \
+ hilbert.o companion.o companion_quad.o companion_disc.o \
+ companion_heart.o tronbit.o tronbit_idle1.o tronbit_idle2.o \
+ tronbit_no.o tronbit_yes.o kaleidocycle.o \
+ quasicrystal.o unknownpleasures.o geodesic.o geodesicgears.o \
+ projectiveplane.o winduprobot.o robot.o robot-wireframe.o \
+ cityflow.o romanboy.o splitflap.o splitflap_obj.o \
+ dymaxionmap.o dymaxionmap-coords.o unicrud.o energystream.o \
+ raverhoop.o hydrostat.o discoball.o cubetwist.o cubestack.o \
+ splodesic.o hexstrut.o vigilance.o seccam.o esper.o \
+ razzledazzle.o ships.o peepers.o crumbler.o quickhull.o \
+ maze3d.o
+
+GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \
+ morph3d rubik atlantis lament bubble3d glplanet pulsar \
+ sierpinski3d gflux stonerview starwars gltext molecule \
+ dangerball circuit menger engine flipscreen3d glsnake boxed \
+ sballs cubenetic spheremonics lavalite queens \
+ endgame glblur flurry atunnel flyingtoasters bouncingcow \
+ glslideshow jigglypuff klein hypertorus glmatrix cubestorm \
+ glknots blocktube flipflop antspotlight polytopes \
+ gleidescope mirrorblob blinkbox noof polyhedra \
+ antinspect providence pinion boing carousel fliptext \
+ antmaze tangram crackberg glhanoi cube21 timetunnel \
+ juggler3d topblock glschool glcells voronoi moebiusgears \
+ lockward cubicgrid hypnowheel skytentacles jigsaw photopile \
+ rubikblocks surfaces hilbert companioncube tronbit \
+ kaleidocycle quasicrystal unknownpleasures geodesic \
+ geodesicgears projectiveplane winduprobot cityflow romanboy \
+ splitflap dymaxionmap unicrud energystream raverhoop \
+ hydrostat discoball cubetwist cubestack splodesic \
+ hexstrut vigilance esper razzledazzle peepers crumbler \
+ maze3d
+GLE_EXES = extrusion
+SUID_EXES = sonar
+GL_UTIL_EXES = xscreensaver-gl-helper
+JWZGLES_OBJS = @JWZGLES_OBJS@
+HACK_EXES_1 = @GL_EXES@ @GLE_EXES@
+HACK_EXES = $(HACK_EXES_1) @SUID_EXES@
+XSHM_OBJS = $(UTILS_BIN)/xshm.o
+GRAB_OBJS = $(UTILS_BIN)/grabclient.o grab-ximage.o $(XSHM_OBJS)
+ANIM_OBJS = recanim-gl.o
+ANIM_LIBS = @PNG_LIBS@
+EXES = @GL_UTIL_EXES@ $(HACK_EXES)
+
+RETIRED_EXES = @RETIRED_GL_EXES@
+RETIRED_GL_EXES = glforestfire
+
+FPS_OBJS = texfont.o $(HACK_BIN)/fps.o fps-gl.o @XFT_OBJS@
+HACK_OBJS = $(JWZGLES_OBJS) $(HACK_BIN)/screenhack.o @ANIM_OBJS@ \
+ $(HACK_BIN)/xlockmore.o xlock-gl-utils.o erase-gl.o \
+ ${FPS_OBJS} $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
+ $(UTILS_BIN)/visual-gl.o $(UTILS_BIN)/usleep.o \
+ $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/hsv.o \
+ $(UTILS_BIN)/colors.o $(UTILS_BIN)/async_netdb.o \
+ $(UTILS_BIN)/aligned_malloc.o $(UTILS_BIN)/thread_util.o \
+ $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/pow2.o \
+ $(UTILS_BIN)/font-retry-xft.o
+
+HDRS = atlantis.h bubble3d.h buildlwo.h e_textures.h \
+ grab-ximage.h tube.h sphere.h boxed.h \
+ stonerview.h stonerview-move.h stonerview-osc.h \
+ glutstroke.h glut_roman.h glut_mroman.h marching.h \
+ rotator.h trackball.h gltrackball.h chessmodels.h \
+ chessgames.h gllist.h flurry.h tunnel_draw.h ants.h \
+ polyhedra.h normals.h texfont.h tangram_shapes.h \
+ sproingies.h extrusion.h glschool.h glschool_gl.h \
+ glschool_alg.h topblock.h involute.h teapot.h sonar.h \
+ dropshadow.h starwars.h teapot2.h dnapizza.h curlicue.h \
+ quickhull.h dymaxionmap-coords.h
+GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
+ cubenetic.man dangerball.man engine.man extrusion.man \
+ flipscreen3d.man gears.man gflux.man \
+ glplanet.man glsnake.man gltext.man lament.man lavalite.man \
+ menger.man moebius.man molecule.man morph3d.man pipes.man \
+ pulsar.man queens.man rubik.man sballs.man sierpinski3d.man \
+ spheremonics.man sproingies.man stairs.man starwars.man \
+ stonerview.man superquadrics.man xscreensaver-gl-helper.man \
+ endgame.man flurry.man glblur.man atunnel.man \
+ flyingtoasters.man bouncingcow.man glslideshow.man \
+ jigglypuff.man klein.man hypertorus.man glmatrix.man \
+ cubestorm.man glknots.man blocktube.man flipflop.man \
+ antspotlight.man polytopes.man gleidescope.man \
+ mirrorblob.man blinkbox.man noof.man polyhedra.man \
+ antinspect.man providence.man pinion.man boing.man \
+ carousel.man fliptext.man antmaze.man tangram.man \
+ crackberg.man glhanoi.man cube21.man timetunnel.man \
+ juggler3d.man topblock.man glschool.man glcells.man \
+ voronoi.man moebiusgears.man lockward.man cubicgrid.man \
+ hypnowheel.man skytentacles.man sonar.man jigsaw.man \
+ photopile.man rubikblocks.man surfaces.man hilbert.man \
+ companioncube.man tronbit.man kaleidocycle.man \
+ quasicrystal.man unknownpleasures.man geodesic.man \
+ geodesicgears.man projectiveplane.man winduprobot.man \
+ cityflow.man romanboy.man splitflap.man dymaxionmap.man \
+ unicrud.man energystream.man raverhoop.man hydrostat.man \
+ discoball.man cubetwist.man cubestack.man splodesic.man \
+ hexstrut.man vigilance.man esper.man razzledazzle.man \
+ peepers.man crumbler.man maze3d.man
+MEN = @GL_MEN@
+RETIRED_MEN = glforestfire.man
+EXTRAS = README Makefile.in dxf2gl.pl vrml2gl.pl wfront2gl.pl \
+ molecules.sh starwars.txt zalgo.txt *.dxf
+
+TARFILES = $(SRCS) $(HDRS) $(GL_MEN) $(RETIRED_MEN) $(EXTRAS)
+
+
+default: all
+all: $(EXES) $(RETIRED_EXES)
+
+install: install-program install-xml install-man
+uninstall: uninstall-program uninstall-xml uninstall-man
+
+install-strip:
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+
+# the hacks, in $HACKDIR
+install-program:: $(EXES)
+ @exes="$(HACK_EXES_1)" ; \
+ idir="$(install_prefix)$(HACKDIR)" ; \
+ if [ "$$exes" != "" ]; then \
+ if [ ! -d $$idir ]; then \
+ $(INSTALL_DIRS) $$idir ; \
+ fi ; \
+ for program in $$exes; do \
+ echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \
+ $(INSTALL_PROGRAM) $$program $$idir/$$program ; \
+ done ; \
+ \
+ exes="$(SUID_EXES)" ; \
+ if [ @SETUID_HACKS@ = yes ]; then \
+ sinst="$(INSTALL_SETUID)" ; \
+ else \
+ sinst="$(INSTALL_PROGRAM)" ; \
+ fi ; \
+ for program in $$exes; do \
+ echo $$sinst $$program $$idir/$$program ; \
+ if $$sinst $$program $$idir/$$program ; then \
+ true ; \
+ elif [ @SETUID_HACKS@ = yes ]; then \
+ echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \
+ if $(INSTALL_PROGRAM) $$program $$idir/$$program ; then\
+ echo "" ; \
+ echo "WARNING: unable to install $$program setuid:" \
+ "installed non-setuid instead." ; \
+ echo "" ; \
+ else \
+ exit 1 ; \
+ fi ; \
+ else \
+ exit 1 ; \
+ fi ; \
+ done ; \
+ fi
+
+
+# the xscreensaver-gl-helper program, in $bindir
+install-program:: $(EXES)
+ @exes="@GL_UTIL_EXES@" ; \
+ idir="$(install_prefix)$(bindir)" ; \
+ if [ "$$exes" != "" ]; then \
+ if [ ! -d $$idir ]; then \
+ $(INSTALL_DIRS) $$idir ; \
+ fi ; \
+ for program in $$exes; do \
+ echo $(INSTALL_PROGRAM) $$program $$idir/$$program ; \
+ $(INSTALL_PROGRAM) $$program $$idir/$$program ; \
+ done ; \
+ fi
+
+# When installing man pages, we install "foo.man" as "foo.N" and update
+# the .TH line in the installed file with one like
+#
+# .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
+#
+# where N is the manual section suffix.
+#
+install-man: $(MEN)
+ @men="$(MEN)" ; \
+ U=$(UTILS_SRC)/version.h ; \
+ V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U` ; \
+ T=/tmp/xs$$$$.$(mansuffix) ; \
+ TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ; \
+ echo "installing man pages: $$TH" ; \
+ \
+ if [ ! -d $(install_prefix)$(manNdir) ]; then \
+ $(INSTALL_DIRS) $(install_prefix)$(manNdir) ; \
+ fi ; \
+ \
+ for man in $$men; do \
+ instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ; \
+ manbase=`echo $$man | sed 's/\.man$$//'` ; \
+ TH=".TH $$manbase $(mansuffix) \"$$V\" \"X Version 11\" \"XScreenSaver manual\"" ; \
+ sed -e "s/^\.TH.*/$$TH/" \
+ -e 's@(MANSUFFIX)@($(mansuffix))@g' \
+ < $(srcdir)/$$man > $$T ; \
+ echo $(INSTALL_DATA) $(srcdir)/$$man \
+ $(install_prefix)$(manNdir)/$$instname ; \
+ $(INSTALL_DATA) $$T \
+ $(install_prefix)$(manNdir)/$$instname ; \
+ done ; \
+ rm -f $$T
+
+install-xml:
+ @dest=$(install_prefix)$(HACK_CONF_DIR) ; \
+ if [ ! -d $$dest ]; then \
+ $(INSTALL_DIRS) $$dest ; \
+ fi ; \
+ src=$(srcdir)/../config ; \
+ for file in $(EXES) $(SCRIPTS) ; do \
+ if [ -f $$src/$$file.xml ]; then \
+ echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \
+ $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \
+ fi ; \
+ done
+
+# the hacks, in $HACKDIR
+uninstall-program::
+ @exes="$(HACK_EXES) $(RETIRED_EXES)" ; \
+ idir="$(install_prefix)$(HACKDIR)" ; \
+ for program in $$exes; do \
+ echo rm -f $$idir/$$program ; \
+ rm -f $$idir/$$program ; \
+ done
+
+# the xscreensaver-gl-helper program, in $bindir
+uninstall-program::
+ @exes="$(GL_UTIL_EXES)" ; \
+ idir="$(install_prefix)$(bindir)" ; \
+ for program in $$exes; do \
+ echo rm -f $$idir/$$program ; \
+ rm -f $$idir/$$program ; \
+ done
+
+uninstall-man:
+ @men="$(MEN) $(RETIRED_MEN)" ; \
+ for man in $$men; do \
+ instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ; \
+ echo rm -f $(install_prefix)$(manNdir)/$$instname* ; \
+ rm -f $(install_prefix)$(manNdir)/$$instname* ; \
+ done
+
+uninstall-xml:
+ @dest=$(install_prefix)$(HACK_CONF_DIR) ; \
+ for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) ; do \
+ echo rm -f $$dest/$$file.xml ; \
+ rm -f $$dest/$$file.xml ; \
+ done
+
+clean::
+ -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) molecules.h
+
+distclean: clean
+ -rm -f Makefile TAGS *~ "#"*
+
+# Adds all current dependencies to Makefile
+depend:
+ $(DEPEND) -s '# DO NOT DELETE: updated by make depend' \
+ $(DEPEND_FLAGS) -- \
+ $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \
+ $(SRCS)
+
+# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
+# close. This excludes dependencies on files in /usr/include, etc. It tries
+# to include only dependencies on files which are themselves a part of this
+# package.
+distdepend:: molecules.h
+ @echo updating dependencies in `pwd`/Makefile.in... ; \
+ $(DEPEND) -w 0 -f - \
+ -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
+ $(INCLUDES_1) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \
+ $(SRCS) 2>/dev/null | \
+ sort -d | \
+ ( \
+ awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
+ sed -e '/^#.*/d' \
+ -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d' \
+ -e 's@\.\./\.\./utils@$$(UTILS_SRC)@g' \
+ -e 's@\.\./\.\./jwxyz@$$(JWXYZ_SRC)@g' \
+ -e 's@\.\./glx/@@g' \
+ -e 's@ \.\./@ $$(HACK_SRC)/@g' \
+ -e 's@ \([^$$]\)@ $$(srcdir)/\1@g' \
+ -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' \
+ -e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g' \
+ -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' ; \
+ echo '' \
+ ) > /tmp/distdepend.$$$$ && \
+ mv /tmp/distdepend.$$$$ Makefile.in
+
+
+TAGS: tags
+tags:
+ find $(srcdir) -name '*.[chly]' -print | xargs etags -a
+
+echo_tarfiles:
+ @echo $(TARFILES)
+
+check_men:
+ @badmen="" ; \
+ for exe in $(EXES); do \
+ if ! [ -f $(srcdir)/$$exe.man ]; then \
+ badmen="$$badmen $$exe" ; \
+ fi ; \
+ done ; \
+ if [ -n "$$badmen" ]; then \
+ echo "" ; \
+ echo "Warning: The following programs have no manuals:" ; \
+ echo "" ; \
+ for m in $$badmen ; do \
+ echo " $$m" ; \
+ done ; \
+ fi
+
+validate_xml:
+ @echo "Validating XML..." ; \
+ cd $(HACK_SRC) ; ./check-configs.pl $(GL_EXES) $(GLE_EXES) $(SUID_EXES)
+
+distdepend:: check_men validate_xml
+
+
+
+# Rules for noticing when the objects from the utils and hacks
+# directories are out of date with respect to their sources, and going
+# and building them according to the rules in their own Makefile...
+#
+$(UTILS_BIN)/colors.o: $(UTILS_SRC)/colors.c
+$(UTILS_BIN)/grabclient.o: $(UTILS_SRC)/grabclient.c
+$(UTILS_BIN)/hsv.o: $(UTILS_SRC)/hsv.c
+$(UTILS_BIN)/resources.o: $(UTILS_SRC)/resources.c
+$(UTILS_BIN)/usleep.o: $(UTILS_SRC)/usleep.c
+$(UTILS_BIN)/visual.o: $(UTILS_SRC)/visual.c
+$(UTILS_BIN)/xmu.o: $(UTILS_SRC)/xmu.c
+$(UTILS_BIN)/xft.o: $(UTILS_SRC)/xft.c
+$(UTILS_BIN)/utf8wc.o: $(UTILS_SRC)/utf8wc.c
+$(UTILS_BIN)/logo.o: $(UTILS_SRC)/logo.c
+$(UTILS_BIN)/visual-gl.o: $(UTILS_SRC)/visual-gl.c
+$(UTILS_BIN)/yarandom.o: $(UTILS_SRC)/yarandom.c
+$(UTILS_BIN)/xshm.o: $(UTILS_SRC)/xshm.c
+$(UTILS_BIN)/textclient.o: $(UTILS_SRC)/textclient.c
+$(UTILS_BIN)/async_netdb.o: $(UTILS_SRC)/async_netdb.c
+$(UTILS_BIN)/aligned_malloc.o: $(UTILS_SRC)/aligned_malloc.c
+$(UTILS_BIN)/thread_util.o: $(UTILS_SRC)/thread_util.c
+$(UTILS_BIN)/spline.o: $(UTILS_SRC)/spline.c
+$(UTILS_BIN)/pow2.o: $(UTILS_SRC)/pow2.c
+$(UTILS_BIN)/font-retry-xft.o: $(UTILS_SRC)/font-retry.c
+$(HACK_BIN)/screenhack.o: $(HACK_SRC)/screenhack.c
+$(HACK_BIN)/xlockmore.o: $(HACK_SRC)/xlockmore.c
+$(HACK_BIN)/fps.o: $(HACK_SRC)/fps.c
+
+$(UTILDIR_OBJS):
+ cd $(UTILS_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)"
+$(JWXYZ_OBJS):
+ cd $(JWXYZ_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)"
+$(HACKDIR_OBJS):
+ cd $(HACK_BIN) ; $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)"
+
+
+# How we build object files in this directory.
+.c.o:
+ $(CC) -c $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $<
+
+# Make sure the images have been packaged. This is the first one hit:
+../images/gen/wood_png.h:
+ cd ../images && $(MAKE)
+
+# How to build the "xscreensaver-gl-helper" program, that lets the daemon
+# know which visual is the right one for GL programs.
+#
+HELPER_OBJS = xscreensaver-gl-helper.o $(UTILS_BIN)/visual-gl.o \
+ $(UTILS_BIN)/visual.o $(UTILS_BIN)/resources.o
+xscreensaver-gl-helper: $(HELPER_OBJS)
+ $(CC) $(LDFLAGS) -o $@ $(HELPER_OBJS) $(LIBS) $(X_LIBS) $(HACK_POST2)
+
+
+# These hacks use a slightly-differently-compiled variant of recanim.c.
+# This is how to make the the other .o file from it.
+#
+XLM_CFLAGS=-DUSE_GL $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
+recanim-gl.o: $(HACK_SRC)/recanim.c
+ $(CC) -o $@ -c $(XLM_CFLAGS) $(HACK_SRC)/recanim.c
+
+CC_HACK = $(CC) $(LDFLAGS)
+
+
+TRACK_OBJS=rotator.o trackball.o gltrackball.o
+HACK_TRACK_OBJS=$(HACK_OBJS) $(TRACK_OBJS)
+HACK_GRAB_OBJS=$(HACK_OBJS) $(GRAB_OBJS)
+HACK_TRACK_GRAB_OBJS=$(HACK_TRACK_OBJS) $(GRAB_OBJS)
+TEXT=$(UTILS_BIN)/textclient.o
+
+ATLANTIS_OBJS = $(HACK_OBJS) dolphin.o shark.o swim.o whale.o $(PNG)
+atlantis: atlantis.o $(ATLANTIS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(ATLANTIS_OBJS) $(PNG_LIBS)
+
+ATUNNEL_OBJS = $(HACK_OBJS) tunnel_draw.o $(PNG)
+atunnel: atunnel.o $(ATUNNEL_OBJS)
+ $(CC_HACK) -o $@ $@.o $(ATUNNEL_OBJS) $(PNG_LIBS)
+
+cage: cage.o $(PNG) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS)
+
+FLURRY_OBJS_1 = flurry-smoke.o flurry-spark.o flurry-star.o flurry-texture.o
+FLURRY_OBJS = $(FLURRY_OBJS_1) $(HACK_OBJS)
+
+flurry: flurry.o $(FLURRY_OBJS)
+ $(CC_HACK) -o $@ $@.o $(FLURRY_OBJS) $(HACK_LIBS) -lm
+
+GEARS_OBJS_1=normals.o involute.o
+GEARS_OBJS=$(GEARS_OBJS_1) $(HACK_TRACK_OBJS)
+gears: gears.o tube.o $(GEARS_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o $(GEARS_OBJS) $(HACK_LIBS)
+
+MOEBIUS_OBJS=sphere.o tube.o $(PNG) $(HACK_TRACK_OBJS)
+moebius: moebius.o $(MOEBIUS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(MOEBIUS_OBJS) $(HACK_LIBS) $(PNG_LIBS)
+
+PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o normals.o
+pipes: pipes.o $(PIPE_OBJS) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PIPE_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+superquadrics: superquadrics.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+morph3d: morph3d.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+rubik: rubik.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+stairs: stairs.o sphere.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o $(PNG) $(HACK_TRACK_OBJS) \
+ $(HACK_LIBS) $(PNG_LIBS)
+
+SPROINGIES = sproingiewrap.o gllist.o \
+ s1_1.o s1_2.o s1_3.o s1_4.o s1_5.o s1_6.o s1_b.o
+sproingies: sproingies.o $(HACK_OBJS) $(SPROINGIES)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(SPROINGIES) $(HACK_LIBS)
+
+LAMENTOBJS = gllist.o lament_model.o $(HACK_TRACK_OBJS) $(PNG) normals.o
+lament: lament.o $(LAMENTOBJS)
+ $(CC_HACK) -o $@ $@.o $(LAMENTOBJS) $(PNG_LIBS)
+
+lament_dxf::
+ ./dxf2gl.pl --smooth --layers lament.dxf lament_model.c
+
+
+B3D_OBJS = b_sphere.o b_draw.o b_lockglue.o $(HACK_OBJS)
+bubble3d: bubble3d.o $(B3D_OBJS)
+ $(CC_HACK) -o $@ $@.o $(B3D_OBJS) $(HACK_LIBS)
+
+PLANET_OBJS=sphere.o $(PNG) $(HACK_TRACK_OBJS)
+glplanet: glplanet.o $(PLANET_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PLANET_OBJS) $(PNG_LIBS)
+
+DYMAXIOBJS=dymaxionmap-coords.o normals.o $(PLANET_OBJS)
+dymaxionmap: dymaxionmap.o $(DYMAXIOBJS)
+ $(CC_HACK) -o $@ $@.o $(DYMAXIOBJS) $(PNG_LIBS)
+
+pulsar: pulsar.o $(HACK_OBJS) $(PNG)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(PNG) $(PNG_LIBS)
+
+EXTRUSION_OBJS=extrusion.o extrusion-helix2.o extrusion-helix3.o \
+ extrusion-helix4.o extrusion-joinoffset.o extrusion-screw.o \
+ extrusion-taper.o extrusion-twistoid.o $(PNG) \
+ $(HACK_TRACK_OBJS)
+extrusion: $(EXTRUSION_OBJS)
+ $(CC_HACK) -o $@ $(EXTRUSION_OBJS) $(GLE_LIBS)
+
+sierpinski3d: sierpinski3d.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+gflux: gflux.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
+
+SW_OBJS=starwars.o glut_stroke.o glut_swidth.o $(TEXT) $(HACK_OBJS)
+starwars: $(SW_OBJS)
+ $(CC_HACK) -o $@ $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
+
+GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o sphere.o \
+ $(TEXT) $(HACK_TRACK_OBJS)
+gltext: $(GLT_OBJS)
+ $(CC_HACK) -o $@ $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
+
+DB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
+dangerball: dangerball.o $(DB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(DB_OBJS) $(HACK_LIBS)
+
+circuit: circuit.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+menger: menger.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+engine: engine.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+flipscreen3d: flipscreen3d.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
+
+glsnake: glsnake.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+boxed: boxed.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+glforestfire: glforestfire.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS)
+
+sballs: sballs.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS)
+
+cubenetic: cubenetic.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+spheremonics: spheremonics.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+LL_OBJS=marching.o $(PNG) normals.o $(HACK_TRACK_OBJS)
+lavalite: lavalite.o $(LL_OBJS)
+ $(CC_HACK) -o $@ $@.o $(LL_OBJS) $(PNG_LIBS)
+
+queens: queens.o chessmodels.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o chessmodels.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+endgame: endgame.o chessmodels.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o chessmodels.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+glblur: glblur.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+TOAST_OBJS=\
+ toaster.o toaster_base.o toaster_handle.o toaster_handle2.o \
+ toaster_jet.o toaster_knob.o toaster_slots.o toaster_wing.o \
+ toast.o toast2.o \
+ flyingtoasters.o gllist.o $(PNG) $(HACK_TRACK_OBJS)
+flyingtoasters: $(TOAST_OBJS)
+ $(CC_HACK) -o $@ $(TOAST_OBJS) $(PNG_LIBS)
+
+toaster_dxf::
+ @set -e ; \
+ for f in \
+ toaster.dxf \
+ toaster_base.dxf \
+ toaster_handle.dxf \
+ toaster_handle2.dxf \
+ toaster_jet.dxf \
+ toaster_knob.dxf \
+ toaster_slots.dxf \
+ toaster_wing.dxf \
+ toast.dxf \
+ toast2.dxf \
+ ; do \
+ f2=`echo $$f | sed 's/dxf$$/c/'` ; \
+ ./dxf2gl.pl --normalize --smooth $$f $$f2 ; \
+ done ; \
+
+COW_OBJS=\
+ cow_face.o cow_hide.o cow_hoofs.o cow_horns.o cow_tail.o cow_udder.o \
+ bouncingcow.o gllist.o $(PNG) $(HACK_TRACK_OBJS)
+bouncingcow: $(COW_OBJS)
+ $(CC_HACK) -o $@ $(COW_OBJS) $(PNG_LIBS)
+
+ROBO_OBJS=\
+ robot.o robot-wireframe.o gllist.o $(PNG) sphere.o \
+ winduprobot.o $(GEARS_OBJS_1) $(TEXT) $(HACK_TRACK_OBJS)
+winduprobot: $(ROBO_OBJS)
+ $(CC_HACK) -o $@ $(ROBO_OBJS) $(PNG_LIBS) $(TEXT_LIBS)
+
+winduprobot_dxf::
+ ./dxf2gl.pl --smooth --layers robot.dxf robot.c
+ ./dxf2gl.pl --wireframe robot-wireframe.dxf robot-wireframe.c
+
+CAM_OBJS=seccam.o gllist.o vigilance.o $(HACK_TRACK_OBJS)
+vigilance: $(CAM_OBJS)
+ $(CC_HACK) -o $@ $(CAM_OBJS) $(HACK_LIBS)
+
+seccam_dxf::
+ ./dxf2gl.pl --smooth --layers seccam.dxf seccam.c
+
+glslideshow: glslideshow.o $(HACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_GRAB_OBJS) $(HACK_LIBS)
+
+jigglypuff: jigglypuff.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_TRACK_OBJS) $(PNG_LIBS)
+
+klein: klein.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+surfaces: surfaces.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+hypertorus: hypertorus.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+projectiveplane: projectiveplane.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+romanboy: romanboy.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+glmatrix: glmatrix.o $(PNG) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS)
+
+cubestorm: cubestorm.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+glknots: glknots.o tube.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+blocktube: blocktube.o $(PNG) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_OBJS) $(PNG_LIBS)
+
+flipflop: flipflop.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
+
+antspotlight: antspotlight.o sphere.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
+
+polytopes: polytopes.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+STONER_OBJS=stonerview-move.o stonerview-osc.o stonerview-view.o
+stonerview: stonerview.o $(STONER_OBJS) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(STONER_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+molecules.h:
+ @echo "building molecules.h from $(HACK_SRC)/images/molecules/*.pdb"; \
+ UTILS_SRC="$(UTILS_SRC)" \
+ $(srcdir)/molecules.sh molecules.h $(HACK_SRC)/images/molecules/*.pdb
+
+MOLECULE_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
+molecule.o: molecules.h
+molecule: molecule.o $(MOLECULE_OBJS)
+ $(CC_HACK) -o $@ $@.o $(MOLECULE_OBJS) $(HACK_LIBS)
+
+gleidescope: gleidescope.o $(PNG) $(HACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(HACK_GRAB_OBJS) $(PNG_LIBS)
+
+mirrorblob: mirrorblob.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(PNG_LIBS)
+
+blinkbox: blinkbox.o sphere.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o $(HACK_OBJS) $(HACK_LIBS)
+
+noof: noof.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+PH_OBJS=polyhedra-gl.o normals.o teapot.o $(HACK_TRACK_OBJS)
+polyhedra: polyhedra.o $(PH_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PH_OBJS) $(HACK_LIBS)
+
+antinspect: antinspect.o sphere.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+providence: providence.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+pinion: pinion.o $(GEARS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS)
+
+moebiusgears: moebiusgears.o $(GEARS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS)
+
+boing: boing.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+carousel: carousel.o $(HACK_TRACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_GRAB_OBJS) $(HACK_LIBS)
+
+fliptext: fliptext.o $(TEXT) $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TEXT) $(HACK_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
+
+antmaze: antmaze.o sphere.o tube.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+TANGRAM_OBJS=tangram_shapes.o $(HACK_OBJS)
+tangram: tangram.o $(TANGRAM_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TANGRAM_OBJS) $(HACK_LIBS)
+
+crackberg: crackberg.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+glhanoi: glhanoi.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+cube21: cube21.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+TIMETUNNEL_OBJS = $(PNG) $(HACK_TRACK_OBJS)
+timetunnel: timetunnel.o $(TIMETUNNEL_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TIMETUNNEL_OBJS) $(PNG_LIBS)
+
+JUGG_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
+juggler3d: juggler3d.o $(JUGG_OBJS)
+ $(CC_HACK) -o $@ $@.o $(JUGG_OBJS) $(HACK_LIBS)
+
+dnalogo: dnalogo.o tube.o sphere.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o tube.o sphere.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+topblock: topblock.o sphere.o tube.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o sphere.o tube.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+SCHOOL_OBJS=glschool.o glschool_alg.o glschool_gl.o \
+ sphere.o tube.o normals.o $(HACK_OBJS)
+glschool: $(SCHOOL_OBJS)
+ $(CC_HACK) -o $@ $(SCHOOL_OBJS) $(HACK_LIBS)
+
+glcells: glcells.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+voronoi: voronoi.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+lockward: lockward.o $(HACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+
+cubicgrid: cubicgrid.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+hypnowheel: hypnowheel.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+TENTACLE_OBJS=normals.o $(PNG) $(HACK_TRACK_OBJS)
+skytentacles: skytentacles.o $(TENTACLE_OBJS)
+ $(CC_HACK) -o $@ $@.o $(TENTACLE_OBJS) $(PNG_LIBS)
+
+SONAR_OBJS=sonar-sim.o sonar-icmp.o $(HACK_TRACK_OBJS)
+sonar: sonar.o $(SONAR_OBJS)
+ $(CC_HACK) -o $@ $@.o $(SONAR_OBJS) $(HACK_LIBS)
+
+JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS)
+jigsaw: jigsaw.o $(JIGSAW_OBJS)
+ $(CC_HACK) -o $@ $@.o $(JIGSAW_OBJS) $(HACK_LIBS)
+
+PHOTOPILE_OBJS=dropshadow.o $(HACK_GRAB_OBJS)
+photopile: photopile.o $(PHOTOPILE_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PHOTOPILE_OBJS) $(HACK_LIBS)
+
+rubikblocks: rubikblocks.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+HILB_OBJS=sphere.o tube.o $(HACK_TRACK_OBJS)
+hilbert: hilbert.o $(HILB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HILB_OBJS) $(HACK_LIBS)
+
+CCUBE_OBJS=companion.o companion_quad.o companion_disc.o companion_heart.o \
+ gllist.o $(HACK_TRACK_OBJS)
+companioncube: $(CCUBE_OBJS)
+ $(CC_HACK) -o $@ $(CCUBE_OBJS) $(HACK_LIBS)
+
+TBIT_OBJS=tronbit.o tronbit_idle1.o tronbit_idle2.o tronbit_no.o tronbit_yes.o\
+ gllist.o $(HACK_TRACK_OBJS)
+tronbit: $(TBIT_OBJS)
+ $(CC_HACK) -o $@ $(TBIT_OBJS) $(HACK_LIBS)
+
+KALEIDOCYCLE_OBJS=kaleidocycle.o normals.o $(HACK_TRACK_OBJS)
+kaleidocycle: $(KALEIDOCYCLE_OBJS)
+ $(CC_HACK) -o $@ $(KALEIDOCYCLE_OBJS) $(HACK_LIBS)
+
+quasicrystal: quasicrystal.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+unknownpleasures: unknownpleasures.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+geodesic: geodesic.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+geodesicgears: geodesicgears.o $(GEARS_OBJS)
+ $(CC_HACK) -o $@ $@.o $(GEARS_OBJS) $(HACK_LIBS)
+
+cityflow: cityflow.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+splitflap_dxf::
+ ./dxf2gl.pl --normalize --smooth --layers splitflap.dxf splitflap_obj.c
+
+FLAP_OBJS=splitflap_obj.o gllist.o splitflap.o $(TEXT) $(HACK_TRACK_OBJS)
+splitflap: $(FLAP_OBJS)
+ $(CC_HACK) -o $@ $(FLAP_OBJS) $(PNG_LIBS) $(TEXT_LIBS)
+
+unicrud: unicrud.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+ES_OBJS=$(PNG) $(HACK_TRACK_OBJS)
+energystream: energystream.o $(ES_OBJS)
+ $(CC_HACK) -o $@ $@.o $(ES_OBJS) $(PNG_LIBS) $(HACK_LIBS)
+
+raverhoop: raverhoop.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+HSTAT_OBJS=sphere.o normals.o $(HACK_TRACK_OBJS)
+hydrostat: hydrostat.o $(HSTAT_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HSTAT_OBJS) $(HACK_LIBS)
+
+discoball: discoball.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+cubetwist: cubetwist.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+cubestack: cubestack.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+splodesic: splodesic.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+hexstrut: hexstrut.o normals.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+esper: esper.o $(HACK_GRAB_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_GRAB_OBJS) $(HACK_LIBS)
+
+ships_dxf::
+ ./dxf2gl.pl --normalize --layers ships.dxf ships.c
+
+DAZ_OBJS=ships.o gllist.o $(HACK_TRACK_OBJS)
+razzledazzle: razzledazzle.o $(DAZ_OBJS)
+ $(CC_HACK) -o $@ $@.o $(DAZ_OBJS) $(HACK_LIBS)
+
+peepers: peepers.o normals.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o normals.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+crumbler: crumbler.o quickhull.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o quickhull.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+maze3d: maze3d.o $(PNG) $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+##############################################################################
+#
+# DO NOT DELETE: updated by make distdepend
+
+antinspect.o: ../../config.h
+antinspect.o: $(HACK_SRC)/fps.h
+antinspect.o: $(srcdir)/gltrackball.h
+antinspect.o: $(HACK_SRC)/recanim.h
+antinspect.o: $(HACK_SRC)/screenhackI.h
+antinspect.o: $(srcdir)/sphere.h
+antinspect.o: $(UTILS_SRC)/colors.h
+antinspect.o: $(UTILS_SRC)/erase.h
+antinspect.o: $(UTILS_SRC)/font-retry.h
+antinspect.o: $(UTILS_SRC)/grabscreen.h
+antinspect.o: $(UTILS_SRC)/hsv.h
+antinspect.o: $(UTILS_SRC)/resources.h
+antinspect.o: $(UTILS_SRC)/usleep.h
+antinspect.o: $(UTILS_SRC)/visual.h
+antinspect.o: $(UTILS_SRC)/yarandom.h
+antinspect.o: $(HACK_SRC)/xlockmoreI.h
+antinspect.o: $(HACK_SRC)/xlockmore.h
+antmaze.o: $(srcdir)/ants.h
+antmaze.o: ../../config.h
+antmaze.o: $(HACK_SRC)/fps.h
+antmaze.o: $(srcdir)/gltrackball.h
+antmaze.o: $(HACK_SRC)/recanim.h
+antmaze.o: $(srcdir)/rotator.h
+antmaze.o: $(HACK_SRC)/screenhackI.h
+antmaze.o: $(srcdir)/sphere.h
+antmaze.o: $(srcdir)/tube.h
+antmaze.o: $(UTILS_SRC)/colors.h
+antmaze.o: $(UTILS_SRC)/erase.h
+antmaze.o: $(UTILS_SRC)/font-retry.h
+antmaze.o: $(UTILS_SRC)/grabscreen.h
+antmaze.o: $(UTILS_SRC)/hsv.h
+antmaze.o: $(UTILS_SRC)/resources.h
+antmaze.o: $(UTILS_SRC)/usleep.h
+antmaze.o: $(UTILS_SRC)/visual.h
+antmaze.o: $(UTILS_SRC)/yarandom.h
+antmaze.o: $(HACK_SRC)/xlockmoreI.h
+antmaze.o: $(HACK_SRC)/xlockmore.h
+antspotlight.o: $(srcdir)/ants.h
+antspotlight.o: ../../config.h
+antspotlight.o: $(HACK_SRC)/fps.h
+antspotlight.o: $(srcdir)/gltrackball.h
+antspotlight.o: $(srcdir)/grab-ximage.h
+antspotlight.o: $(HACK_SRC)/recanim.h
+antspotlight.o: $(srcdir)/rotator.h
+antspotlight.o: $(HACK_SRC)/screenhackI.h
+antspotlight.o: $(srcdir)/sphere.h
+antspotlight.o: $(srcdir)/tube.h
+antspotlight.o: $(UTILS_SRC)/colors.h
+antspotlight.o: $(UTILS_SRC)/erase.h
+antspotlight.o: $(UTILS_SRC)/font-retry.h
+antspotlight.o: $(UTILS_SRC)/grabscreen.h
+antspotlight.o: $(UTILS_SRC)/hsv.h
+antspotlight.o: $(UTILS_SRC)/resources.h
+antspotlight.o: $(UTILS_SRC)/usleep.h
+antspotlight.o: $(UTILS_SRC)/visual.h
+antspotlight.o: $(UTILS_SRC)/yarandom.h
+antspotlight.o: $(HACK_SRC)/xlockmoreI.h
+antspotlight.o: $(HACK_SRC)/xlockmore.h
+atlantis.o: $(srcdir)/atlantis.h
+atlantis.o: ../../config.h
+atlantis.o: $(HACK_SRC)/fps.h
+atlantis.o: $(HACK_SRC)/images/gen/sea-texture_png.h
+atlantis.o: $(HACK_SRC)/recanim.h
+atlantis.o: $(HACK_SRC)/screenhackI.h
+atlantis.o: $(UTILS_SRC)/colors.h
+atlantis.o: $(UTILS_SRC)/erase.h
+atlantis.o: $(UTILS_SRC)/font-retry.h
+atlantis.o: $(UTILS_SRC)/grabscreen.h
+atlantis.o: $(UTILS_SRC)/hsv.h
+atlantis.o: $(UTILS_SRC)/resources.h
+atlantis.o: $(UTILS_SRC)/usleep.h
+atlantis.o: $(UTILS_SRC)/visual.h
+atlantis.o: $(UTILS_SRC)/yarandom.h
+atlantis.o: $(HACK_SRC)/ximage-loader.h
+atlantis.o: $(HACK_SRC)/xlockmoreI.h
+atlantis.o: $(HACK_SRC)/xlockmore.h
+atunnel.o: ../../config.h
+atunnel.o: $(HACK_SRC)/fps.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel0_png.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel1_png.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel2_png.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel3_png.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel4_png.h
+atunnel.o: $(HACK_SRC)/images/gen/tunnel5_png.h
+atunnel.o: $(HACK_SRC)/recanim.h
+atunnel.o: $(HACK_SRC)/screenhackI.h
+atunnel.o: $(srcdir)/tunnel_draw.h
+atunnel.o: $(UTILS_SRC)/colors.h
+atunnel.o: $(UTILS_SRC)/erase.h
+atunnel.o: $(UTILS_SRC)/font-retry.h
+atunnel.o: $(UTILS_SRC)/grabscreen.h
+atunnel.o: $(UTILS_SRC)/hsv.h
+atunnel.o: $(UTILS_SRC)/resources.h
+atunnel.o: $(UTILS_SRC)/usleep.h
+atunnel.o: $(UTILS_SRC)/visual.h
+atunnel.o: $(UTILS_SRC)/yarandom.h
+atunnel.o: $(HACK_SRC)/ximage-loader.h
+atunnel.o: $(HACK_SRC)/xlockmoreI.h
+atunnel.o: $(HACK_SRC)/xlockmore.h
+b_draw.o: $(srcdir)/bubble3d.h
+b_draw.o: ../../config.h
+b_draw.o: $(HACK_SRC)/fps.h
+b_draw.o: $(HACK_SRC)/recanim.h
+b_draw.o: $(HACK_SRC)/screenhackI.h
+b_draw.o: $(UTILS_SRC)/colors.h
+b_draw.o: $(UTILS_SRC)/erase.h
+b_draw.o: $(UTILS_SRC)/font-retry.h
+b_draw.o: $(UTILS_SRC)/grabscreen.h
+b_draw.o: $(UTILS_SRC)/hsv.h
+b_draw.o: $(UTILS_SRC)/resources.h
+b_draw.o: $(UTILS_SRC)/usleep.h
+b_draw.o: $(UTILS_SRC)/visual.h
+b_draw.o: $(UTILS_SRC)/yarandom.h
+b_draw.o: $(HACK_SRC)/xlockmoreI.h
+blinkbox.o: ../../config.h
+blinkbox.o: $(HACK_SRC)/fps.h
+blinkbox.o: $(HACK_SRC)/recanim.h
+blinkbox.o: $(HACK_SRC)/screenhackI.h
+blinkbox.o: $(srcdir)/sphere.h
+blinkbox.o: $(UTILS_SRC)/colors.h
+blinkbox.o: $(UTILS_SRC)/erase.h
+blinkbox.o: $(UTILS_SRC)/font-retry.h
+blinkbox.o: $(UTILS_SRC)/grabscreen.h
+blinkbox.o: $(UTILS_SRC)/hsv.h
+blinkbox.o: $(UTILS_SRC)/resources.h
+blinkbox.o: $(UTILS_SRC)/usleep.h
+blinkbox.o: $(UTILS_SRC)/visual.h
+blinkbox.o: $(UTILS_SRC)/yarandom.h
+blinkbox.o: $(HACK_SRC)/xlockmoreI.h
+blinkbox.o: $(HACK_SRC)/xlockmore.h
+b_lockglue.o: $(srcdir)/bubble3d.h
+b_lockglue.o: ../../config.h
+b_lockglue.o: $(HACK_SRC)/fps.h
+b_lockglue.o: $(HACK_SRC)/recanim.h
+b_lockglue.o: $(HACK_SRC)/screenhackI.h
+b_lockglue.o: $(UTILS_SRC)/colors.h
+b_lockglue.o: $(UTILS_SRC)/erase.h
+b_lockglue.o: $(UTILS_SRC)/font-retry.h
+b_lockglue.o: $(UTILS_SRC)/grabscreen.h
+b_lockglue.o: $(UTILS_SRC)/hsv.h
+b_lockglue.o: $(UTILS_SRC)/resources.h
+b_lockglue.o: $(UTILS_SRC)/usleep.h
+b_lockglue.o: $(UTILS_SRC)/visual.h
+b_lockglue.o: $(UTILS_SRC)/yarandom.h
+b_lockglue.o: $(HACK_SRC)/xlockmoreI.h
+b_lockglue.o: $(HACK_SRC)/xlockmore.h
+blocktube.o: ../../config.h
+blocktube.o: $(HACK_SRC)/fps.h
+blocktube.o: $(HACK_SRC)/images/gen/blocktube_png.h
+blocktube.o: $(HACK_SRC)/recanim.h
+blocktube.o: $(HACK_SRC)/screenhackI.h
+blocktube.o: $(UTILS_SRC)/colors.h
+blocktube.o: $(UTILS_SRC)/erase.h
+blocktube.o: $(UTILS_SRC)/font-retry.h
+blocktube.o: $(UTILS_SRC)/grabscreen.h
+blocktube.o: $(UTILS_SRC)/hsv.h
+blocktube.o: $(UTILS_SRC)/resources.h
+blocktube.o: $(UTILS_SRC)/usleep.h
+blocktube.o: $(UTILS_SRC)/visual.h
+blocktube.o: $(UTILS_SRC)/yarandom.h
+blocktube.o: $(HACK_SRC)/ximage-loader.h
+blocktube.o: $(HACK_SRC)/xlockmoreI.h
+blocktube.o: $(HACK_SRC)/xlockmore.h
+boing.o: ../../config.h
+boing.o: $(HACK_SRC)/fps.h
+boing.o: $(srcdir)/gltrackball.h
+boing.o: $(HACK_SRC)/recanim.h
+boing.o: $(HACK_SRC)/screenhackI.h
+boing.o: $(UTILS_SRC)/colors.h
+boing.o: $(UTILS_SRC)/erase.h
+boing.o: $(UTILS_SRC)/font-retry.h
+boing.o: $(UTILS_SRC)/grabscreen.h
+boing.o: $(UTILS_SRC)/hsv.h
+boing.o: $(UTILS_SRC)/resources.h
+boing.o: $(UTILS_SRC)/usleep.h
+boing.o: $(UTILS_SRC)/visual.h
+boing.o: $(UTILS_SRC)/yarandom.h
+boing.o: $(HACK_SRC)/xlockmoreI.h
+boing.o: $(HACK_SRC)/xlockmore.h
+bouncingcow.o: ../../config.h
+bouncingcow.o: $(HACK_SRC)/fps.h
+bouncingcow.o: $(srcdir)/gllist.h
+bouncingcow.o: $(srcdir)/gltrackball.h
+bouncingcow.o: $(HACK_SRC)/recanim.h
+bouncingcow.o: $(srcdir)/rotator.h
+bouncingcow.o: $(HACK_SRC)/screenhackI.h
+bouncingcow.o: $(UTILS_SRC)/colors.h
+bouncingcow.o: $(UTILS_SRC)/erase.h
+bouncingcow.o: $(UTILS_SRC)/font-retry.h
+bouncingcow.o: $(UTILS_SRC)/grabscreen.h
+bouncingcow.o: $(UTILS_SRC)/hsv.h
+bouncingcow.o: $(UTILS_SRC)/resources.h
+bouncingcow.o: $(UTILS_SRC)/usleep.h
+bouncingcow.o: $(UTILS_SRC)/visual.h
+bouncingcow.o: $(UTILS_SRC)/yarandom.h
+bouncingcow.o: $(HACK_SRC)/ximage-loader.h
+bouncingcow.o: $(HACK_SRC)/xlockmoreI.h
+bouncingcow.o: $(HACK_SRC)/xlockmore.h
+boxed.o: $(srcdir)/boxed.h
+boxed.o: ../../config.h
+boxed.o: $(HACK_SRC)/fps.h
+boxed.o: $(HACK_SRC)/recanim.h
+boxed.o: $(HACK_SRC)/screenhackI.h
+boxed.o: $(UTILS_SRC)/colors.h
+boxed.o: $(UTILS_SRC)/erase.h
+boxed.o: $(UTILS_SRC)/font-retry.h
+boxed.o: $(UTILS_SRC)/grabscreen.h
+boxed.o: $(UTILS_SRC)/hsv.h
+boxed.o: $(UTILS_SRC)/resources.h
+boxed.o: $(UTILS_SRC)/usleep.h
+boxed.o: $(UTILS_SRC)/visual.h
+boxed.o: $(UTILS_SRC)/yarandom.h
+boxed.o: $(HACK_SRC)/xlockmoreI.h
+boxed.o: $(HACK_SRC)/xlockmore.h
+b_sphere.o: $(srcdir)/bubble3d.h
+b_sphere.o: ../../config.h
+b_sphere.o: $(HACK_SRC)/fps.h
+b_sphere.o: $(HACK_SRC)/recanim.h
+b_sphere.o: $(HACK_SRC)/screenhackI.h
+b_sphere.o: $(UTILS_SRC)/colors.h
+b_sphere.o: $(UTILS_SRC)/erase.h
+b_sphere.o: $(UTILS_SRC)/font-retry.h
+b_sphere.o: $(UTILS_SRC)/grabscreen.h
+b_sphere.o: $(UTILS_SRC)/hsv.h
+b_sphere.o: $(UTILS_SRC)/resources.h
+b_sphere.o: $(UTILS_SRC)/usleep.h
+b_sphere.o: $(UTILS_SRC)/visual.h
+b_sphere.o: $(UTILS_SRC)/yarandom.h
+b_sphere.o: $(HACK_SRC)/xlockmoreI.h
+bubble3d.o: $(srcdir)/bubble3d.h
+bubble3d.o: ../../config.h
+bubble3d.o: $(HACK_SRC)/fps.h
+bubble3d.o: $(HACK_SRC)/recanim.h
+bubble3d.o: $(HACK_SRC)/screenhackI.h
+bubble3d.o: $(UTILS_SRC)/colors.h
+bubble3d.o: $(UTILS_SRC)/erase.h
+bubble3d.o: $(UTILS_SRC)/font-retry.h
+bubble3d.o: $(UTILS_SRC)/grabscreen.h
+bubble3d.o: $(UTILS_SRC)/hsv.h
+bubble3d.o: $(UTILS_SRC)/resources.h
+bubble3d.o: $(UTILS_SRC)/usleep.h
+bubble3d.o: $(UTILS_SRC)/visual.h
+bubble3d.o: $(UTILS_SRC)/yarandom.h
+bubble3d.o: $(HACK_SRC)/xlockmoreI.h
+buildlwo.o: $(srcdir)/buildlwo.h
+buildlwo.o: ../../config.h
+cage.o: ../../config.h
+cage.o: $(HACK_SRC)/fps.h
+cage.o: $(HACK_SRC)/images/gen/wood_png.h
+cage.o: $(HACK_SRC)/recanim.h
+cage.o: $(HACK_SRC)/screenhackI.h
+cage.o: $(UTILS_SRC)/colors.h
+cage.o: $(UTILS_SRC)/erase.h
+cage.o: $(UTILS_SRC)/font-retry.h
+cage.o: $(UTILS_SRC)/grabscreen.h
+cage.o: $(UTILS_SRC)/hsv.h
+cage.o: $(UTILS_SRC)/resources.h
+cage.o: $(UTILS_SRC)/usleep.h
+cage.o: $(UTILS_SRC)/visual.h
+cage.o: $(UTILS_SRC)/yarandom.h
+cage.o: $(HACK_SRC)/ximage-loader.h
+cage.o: $(HACK_SRC)/xlockmoreI.h
+cage.o: $(HACK_SRC)/xlockmore.h
+carousel.o: ../../config.h
+carousel.o: $(HACK_SRC)/fps.h
+carousel.o: $(srcdir)/gltrackball.h
+carousel.o: $(srcdir)/grab-ximage.h
+carousel.o: $(HACK_SRC)/recanim.h
+carousel.o: $(srcdir)/rotator.h
+carousel.o: $(HACK_SRC)/screenhackI.h
+carousel.o: $(srcdir)/texfont.h
+carousel.o: $(UTILS_SRC)/colors.h
+carousel.o: $(UTILS_SRC)/erase.h
+carousel.o: $(UTILS_SRC)/font-retry.h
+carousel.o: $(UTILS_SRC)/grabscreen.h
+carousel.o: $(UTILS_SRC)/hsv.h
+carousel.o: $(UTILS_SRC)/resources.h
+carousel.o: $(UTILS_SRC)/usleep.h
+carousel.o: $(UTILS_SRC)/visual.h
+carousel.o: $(UTILS_SRC)/yarandom.h
+carousel.o: $(HACK_SRC)/xlockmoreI.h
+carousel.o: $(HACK_SRC)/xlockmore.h
+chessmodels.o: $(srcdir)/chessmodels.h
+chessmodels.o: ../../config.h
+circuit.o: ../../config.h
+circuit.o: $(HACK_SRC)/fps.h
+circuit.o: $(HACK_SRC)/recanim.h
+circuit.o: $(HACK_SRC)/screenhackI.h
+circuit.o: $(srcdir)/texfont.h
+circuit.o: $(UTILS_SRC)/colors.h
+circuit.o: $(UTILS_SRC)/erase.h
+circuit.o: $(UTILS_SRC)/font-retry.h
+circuit.o: $(UTILS_SRC)/grabscreen.h
+circuit.o: $(UTILS_SRC)/hsv.h
+circuit.o: $(UTILS_SRC)/resources.h
+circuit.o: $(UTILS_SRC)/usleep.h
+circuit.o: $(UTILS_SRC)/visual.h
+circuit.o: $(UTILS_SRC)/yarandom.h
+circuit.o: $(HACK_SRC)/xlockmoreI.h
+circuit.o: $(HACK_SRC)/xlockmore.h
+cityflow.o: ../../config.h
+cityflow.o: $(HACK_SRC)/fps.h
+cityflow.o: $(srcdir)/gltrackball.h
+cityflow.o: $(HACK_SRC)/recanim.h
+cityflow.o: $(HACK_SRC)/screenhackI.h
+cityflow.o: $(UTILS_SRC)/colors.h
+cityflow.o: $(UTILS_SRC)/erase.h
+cityflow.o: $(UTILS_SRC)/font-retry.h
+cityflow.o: $(UTILS_SRC)/grabscreen.h
+cityflow.o: $(UTILS_SRC)/hsv.h
+cityflow.o: $(UTILS_SRC)/resources.h
+cityflow.o: $(UTILS_SRC)/usleep.h
+cityflow.o: $(UTILS_SRC)/visual.h
+cityflow.o: $(UTILS_SRC)/yarandom.h
+cityflow.o: $(HACK_SRC)/xlockmoreI.h
+cityflow.o: $(HACK_SRC)/xlockmore.h
+companion_disc.o: ../../config.h
+companion_disc.o: $(srcdir)/gllist.h
+companion_heart.o: ../../config.h
+companion_heart.o: $(srcdir)/gllist.h
+companion.o: ../../config.h
+companion.o: $(HACK_SRC)/fps.h
+companion.o: $(srcdir)/gllist.h
+companion.o: $(srcdir)/gltrackball.h
+companion.o: $(HACK_SRC)/recanim.h
+companion.o: $(srcdir)/rotator.h
+companion.o: $(HACK_SRC)/screenhackI.h
+companion.o: $(UTILS_SRC)/colors.h
+companion.o: $(UTILS_SRC)/erase.h
+companion.o: $(UTILS_SRC)/font-retry.h
+companion.o: $(UTILS_SRC)/grabscreen.h
+companion.o: $(UTILS_SRC)/hsv.h
+companion.o: $(UTILS_SRC)/resources.h
+companion.o: $(UTILS_SRC)/usleep.h
+companion.o: $(UTILS_SRC)/visual.h
+companion.o: $(UTILS_SRC)/yarandom.h
+companion.o: $(HACK_SRC)/ximage-loader.h
+companion.o: $(HACK_SRC)/xlockmoreI.h
+companion.o: $(HACK_SRC)/xlockmore.h
+companion_quad.o: ../../config.h
+companion_quad.o: $(srcdir)/gllist.h
+cow_face.o: ../../config.h
+cow_face.o: $(srcdir)/gllist.h
+cow_hide.o: ../../config.h
+cow_hide.o: $(srcdir)/gllist.h
+cow_hoofs.o: ../../config.h
+cow_hoofs.o: $(srcdir)/gllist.h
+cow_horns.o: ../../config.h
+cow_horns.o: $(srcdir)/gllist.h
+cow_tail.o: ../../config.h
+cow_tail.o: $(srcdir)/gllist.h
+cow_udder.o: ../../config.h
+cow_udder.o: $(srcdir)/gllist.h
+crackberg.o: ../../config.h
+crackberg.o: $(HACK_SRC)/fps.h
+crackberg.o: $(HACK_SRC)/recanim.h
+crackberg.o: $(HACK_SRC)/screenhackI.h
+crackberg.o: $(UTILS_SRC)/colors.h
+crackberg.o: $(UTILS_SRC)/erase.h
+crackberg.o: $(UTILS_SRC)/font-retry.h
+crackberg.o: $(UTILS_SRC)/grabscreen.h
+crackberg.o: $(UTILS_SRC)/hsv.h
+crackberg.o: $(UTILS_SRC)/resources.h
+crackberg.o: $(UTILS_SRC)/usleep.h
+crackberg.o: $(UTILS_SRC)/visual.h
+crackberg.o: $(UTILS_SRC)/yarandom.h
+crackberg.o: $(HACK_SRC)/xlockmoreI.h
+crackberg.o: $(HACK_SRC)/xlockmore.h
+crumbler.o: ../../config.h
+crumbler.o: $(HACK_SRC)/fps.h
+crumbler.o: $(srcdir)/gltrackball.h
+crumbler.o: $(srcdir)/quickhull.h
+crumbler.o: $(HACK_SRC)/recanim.h
+crumbler.o: $(srcdir)/rotator.h
+crumbler.o: $(HACK_SRC)/screenhackI.h
+crumbler.o: $(UTILS_SRC)/colors.h
+crumbler.o: $(UTILS_SRC)/erase.h
+crumbler.o: $(UTILS_SRC)/font-retry.h
+crumbler.o: $(UTILS_SRC)/grabscreen.h
+crumbler.o: $(UTILS_SRC)/hsv.h
+crumbler.o: $(UTILS_SRC)/resources.h
+crumbler.o: $(UTILS_SRC)/usleep.h
+crumbler.o: $(UTILS_SRC)/visual.h
+crumbler.o: $(UTILS_SRC)/yarandom.h
+crumbler.o: $(HACK_SRC)/xlockmoreI.h
+crumbler.o: $(HACK_SRC)/xlockmore.h
+cube21.o: ../../config.h
+cube21.o: $(HACK_SRC)/fps.h
+cube21.o: $(srcdir)/gltrackball.h
+cube21.o: $(HACK_SRC)/recanim.h
+cube21.o: $(HACK_SRC)/screenhackI.h
+cube21.o: $(UTILS_SRC)/colors.h
+cube21.o: $(UTILS_SRC)/erase.h
+cube21.o: $(UTILS_SRC)/font-retry.h
+cube21.o: $(UTILS_SRC)/grabscreen.h
+cube21.o: $(UTILS_SRC)/hsv.h
+cube21.o: $(UTILS_SRC)/resources.h
+cube21.o: $(UTILS_SRC)/usleep.h
+cube21.o: $(UTILS_SRC)/visual.h
+cube21.o: $(UTILS_SRC)/yarandom.h
+cube21.o: $(HACK_SRC)/xlockmoreI.h
+cube21.o: $(HACK_SRC)/xlockmore.h
+cubenetic.o: ../../config.h
+cubenetic.o: $(HACK_SRC)/fps.h
+cubenetic.o: $(srcdir)/gltrackball.h
+cubenetic.o: $(HACK_SRC)/recanim.h
+cubenetic.o: $(srcdir)/rotator.h
+cubenetic.o: $(HACK_SRC)/screenhackI.h
+cubenetic.o: $(UTILS_SRC)/colors.h
+cubenetic.o: $(UTILS_SRC)/erase.h
+cubenetic.o: $(UTILS_SRC)/font-retry.h
+cubenetic.o: $(UTILS_SRC)/grabscreen.h
+cubenetic.o: $(UTILS_SRC)/hsv.h
+cubenetic.o: $(UTILS_SRC)/resources.h
+cubenetic.o: $(UTILS_SRC)/usleep.h
+cubenetic.o: $(UTILS_SRC)/visual.h
+cubenetic.o: $(UTILS_SRC)/yarandom.h
+cubenetic.o: $(HACK_SRC)/xlockmoreI.h
+cubenetic.o: $(HACK_SRC)/xlockmore.h
+cubestack.o: ../../config.h
+cubestack.o: $(HACK_SRC)/fps.h
+cubestack.o: $(srcdir)/gltrackball.h
+cubestack.o: $(HACK_SRC)/recanim.h
+cubestack.o: $(srcdir)/rotator.h
+cubestack.o: $(HACK_SRC)/screenhackI.h
+cubestack.o: $(UTILS_SRC)/colors.h
+cubestack.o: $(UTILS_SRC)/erase.h
+cubestack.o: $(UTILS_SRC)/font-retry.h
+cubestack.o: $(UTILS_SRC)/grabscreen.h
+cubestack.o: $(UTILS_SRC)/hsv.h
+cubestack.o: $(UTILS_SRC)/resources.h
+cubestack.o: $(UTILS_SRC)/usleep.h
+cubestack.o: $(UTILS_SRC)/visual.h
+cubestack.o: $(UTILS_SRC)/yarandom.h
+cubestack.o: $(HACK_SRC)/xlockmoreI.h
+cubestack.o: $(HACK_SRC)/xlockmore.h
+cubestorm.o: ../../config.h
+cubestorm.o: $(HACK_SRC)/fps.h
+cubestorm.o: $(srcdir)/gltrackball.h
+cubestorm.o: $(HACK_SRC)/recanim.h
+cubestorm.o: $(srcdir)/rotator.h
+cubestorm.o: $(HACK_SRC)/screenhackI.h
+cubestorm.o: $(UTILS_SRC)/colors.h
+cubestorm.o: $(UTILS_SRC)/erase.h
+cubestorm.o: $(UTILS_SRC)/font-retry.h
+cubestorm.o: $(UTILS_SRC)/grabscreen.h
+cubestorm.o: $(UTILS_SRC)/hsv.h
+cubestorm.o: $(UTILS_SRC)/resources.h
+cubestorm.o: $(UTILS_SRC)/usleep.h
+cubestorm.o: $(UTILS_SRC)/visual.h
+cubestorm.o: $(UTILS_SRC)/yarandom.h
+cubestorm.o: $(HACK_SRC)/xlockmoreI.h
+cubestorm.o: $(HACK_SRC)/xlockmore.h
+cubetwist.o: ../../config.h
+cubetwist.o: $(HACK_SRC)/fps.h
+cubetwist.o: $(srcdir)/gltrackball.h
+cubetwist.o: $(srcdir)/normals.h
+cubetwist.o: $(HACK_SRC)/recanim.h
+cubetwist.o: $(srcdir)/rotator.h
+cubetwist.o: $(HACK_SRC)/screenhackI.h
+cubetwist.o: $(UTILS_SRC)/colors.h
+cubetwist.o: $(UTILS_SRC)/erase.h
+cubetwist.o: $(UTILS_SRC)/font-retry.h
+cubetwist.o: $(UTILS_SRC)/grabscreen.h
+cubetwist.o: $(UTILS_SRC)/hsv.h
+cubetwist.o: $(UTILS_SRC)/resources.h
+cubetwist.o: $(UTILS_SRC)/usleep.h
+cubetwist.o: $(UTILS_SRC)/visual.h
+cubetwist.o: $(UTILS_SRC)/yarandom.h
+cubetwist.o: $(HACK_SRC)/xlockmoreI.h
+cubetwist.o: $(HACK_SRC)/xlockmore.h
+cubicgrid.o: ../../config.h
+cubicgrid.o: $(HACK_SRC)/fps.h
+cubicgrid.o: $(srcdir)/gltrackball.h
+cubicgrid.o: $(HACK_SRC)/recanim.h
+cubicgrid.o: $(srcdir)/rotator.h
+cubicgrid.o: $(HACK_SRC)/screenhackI.h
+cubicgrid.o: $(UTILS_SRC)/colors.h
+cubicgrid.o: $(UTILS_SRC)/erase.h
+cubicgrid.o: $(UTILS_SRC)/font-retry.h
+cubicgrid.o: $(UTILS_SRC)/grabscreen.h
+cubicgrid.o: $(UTILS_SRC)/hsv.h
+cubicgrid.o: $(UTILS_SRC)/resources.h
+cubicgrid.o: $(UTILS_SRC)/usleep.h
+cubicgrid.o: $(UTILS_SRC)/visual.h
+cubicgrid.o: $(UTILS_SRC)/yarandom.h
+cubicgrid.o: $(HACK_SRC)/xlockmoreI.h
+cubicgrid.o: $(HACK_SRC)/xlockmore.h
+dangerball.o: ../../config.h
+dangerball.o: $(HACK_SRC)/fps.h
+dangerball.o: $(srcdir)/gltrackball.h
+dangerball.o: $(HACK_SRC)/recanim.h
+dangerball.o: $(srcdir)/rotator.h
+dangerball.o: $(HACK_SRC)/screenhackI.h
+dangerball.o: $(srcdir)/sphere.h
+dangerball.o: $(srcdir)/tube.h
+dangerball.o: $(UTILS_SRC)/colors.h
+dangerball.o: $(UTILS_SRC)/erase.h
+dangerball.o: $(UTILS_SRC)/font-retry.h
+dangerball.o: $(UTILS_SRC)/grabscreen.h
+dangerball.o: $(UTILS_SRC)/hsv.h
+dangerball.o: $(UTILS_SRC)/resources.h
+dangerball.o: $(UTILS_SRC)/usleep.h
+dangerball.o: $(UTILS_SRC)/visual.h
+dangerball.o: $(UTILS_SRC)/yarandom.h
+dangerball.o: $(HACK_SRC)/xlockmoreI.h
+dangerball.o: $(HACK_SRC)/xlockmore.h
+discoball.o: ../../config.h
+discoball.o: $(HACK_SRC)/fps.h
+discoball.o: $(srcdir)/gltrackball.h
+discoball.o: $(srcdir)/normals.h
+discoball.o: $(HACK_SRC)/recanim.h
+discoball.o: $(srcdir)/rotator.h
+discoball.o: $(HACK_SRC)/screenhackI.h
+discoball.o: $(UTILS_SRC)/colors.h
+discoball.o: $(UTILS_SRC)/erase.h
+discoball.o: $(UTILS_SRC)/font-retry.h
+discoball.o: $(UTILS_SRC)/grabscreen.h
+discoball.o: $(UTILS_SRC)/hsv.h
+discoball.o: $(UTILS_SRC)/resources.h
+discoball.o: $(UTILS_SRC)/usleep.h
+discoball.o: $(UTILS_SRC)/visual.h
+discoball.o: $(UTILS_SRC)/yarandom.h
+discoball.o: $(HACK_SRC)/xlockmoreI.h
+discoball.o: $(HACK_SRC)/xlockmore.h
+dnalogo.o: ../../config.h
+dnalogo.o: $(HACK_SRC)/fps.h
+dnalogo.o: $(srcdir)/gltrackball.h
+dnalogo.o: $(srcdir)/normals.h
+dnalogo.o: $(HACK_SRC)/recanim.h
+dnalogo.o: $(srcdir)/rotator.h
+dnalogo.o: $(HACK_SRC)/screenhackI.h
+dnalogo.o: $(srcdir)/sphere.h
+dnalogo.o: $(srcdir)/texfont.h
+dnalogo.o: $(srcdir)/tube.h
+dnalogo.o: $(UTILS_SRC)/colors.h
+dnalogo.o: $(UTILS_SRC)/erase.h
+dnalogo.o: $(UTILS_SRC)/font-retry.h
+dnalogo.o: $(UTILS_SRC)/grabscreen.h
+dnalogo.o: $(UTILS_SRC)/hsv.h
+dnalogo.o: $(UTILS_SRC)/resources.h
+dnalogo.o: $(UTILS_SRC)/usleep.h
+dnalogo.o: $(UTILS_SRC)/utf8wc.h
+dnalogo.o: $(UTILS_SRC)/visual.h
+dnalogo.o: $(UTILS_SRC)/yarandom.h
+dnalogo.o: $(HACK_SRC)/xlockmoreI.h
+dnalogo.o: $(HACK_SRC)/xlockmore.h
+dolphin.o: $(srcdir)/atlantis.h
+dolphin.o: ../../config.h
+dolphin.o: $(HACK_SRC)/fps.h
+dolphin.o: $(HACK_SRC)/recanim.h
+dolphin.o: $(HACK_SRC)/screenhackI.h
+dolphin.o: $(UTILS_SRC)/colors.h
+dolphin.o: $(UTILS_SRC)/font-retry.h
+dolphin.o: $(UTILS_SRC)/grabscreen.h
+dolphin.o: $(UTILS_SRC)/hsv.h
+dolphin.o: $(UTILS_SRC)/resources.h
+dolphin.o: $(UTILS_SRC)/usleep.h
+dolphin.o: $(UTILS_SRC)/visual.h
+dolphin.o: $(UTILS_SRC)/yarandom.h
+dropshadow.o: ../../config.h
+dropshadow.o: $(srcdir)/dropshadow.h
+dropshadow.o: $(HACK_SRC)/fps.h
+dropshadow.o: $(HACK_SRC)/recanim.h
+dropshadow.o: $(HACK_SRC)/screenhackI.h
+dropshadow.o: $(UTILS_SRC)/colors.h
+dropshadow.o: $(UTILS_SRC)/erase.h
+dropshadow.o: $(UTILS_SRC)/font-retry.h
+dropshadow.o: $(UTILS_SRC)/grabscreen.h
+dropshadow.o: $(UTILS_SRC)/hsv.h
+dropshadow.o: $(UTILS_SRC)/resources.h
+dropshadow.o: $(UTILS_SRC)/usleep.h
+dropshadow.o: $(UTILS_SRC)/visual.h
+dropshadow.o: $(UTILS_SRC)/yarandom.h
+dropshadow.o: $(HACK_SRC)/xlockmoreI.h
+dymaxionmap-coords.o: ../../config.h
+dymaxionmap-coords.o: $(srcdir)/dymaxionmap-coords.h
+dymaxionmap.o: ../../config.h
+dymaxionmap.o: $(srcdir)/dymaxionmap-coords.h
+dymaxionmap.o: $(HACK_SRC)/fps.h
+dymaxionmap.o: $(srcdir)/gltrackball.h
+dymaxionmap.o: $(HACK_SRC)/images/gen/earth_flat_png.h
+dymaxionmap.o: $(HACK_SRC)/images/gen/earth_night_png.h
+dymaxionmap.o: $(HACK_SRC)/images/gen/earth_png.h
+dymaxionmap.o: $(HACK_SRC)/images/gen/ground_png.h
+dymaxionmap.o: $(srcdir)/normals.h
+dymaxionmap.o: $(HACK_SRC)/recanim.h
+dymaxionmap.o: $(srcdir)/rotator.h
+dymaxionmap.o: $(HACK_SRC)/screenhackI.h
+dymaxionmap.o: $(srcdir)/sphere.h
+dymaxionmap.o: $(srcdir)/texfont.h
+dymaxionmap.o: $(UTILS_SRC)/colors.h
+dymaxionmap.o: $(UTILS_SRC)/erase.h
+dymaxionmap.o: $(UTILS_SRC)/font-retry.h
+dymaxionmap.o: $(UTILS_SRC)/grabscreen.h
+dymaxionmap.o: $(UTILS_SRC)/hsv.h
+dymaxionmap.o: $(UTILS_SRC)/resources.h
+dymaxionmap.o: $(UTILS_SRC)/usleep.h
+dymaxionmap.o: $(UTILS_SRC)/visual.h
+dymaxionmap.o: $(UTILS_SRC)/yarandom.h
+dymaxionmap.o: $(HACK_SRC)/ximage-loader.h
+dymaxionmap.o: $(HACK_SRC)/xlockmoreI.h
+dymaxionmap.o: $(HACK_SRC)/xlockmore.h
+endgame.o: $(srcdir)/chessgames.h
+endgame.o: $(srcdir)/chessmodels.h
+endgame.o: ../../config.h
+endgame.o: $(HACK_SRC)/fps.h
+endgame.o: $(srcdir)/gltrackball.h
+endgame.o: $(HACK_SRC)/recanim.h
+endgame.o: $(HACK_SRC)/screenhackI.h
+endgame.o: $(UTILS_SRC)/colors.h
+endgame.o: $(UTILS_SRC)/erase.h
+endgame.o: $(UTILS_SRC)/font-retry.h
+endgame.o: $(UTILS_SRC)/grabscreen.h
+endgame.o: $(UTILS_SRC)/hsv.h
+endgame.o: $(UTILS_SRC)/resources.h
+endgame.o: $(UTILS_SRC)/usleep.h
+endgame.o: $(UTILS_SRC)/visual.h
+endgame.o: $(UTILS_SRC)/yarandom.h
+endgame.o: $(HACK_SRC)/xlockmoreI.h
+endgame.o: $(HACK_SRC)/xlockmore.h
+energystream.o: ../../config.h
+energystream.o: $(HACK_SRC)/fps.h
+energystream.o: $(srcdir)/gltrackball.h
+energystream.o: $(HACK_SRC)/recanim.h
+energystream.o: $(srcdir)/rotator.h
+energystream.o: $(HACK_SRC)/screenhackI.h
+energystream.o: $(UTILS_SRC)/colors.h
+energystream.o: $(UTILS_SRC)/erase.h
+energystream.o: $(UTILS_SRC)/font-retry.h
+energystream.o: $(UTILS_SRC)/grabscreen.h
+energystream.o: $(UTILS_SRC)/hsv.h
+energystream.o: $(UTILS_SRC)/resources.h
+energystream.o: $(UTILS_SRC)/usleep.h
+energystream.o: $(UTILS_SRC)/visual.h
+energystream.o: $(UTILS_SRC)/yarandom.h
+energystream.o: $(HACK_SRC)/xlockmoreI.h
+energystream.o: $(HACK_SRC)/xlockmore.h
+engine.o: ../../config.h
+engine.o: $(HACK_SRC)/fps.h
+engine.o: $(srcdir)/gltrackball.h
+engine.o: $(HACK_SRC)/recanim.h
+engine.o: $(srcdir)/rotator.h
+engine.o: $(HACK_SRC)/screenhackI.h
+engine.o: $(srcdir)/texfont.h
+engine.o: $(UTILS_SRC)/colors.h
+engine.o: $(UTILS_SRC)/erase.h
+engine.o: $(UTILS_SRC)/font-retry.h
+engine.o: $(UTILS_SRC)/grabscreen.h
+engine.o: $(UTILS_SRC)/hsv.h
+engine.o: $(UTILS_SRC)/resources.h
+engine.o: $(UTILS_SRC)/usleep.h
+engine.o: $(UTILS_SRC)/visual.h
+engine.o: $(UTILS_SRC)/yarandom.h
+engine.o: $(HACK_SRC)/xlockmoreI.h
+engine.o: $(HACK_SRC)/xlockmore.h
+erase-gl.o: ../../config.h
+erase-gl.o: $(UTILS_SRC)/erase.h
+erase-gl.o: $(UTILS_SRC)/utils.h
+esper.o: ../../config.h
+esper.o: $(HACK_SRC)/fps.h
+esper.o: $(srcdir)/grab-ximage.h
+esper.o: $(HACK_SRC)/recanim.h
+esper.o: $(HACK_SRC)/screenhackI.h
+esper.o: $(srcdir)/texfont.h
+esper.o: $(UTILS_SRC)/colors.h
+esper.o: $(UTILS_SRC)/erase.h
+esper.o: $(UTILS_SRC)/font-retry.h
+esper.o: $(UTILS_SRC)/grabscreen.h
+esper.o: $(UTILS_SRC)/hsv.h
+esper.o: $(UTILS_SRC)/resources.h
+esper.o: $(UTILS_SRC)/usleep.h
+esper.o: $(UTILS_SRC)/visual.h
+esper.o: $(UTILS_SRC)/xshm.h
+esper.o: $(UTILS_SRC)/yarandom.h
+esper.o: $(HACK_SRC)/xlockmoreI.h
+esper.o: $(HACK_SRC)/xlockmore.h
+extrusion-helix2.o: ../../config.h
+extrusion-helix2.o: $(srcdir)/extrusion.h
+extrusion-helix3.o: ../../config.h
+extrusion-helix3.o: $(srcdir)/extrusion.h
+extrusion-helix4.o: ../../config.h
+extrusion-helix4.o: $(srcdir)/extrusion.h
+extrusion-joinoffset.o: ../../config.h
+extrusion-joinoffset.o: $(srcdir)/extrusion.h
+extrusion.o: ../../config.h
+extrusion.o: $(srcdir)/extrusion.h
+extrusion.o: $(HACK_SRC)/fps.h
+extrusion.o: $(srcdir)/gltrackball.h
+extrusion.o: $(HACK_SRC)/recanim.h
+extrusion.o: $(srcdir)/rotator.h
+extrusion.o: $(HACK_SRC)/screenhackI.h
+extrusion.o: $(UTILS_SRC)/colors.h
+extrusion.o: $(UTILS_SRC)/erase.h
+extrusion.o: $(UTILS_SRC)/font-retry.h
+extrusion.o: $(UTILS_SRC)/grabscreen.h
+extrusion.o: $(UTILS_SRC)/hsv.h
+extrusion.o: $(UTILS_SRC)/resources.h
+extrusion.o: $(UTILS_SRC)/usleep.h
+extrusion.o: $(UTILS_SRC)/visual.h
+extrusion.o: $(UTILS_SRC)/yarandom.h
+extrusion.o: $(HACK_SRC)/ximage-loader.h
+extrusion.o: $(HACK_SRC)/xlockmoreI.h
+extrusion.o: $(HACK_SRC)/xlockmore.h
+extrusion-screw.o: ../../config.h
+extrusion-screw.o: $(srcdir)/extrusion.h
+extrusion-taper.o: ../../config.h
+extrusion-taper.o: $(srcdir)/extrusion.h
+extrusion-twistoid.o: ../../config.h
+extrusion-twistoid.o: $(srcdir)/extrusion.h
+flipflop.o: ../../config.h
+flipflop.o: $(HACK_SRC)/fps.h
+flipflop.o: $(srcdir)/gltrackball.h
+flipflop.o: $(srcdir)/grab-ximage.h
+flipflop.o: $(HACK_SRC)/recanim.h
+flipflop.o: $(HACK_SRC)/screenhackI.h
+flipflop.o: $(UTILS_SRC)/colors.h
+flipflop.o: $(UTILS_SRC)/erase.h
+flipflop.o: $(UTILS_SRC)/font-retry.h
+flipflop.o: $(UTILS_SRC)/grabscreen.h
+flipflop.o: $(UTILS_SRC)/hsv.h
+flipflop.o: $(UTILS_SRC)/resources.h
+flipflop.o: $(UTILS_SRC)/usleep.h
+flipflop.o: $(UTILS_SRC)/visual.h
+flipflop.o: $(UTILS_SRC)/yarandom.h
+flipflop.o: $(HACK_SRC)/xlockmoreI.h
+flipflop.o: $(HACK_SRC)/xlockmore.h
+flipscreen3d.o: ../../config.h
+flipscreen3d.o: $(HACK_SRC)/fps.h
+flipscreen3d.o: $(srcdir)/gltrackball.h
+flipscreen3d.o: $(srcdir)/grab-ximage.h
+flipscreen3d.o: $(HACK_SRC)/recanim.h
+flipscreen3d.o: $(HACK_SRC)/screenhackI.h
+flipscreen3d.o: $(UTILS_SRC)/colors.h
+flipscreen3d.o: $(UTILS_SRC)/erase.h
+flipscreen3d.o: $(UTILS_SRC)/font-retry.h
+flipscreen3d.o: $(UTILS_SRC)/grabscreen.h
+flipscreen3d.o: $(UTILS_SRC)/hsv.h
+flipscreen3d.o: $(UTILS_SRC)/resources.h
+flipscreen3d.o: $(UTILS_SRC)/usleep.h
+flipscreen3d.o: $(UTILS_SRC)/visual.h
+flipscreen3d.o: $(UTILS_SRC)/yarandom.h
+flipscreen3d.o: $(HACK_SRC)/xlockmoreI.h
+flipscreen3d.o: $(HACK_SRC)/xlockmore.h
+fliptext.o: ../../config.h
+fliptext.o: $(HACK_SRC)/fps.h
+fliptext.o: $(HACK_SRC)/recanim.h
+fliptext.o: $(HACK_SRC)/screenhackI.h
+fliptext.o: $(srcdir)/texfont.h
+fliptext.o: $(UTILS_SRC)/colors.h
+fliptext.o: $(UTILS_SRC)/erase.h
+fliptext.o: $(UTILS_SRC)/font-retry.h
+fliptext.o: $(UTILS_SRC)/grabscreen.h
+fliptext.o: $(UTILS_SRC)/hsv.h
+fliptext.o: $(UTILS_SRC)/resources.h
+fliptext.o: $(UTILS_SRC)/textclient.h
+fliptext.o: $(UTILS_SRC)/usleep.h
+fliptext.o: $(UTILS_SRC)/visual.h
+fliptext.o: $(UTILS_SRC)/yarandom.h
+fliptext.o: $(HACK_SRC)/xlockmoreI.h
+fliptext.o: $(HACK_SRC)/xlockmore.h
+flurry.o: ../../config.h
+flurry.o: $(srcdir)/flurry.h
+flurry.o: $(HACK_SRC)/fps.h
+flurry.o: $(srcdir)/gltrackball.h
+flurry.o: $(HACK_SRC)/recanim.h
+flurry.o: $(srcdir)/rotator.h
+flurry.o: $(HACK_SRC)/screenhackI.h
+flurry.o: $(UTILS_SRC)/colors.h
+flurry.o: $(UTILS_SRC)/erase.h
+flurry.o: $(UTILS_SRC)/font-retry.h
+flurry.o: $(UTILS_SRC)/grabscreen.h
+flurry.o: $(UTILS_SRC)/hsv.h
+flurry.o: $(UTILS_SRC)/resources.h
+flurry.o: $(UTILS_SRC)/usleep.h
+flurry.o: $(UTILS_SRC)/visual.h
+flurry.o: $(UTILS_SRC)/yarandom.h
+flurry.o: $(HACK_SRC)/xlockmoreI.h
+flurry.o: $(HACK_SRC)/xlockmore.h
+flurry-smoke.o: ../../config.h
+flurry-smoke.o: $(srcdir)/flurry.h
+flurry-smoke.o: $(srcdir)/gltrackball.h
+flurry-smoke.o: $(srcdir)/rotator.h
+flurry-smoke.o: $(UTILS_SRC)/yarandom.h
+flurry-spark.o: ../../config.h
+flurry-spark.o: $(srcdir)/flurry.h
+flurry-spark.o: $(srcdir)/gltrackball.h
+flurry-spark.o: $(srcdir)/rotator.h
+flurry-spark.o: $(UTILS_SRC)/yarandom.h
+flurry-star.o: ../../config.h
+flurry-star.o: $(srcdir)/flurry.h
+flurry-star.o: $(srcdir)/gltrackball.h
+flurry-star.o: $(srcdir)/rotator.h
+flurry-star.o: $(UTILS_SRC)/yarandom.h
+flurry-texture.o: ../../config.h
+flurry-texture.o: $(srcdir)/flurry.h
+flurry-texture.o: $(srcdir)/gltrackball.h
+flurry-texture.o: $(srcdir)/rotator.h
+flurry-texture.o: $(UTILS_SRC)/yarandom.h
+flyingtoasters.o: ../../config.h
+flyingtoasters.o: $(HACK_SRC)/fps.h
+flyingtoasters.o: $(srcdir)/gllist.h
+flyingtoasters.o: $(srcdir)/gltrackball.h
+flyingtoasters.o: $(HACK_SRC)/images/gen/chromesphere_png.h
+flyingtoasters.o: $(HACK_SRC)/images/gen/toast_png.h
+flyingtoasters.o: $(HACK_SRC)/recanim.h
+flyingtoasters.o: $(HACK_SRC)/screenhackI.h
+flyingtoasters.o: $(UTILS_SRC)/colors.h
+flyingtoasters.o: $(UTILS_SRC)/erase.h
+flyingtoasters.o: $(UTILS_SRC)/font-retry.h
+flyingtoasters.o: $(UTILS_SRC)/grabscreen.h
+flyingtoasters.o: $(UTILS_SRC)/hsv.h
+flyingtoasters.o: $(UTILS_SRC)/resources.h
+flyingtoasters.o: $(UTILS_SRC)/usleep.h
+flyingtoasters.o: $(UTILS_SRC)/visual.h
+flyingtoasters.o: $(UTILS_SRC)/yarandom.h
+flyingtoasters.o: $(HACK_SRC)/ximage-loader.h
+flyingtoasters.o: $(HACK_SRC)/xlockmoreI.h
+flyingtoasters.o: $(HACK_SRC)/xlockmore.h
+fps-gl.o: ../../config.h
+fps-gl.o: $(HACK_SRC)/fpsI.h
+fps-gl.o: $(HACK_SRC)/fps.h
+fps-gl.o: $(HACK_SRC)/recanim.h
+fps-gl.o: $(HACK_SRC)/screenhackI.h
+fps-gl.o: $(srcdir)/texfont.h
+fps-gl.o: $(UTILS_SRC)/colors.h
+fps-gl.o: $(UTILS_SRC)/erase.h
+fps-gl.o: $(UTILS_SRC)/font-retry.h
+fps-gl.o: $(UTILS_SRC)/grabscreen.h
+fps-gl.o: $(UTILS_SRC)/hsv.h
+fps-gl.o: $(UTILS_SRC)/resources.h
+fps-gl.o: $(UTILS_SRC)/usleep.h
+fps-gl.o: $(UTILS_SRC)/visual.h
+fps-gl.o: $(UTILS_SRC)/yarandom.h
+fps-gl.o: $(HACK_SRC)/xlockmoreI.h
+gears.o: ../../config.h
+gears.o: $(HACK_SRC)/fps.h
+gears.o: $(srcdir)/gltrackball.h
+gears.o: $(srcdir)/involute.h
+gears.o: $(srcdir)/normals.h
+gears.o: $(HACK_SRC)/recanim.h
+gears.o: $(srcdir)/rotator.h
+gears.o: $(HACK_SRC)/screenhackI.h
+gears.o: $(srcdir)/tube.h
+gears.o: $(UTILS_SRC)/colors.h
+gears.o: $(UTILS_SRC)/erase.h
+gears.o: $(UTILS_SRC)/font-retry.h
+gears.o: $(UTILS_SRC)/grabscreen.h
+gears.o: $(UTILS_SRC)/hsv.h
+gears.o: $(UTILS_SRC)/resources.h
+gears.o: $(UTILS_SRC)/usleep.h
+gears.o: $(UTILS_SRC)/visual.h
+gears.o: $(UTILS_SRC)/yarandom.h
+gears.o: $(HACK_SRC)/xlockmoreI.h
+gears.o: $(HACK_SRC)/xlockmore.h
+geodesicgears.o: ../../config.h
+geodesicgears.o: $(HACK_SRC)/fps.h
+geodesicgears.o: $(srcdir)/gllist.h
+geodesicgears.o: $(srcdir)/gltrackball.h
+geodesicgears.o: $(srcdir)/involute.h
+geodesicgears.o: $(srcdir)/normals.h
+geodesicgears.o: $(HACK_SRC)/recanim.h
+geodesicgears.o: $(srcdir)/rotator.h
+geodesicgears.o: $(HACK_SRC)/screenhackI.h
+geodesicgears.o: $(srcdir)/texfont.h
+geodesicgears.o: $(UTILS_SRC)/colors.h
+geodesicgears.o: $(UTILS_SRC)/erase.h
+geodesicgears.o: $(UTILS_SRC)/font-retry.h
+geodesicgears.o: $(UTILS_SRC)/grabscreen.h
+geodesicgears.o: $(UTILS_SRC)/hsv.h
+geodesicgears.o: $(UTILS_SRC)/resources.h
+geodesicgears.o: $(UTILS_SRC)/usleep.h
+geodesicgears.o: $(UTILS_SRC)/visual.h
+geodesicgears.o: $(UTILS_SRC)/yarandom.h
+geodesicgears.o: $(HACK_SRC)/xlockmoreI.h
+geodesicgears.o: $(HACK_SRC)/xlockmore.h
+geodesic.o: ../../config.h
+geodesic.o: $(HACK_SRC)/fps.h
+geodesic.o: $(srcdir)/gllist.h
+geodesic.o: $(srcdir)/gltrackball.h
+geodesic.o: $(srcdir)/normals.h
+geodesic.o: $(HACK_SRC)/recanim.h
+geodesic.o: $(srcdir)/rotator.h
+geodesic.o: $(HACK_SRC)/screenhackI.h
+geodesic.o: $(UTILS_SRC)/colors.h
+geodesic.o: $(UTILS_SRC)/erase.h
+geodesic.o: $(UTILS_SRC)/font-retry.h
+geodesic.o: $(UTILS_SRC)/grabscreen.h
+geodesic.o: $(UTILS_SRC)/hsv.h
+geodesic.o: $(UTILS_SRC)/resources.h
+geodesic.o: $(UTILS_SRC)/usleep.h
+geodesic.o: $(UTILS_SRC)/visual.h
+geodesic.o: $(UTILS_SRC)/yarandom.h
+geodesic.o: $(HACK_SRC)/xlockmoreI.h
+geodesic.o: $(HACK_SRC)/xlockmore.h
+gflux.o: ../../config.h
+gflux.o: $(HACK_SRC)/fps.h
+gflux.o: $(srcdir)/gltrackball.h
+gflux.o: $(srcdir)/grab-ximage.h
+gflux.o: $(HACK_SRC)/recanim.h
+gflux.o: $(HACK_SRC)/screenhackI.h
+gflux.o: $(UTILS_SRC)/colors.h
+gflux.o: $(UTILS_SRC)/erase.h
+gflux.o: $(UTILS_SRC)/font-retry.h
+gflux.o: $(UTILS_SRC)/grabscreen.h
+gflux.o: $(UTILS_SRC)/hsv.h
+gflux.o: $(UTILS_SRC)/resources.h
+gflux.o: $(UTILS_SRC)/usleep.h
+gflux.o: $(UTILS_SRC)/visual.h
+gflux.o: $(UTILS_SRC)/yarandom.h
+gflux.o: $(HACK_SRC)/xlockmoreI.h
+gflux.o: $(HACK_SRC)/xlockmore.h
+glblur.o: ../../config.h
+glblur.o: $(HACK_SRC)/fps.h
+glblur.o: $(srcdir)/gltrackball.h
+glblur.o: $(HACK_SRC)/recanim.h
+glblur.o: $(srcdir)/rotator.h
+glblur.o: $(HACK_SRC)/screenhackI.h
+glblur.o: $(UTILS_SRC)/colors.h
+glblur.o: $(UTILS_SRC)/erase.h
+glblur.o: $(UTILS_SRC)/font-retry.h
+glblur.o: $(UTILS_SRC)/grabscreen.h
+glblur.o: $(UTILS_SRC)/hsv.h
+glblur.o: $(UTILS_SRC)/resources.h
+glblur.o: $(UTILS_SRC)/usleep.h
+glblur.o: $(UTILS_SRC)/visual.h
+glblur.o: $(UTILS_SRC)/yarandom.h
+glblur.o: $(HACK_SRC)/xlockmoreI.h
+glblur.o: $(HACK_SRC)/xlockmore.h
+glcells.o: ../../config.h
+glcells.o: $(HACK_SRC)/fps.h
+glcells.o: $(HACK_SRC)/recanim.h
+glcells.o: $(HACK_SRC)/screenhackI.h
+glcells.o: $(UTILS_SRC)/colors.h
+glcells.o: $(UTILS_SRC)/erase.h
+glcells.o: $(UTILS_SRC)/font-retry.h
+glcells.o: $(UTILS_SRC)/grabscreen.h
+glcells.o: $(UTILS_SRC)/hsv.h
+glcells.o: $(UTILS_SRC)/resources.h
+glcells.o: $(UTILS_SRC)/usleep.h
+glcells.o: $(UTILS_SRC)/visual.h
+glcells.o: $(UTILS_SRC)/yarandom.h
+glcells.o: $(HACK_SRC)/xlockmoreI.h
+glcells.o: $(HACK_SRC)/xlockmore.h
+gleidescope.o: ../../config.h
+gleidescope.o: $(HACK_SRC)/fps.h
+gleidescope.o: $(srcdir)/grab-ximage.h
+gleidescope.o: $(HACK_SRC)/recanim.h
+gleidescope.o: $(HACK_SRC)/screenhackI.h
+gleidescope.o: $(UTILS_SRC)/colors.h
+gleidescope.o: $(UTILS_SRC)/erase.h
+gleidescope.o: $(UTILS_SRC)/font-retry.h
+gleidescope.o: $(UTILS_SRC)/grabscreen.h
+gleidescope.o: $(UTILS_SRC)/hsv.h
+gleidescope.o: $(UTILS_SRC)/resources.h
+gleidescope.o: $(UTILS_SRC)/usleep.h
+gleidescope.o: $(UTILS_SRC)/visual.h
+gleidescope.o: $(UTILS_SRC)/yarandom.h
+gleidescope.o: $(HACK_SRC)/ximage-loader.h
+gleidescope.o: $(HACK_SRC)/xlockmoreI.h
+gleidescope.o: $(HACK_SRC)/xlockmore.h
+glforestfire.o: ../../config.h
+glforestfire.o: $(HACK_SRC)/fps.h
+glforestfire.o: $(srcdir)/gltrackball.h
+glforestfire.o: $(HACK_SRC)/images/gen/ground_png.h
+glforestfire.o: $(HACK_SRC)/images/gen/tree_png.h
+glforestfire.o: $(HACK_SRC)/recanim.h
+glforestfire.o: $(HACK_SRC)/screenhackI.h
+glforestfire.o: $(UTILS_SRC)/colors.h
+glforestfire.o: $(UTILS_SRC)/erase.h
+glforestfire.o: $(UTILS_SRC)/font-retry.h
+glforestfire.o: $(UTILS_SRC)/grabscreen.h
+glforestfire.o: $(UTILS_SRC)/hsv.h
+glforestfire.o: $(UTILS_SRC)/resources.h
+glforestfire.o: $(UTILS_SRC)/usleep.h
+glforestfire.o: $(UTILS_SRC)/visual.h
+glforestfire.o: $(UTILS_SRC)/yarandom.h
+glforestfire.o: $(HACK_SRC)/ximage-loader.h
+glforestfire.o: $(HACK_SRC)/xlockmoreI.h
+glforestfire.o: $(HACK_SRC)/xlockmore.h
+glhanoi.o: ../../config.h
+glhanoi.o: $(HACK_SRC)/fps.h
+glhanoi.o: $(HACK_SRC)/recanim.h
+glhanoi.o: $(srcdir)/rotator.h
+glhanoi.o: $(HACK_SRC)/screenhackI.h
+glhanoi.o: $(UTILS_SRC)/colors.h
+glhanoi.o: $(UTILS_SRC)/erase.h
+glhanoi.o: $(UTILS_SRC)/font-retry.h
+glhanoi.o: $(UTILS_SRC)/grabscreen.h
+glhanoi.o: $(UTILS_SRC)/hsv.h
+glhanoi.o: $(UTILS_SRC)/resources.h
+glhanoi.o: $(UTILS_SRC)/usleep.h
+glhanoi.o: $(UTILS_SRC)/visual.h
+glhanoi.o: $(UTILS_SRC)/yarandom.h
+glhanoi.o: $(HACK_SRC)/xlockmoreI.h
+glhanoi.o: $(HACK_SRC)/xlockmore.h
+glknots.o: ../../config.h
+glknots.o: $(HACK_SRC)/fps.h
+glknots.o: $(srcdir)/gltrackball.h
+glknots.o: $(HACK_SRC)/recanim.h
+glknots.o: $(srcdir)/rotator.h
+glknots.o: $(HACK_SRC)/screenhackI.h
+glknots.o: $(srcdir)/tube.h
+glknots.o: $(UTILS_SRC)/colors.h
+glknots.o: $(UTILS_SRC)/erase.h
+glknots.o: $(UTILS_SRC)/font-retry.h
+glknots.o: $(UTILS_SRC)/grabscreen.h
+glknots.o: $(UTILS_SRC)/hsv.h
+glknots.o: $(UTILS_SRC)/resources.h
+glknots.o: $(UTILS_SRC)/usleep.h
+glknots.o: $(UTILS_SRC)/visual.h
+glknots.o: $(UTILS_SRC)/yarandom.h
+glknots.o: $(HACK_SRC)/xlockmoreI.h
+glknots.o: $(HACK_SRC)/xlockmore.h
+gllist.o: ../../config.h
+gllist.o: $(srcdir)/gllist.h
+glmatrix.o: ../../config.h
+glmatrix.o: $(HACK_SRC)/fps.h
+glmatrix.o: $(HACK_SRC)/images/gen/matrix3_png.h
+glmatrix.o: $(HACK_SRC)/recanim.h
+glmatrix.o: $(HACK_SRC)/screenhackI.h
+glmatrix.o: $(UTILS_SRC)/colors.h
+glmatrix.o: $(UTILS_SRC)/erase.h
+glmatrix.o: $(UTILS_SRC)/font-retry.h
+glmatrix.o: $(UTILS_SRC)/grabscreen.h
+glmatrix.o: $(UTILS_SRC)/hsv.h
+glmatrix.o: $(UTILS_SRC)/resources.h
+glmatrix.o: $(UTILS_SRC)/usleep.h
+glmatrix.o: $(UTILS_SRC)/visual.h
+glmatrix.o: $(UTILS_SRC)/yarandom.h
+glmatrix.o: $(HACK_SRC)/ximage-loader.h
+glmatrix.o: $(HACK_SRC)/xlockmoreI.h
+glmatrix.o: $(HACK_SRC)/xlockmore.h
+glplanet.o: ../../config.h
+glplanet.o: $(HACK_SRC)/fps.h
+glplanet.o: $(srcdir)/gltrackball.h
+glplanet.o: $(HACK_SRC)/images/gen/earth_night_png.h
+glplanet.o: $(HACK_SRC)/images/gen/earth_png.h
+glplanet.o: $(HACK_SRC)/recanim.h
+glplanet.o: $(srcdir)/rotator.h
+glplanet.o: $(HACK_SRC)/screenhackI.h
+glplanet.o: $(srcdir)/sphere.h
+glplanet.o: $(UTILS_SRC)/colors.h
+glplanet.o: $(UTILS_SRC)/erase.h
+glplanet.o: $(UTILS_SRC)/font-retry.h
+glplanet.o: $(UTILS_SRC)/grabscreen.h
+glplanet.o: $(UTILS_SRC)/hsv.h
+glplanet.o: $(UTILS_SRC)/resources.h
+glplanet.o: $(UTILS_SRC)/usleep.h
+glplanet.o: $(UTILS_SRC)/visual.h
+glplanet.o: $(UTILS_SRC)/yarandom.h
+glplanet.o: $(HACK_SRC)/ximage-loader.h
+glplanet.o: $(HACK_SRC)/xlockmoreI.h
+glplanet.o: $(HACK_SRC)/xlockmore.h
+glschool_alg.o: ../../config.h
+glschool_alg.o: $(srcdir)/glschool_alg.h
+glschool_alg.o: $(UTILS_SRC)/yarandom.h
+glschool_gl.o: ../../config.h
+glschool_gl.o: $(srcdir)/glschool_alg.h
+glschool_gl.o: $(srcdir)/glschool_gl.h
+glschool_gl.o: $(srcdir)/sphere.h
+glschool_gl.o: $(srcdir)/tube.h
+glschool.o: ../../config.h
+glschool.o: $(HACK_SRC)/fps.h
+glschool.o: $(srcdir)/glschool_alg.h
+glschool.o: $(srcdir)/glschool_gl.h
+glschool.o: $(srcdir)/glschool.h
+glschool.o: $(HACK_SRC)/recanim.h
+glschool.o: $(HACK_SRC)/screenhackI.h
+glschool.o: $(UTILS_SRC)/colors.h
+glschool.o: $(UTILS_SRC)/erase.h
+glschool.o: $(UTILS_SRC)/font-retry.h
+glschool.o: $(UTILS_SRC)/grabscreen.h
+glschool.o: $(UTILS_SRC)/hsv.h
+glschool.o: $(UTILS_SRC)/resources.h
+glschool.o: $(UTILS_SRC)/usleep.h
+glschool.o: $(UTILS_SRC)/visual.h
+glschool.o: $(UTILS_SRC)/yarandom.h
+glschool.o: $(HACK_SRC)/xlockmoreI.h
+glschool.o: $(HACK_SRC)/xlockmore.h
+glslideshow.o: ../../config.h
+glslideshow.o: $(HACK_SRC)/fps.h
+glslideshow.o: $(srcdir)/grab-ximage.h
+glslideshow.o: $(HACK_SRC)/recanim.h
+glslideshow.o: $(HACK_SRC)/screenhackI.h
+glslideshow.o: $(srcdir)/texfont.h
+glslideshow.o: $(UTILS_SRC)/colors.h
+glslideshow.o: $(UTILS_SRC)/erase.h
+glslideshow.o: $(UTILS_SRC)/font-retry.h
+glslideshow.o: $(UTILS_SRC)/grabscreen.h
+glslideshow.o: $(UTILS_SRC)/hsv.h
+glslideshow.o: $(UTILS_SRC)/resources.h
+glslideshow.o: $(UTILS_SRC)/usleep.h
+glslideshow.o: $(UTILS_SRC)/visual.h
+glslideshow.o: $(UTILS_SRC)/yarandom.h
+glslideshow.o: $(HACK_SRC)/xlockmoreI.h
+glslideshow.o: $(HACK_SRC)/xlockmore.h
+glsnake.o: ../../config.h
+glsnake.o: $(HACK_SRC)/fps.h
+glsnake.o: $(HACK_SRC)/recanim.h
+glsnake.o: $(HACK_SRC)/screenhackI.h
+glsnake.o: $(srcdir)/texfont.h
+glsnake.o: $(UTILS_SRC)/colors.h
+glsnake.o: $(UTILS_SRC)/erase.h
+glsnake.o: $(UTILS_SRC)/font-retry.h
+glsnake.o: $(UTILS_SRC)/grabscreen.h
+glsnake.o: $(UTILS_SRC)/hsv.h
+glsnake.o: $(UTILS_SRC)/resources.h
+glsnake.o: $(UTILS_SRC)/usleep.h
+glsnake.o: $(UTILS_SRC)/visual.h
+glsnake.o: $(UTILS_SRC)/yarandom.h
+glsnake.o: $(HACK_SRC)/xlockmoreI.h
+glsnake.o: $(HACK_SRC)/xlockmore.h
+gltext.o: ../../config.h
+gltext.o: $(HACK_SRC)/fps.h
+gltext.o: $(srcdir)/gltrackball.h
+gltext.o: $(srcdir)/glut_mroman.h
+gltext.o: $(srcdir)/glut_roman.h
+gltext.o: $(srcdir)/glutstroke.h
+gltext.o: $(HACK_SRC)/recanim.h
+gltext.o: $(srcdir)/rotator.h
+gltext.o: $(HACK_SRC)/screenhackI.h
+gltext.o: $(srcdir)/sphere.h
+gltext.o: $(srcdir)/tube.h
+gltext.o: $(UTILS_SRC)/colors.h
+gltext.o: $(UTILS_SRC)/erase.h
+gltext.o: $(UTILS_SRC)/font-retry.h
+gltext.o: $(UTILS_SRC)/grabscreen.h
+gltext.o: $(UTILS_SRC)/hsv.h
+gltext.o: $(UTILS_SRC)/resources.h
+gltext.o: $(UTILS_SRC)/textclient.h
+gltext.o: $(UTILS_SRC)/usleep.h
+gltext.o: $(UTILS_SRC)/utf8wc.h
+gltext.o: $(UTILS_SRC)/visual.h
+gltext.o: $(UTILS_SRC)/yarandom.h
+gltext.o: $(HACK_SRC)/xlockmoreI.h
+gltext.o: $(HACK_SRC)/xlockmore.h
+gltrackball.o: ../../config.h
+gltrackball.o: $(srcdir)/gltrackball.h
+gltrackball.o: $(srcdir)/trackball.h
+glut_stroke.o: ../../config.h
+glut_stroke.o: $(srcdir)/glutstroke.h
+glut_swidth.o: ../../config.h
+glut_swidth.o: $(srcdir)/glutstroke.h
+grab-ximage.o: ../../config.h
+grab-ximage.o: $(srcdir)/grab-ximage.h
+grab-ximage.o: $(UTILS_SRC)/grabscreen.h
+grab-ximage.o: $(UTILS_SRC)/pow2.h
+grab-ximage.o: $(UTILS_SRC)/visual.h
+grab-ximage.o: $(UTILS_SRC)/xshm.h
+hexstrut.o: ../../config.h
+hexstrut.o: $(HACK_SRC)/fps.h
+hexstrut.o: $(srcdir)/gltrackball.h
+hexstrut.o: $(srcdir)/normals.h
+hexstrut.o: $(HACK_SRC)/recanim.h
+hexstrut.o: $(srcdir)/rotator.h
+hexstrut.o: $(HACK_SRC)/screenhackI.h
+hexstrut.o: $(UTILS_SRC)/colors.h
+hexstrut.o: $(UTILS_SRC)/erase.h
+hexstrut.o: $(UTILS_SRC)/font-retry.h
+hexstrut.o: $(UTILS_SRC)/grabscreen.h
+hexstrut.o: $(UTILS_SRC)/hsv.h
+hexstrut.o: $(UTILS_SRC)/resources.h
+hexstrut.o: $(UTILS_SRC)/usleep.h
+hexstrut.o: $(UTILS_SRC)/visual.h
+hexstrut.o: $(UTILS_SRC)/yarandom.h
+hexstrut.o: $(HACK_SRC)/xlockmoreI.h
+hexstrut.o: $(HACK_SRC)/xlockmore.h
+hilbert.o: ../../config.h
+hilbert.o: $(HACK_SRC)/fps.h
+hilbert.o: $(srcdir)/gltrackball.h
+hilbert.o: $(HACK_SRC)/recanim.h
+hilbert.o: $(srcdir)/rotator.h
+hilbert.o: $(HACK_SRC)/screenhackI.h
+hilbert.o: $(srcdir)/sphere.h
+hilbert.o: $(srcdir)/tube.h
+hilbert.o: $(UTILS_SRC)/colors.h
+hilbert.o: $(UTILS_SRC)/erase.h
+hilbert.o: $(UTILS_SRC)/font-retry.h
+hilbert.o: $(UTILS_SRC)/grabscreen.h
+hilbert.o: $(UTILS_SRC)/hsv.h
+hilbert.o: $(UTILS_SRC)/resources.h
+hilbert.o: $(UTILS_SRC)/usleep.h
+hilbert.o: $(UTILS_SRC)/visual.h
+hilbert.o: $(UTILS_SRC)/yarandom.h
+hilbert.o: $(HACK_SRC)/xlockmoreI.h
+hilbert.o: $(HACK_SRC)/xlockmore.h
+hydrostat.o: ../../config.h
+hydrostat.o: $(HACK_SRC)/fps.h
+hydrostat.o: $(srcdir)/gltrackball.h
+hydrostat.o: $(srcdir)/normals.h
+hydrostat.o: $(HACK_SRC)/recanim.h
+hydrostat.o: $(HACK_SRC)/screenhackI.h
+hydrostat.o: $(srcdir)/sphere.h
+hydrostat.o: $(UTILS_SRC)/colors.h
+hydrostat.o: $(UTILS_SRC)/erase.h
+hydrostat.o: $(UTILS_SRC)/font-retry.h
+hydrostat.o: $(UTILS_SRC)/grabscreen.h
+hydrostat.o: $(UTILS_SRC)/hsv.h
+hydrostat.o: $(UTILS_SRC)/resources.h
+hydrostat.o: $(UTILS_SRC)/usleep.h
+hydrostat.o: $(UTILS_SRC)/visual.h
+hydrostat.o: $(UTILS_SRC)/yarandom.h
+hydrostat.o: $(HACK_SRC)/xlockmoreI.h
+hydrostat.o: $(HACK_SRC)/xlockmore.h
+hypertorus.o: ../../config.h
+hypertorus.o: $(HACK_SRC)/fps.h
+hypertorus.o: $(srcdir)/gltrackball.h
+hypertorus.o: $(HACK_SRC)/recanim.h
+hypertorus.o: $(HACK_SRC)/screenhackI.h
+hypertorus.o: $(UTILS_SRC)/colors.h
+hypertorus.o: $(UTILS_SRC)/erase.h
+hypertorus.o: $(UTILS_SRC)/font-retry.h
+hypertorus.o: $(UTILS_SRC)/grabscreen.h
+hypertorus.o: $(UTILS_SRC)/hsv.h
+hypertorus.o: $(UTILS_SRC)/resources.h
+hypertorus.o: $(UTILS_SRC)/usleep.h
+hypertorus.o: $(UTILS_SRC)/visual.h
+hypertorus.o: $(UTILS_SRC)/yarandom.h
+hypertorus.o: $(HACK_SRC)/xlockmoreI.h
+hypertorus.o: $(HACK_SRC)/xlockmore.h
+hypnowheel.o: ../../config.h
+hypnowheel.o: $(HACK_SRC)/fps.h
+hypnowheel.o: $(HACK_SRC)/recanim.h
+hypnowheel.o: $(srcdir)/rotator.h
+hypnowheel.o: $(HACK_SRC)/screenhackI.h
+hypnowheel.o: $(UTILS_SRC)/colors.h
+hypnowheel.o: $(UTILS_SRC)/erase.h
+hypnowheel.o: $(UTILS_SRC)/font-retry.h
+hypnowheel.o: $(UTILS_SRC)/grabscreen.h
+hypnowheel.o: $(UTILS_SRC)/hsv.h
+hypnowheel.o: $(UTILS_SRC)/resources.h
+hypnowheel.o: $(UTILS_SRC)/usleep.h
+hypnowheel.o: $(UTILS_SRC)/visual.h
+hypnowheel.o: $(UTILS_SRC)/yarandom.h
+hypnowheel.o: $(HACK_SRC)/xlockmoreI.h
+hypnowheel.o: $(HACK_SRC)/xlockmore.h
+involute.o: ../../config.h
+involute.o: $(HACK_SRC)/fps.h
+involute.o: $(srcdir)/involute.h
+involute.o: $(srcdir)/normals.h
+involute.o: $(HACK_SRC)/recanim.h
+involute.o: $(HACK_SRC)/screenhackI.h
+involute.o: $(UTILS_SRC)/colors.h
+involute.o: $(UTILS_SRC)/font-retry.h
+involute.o: $(UTILS_SRC)/grabscreen.h
+involute.o: $(UTILS_SRC)/hsv.h
+involute.o: $(UTILS_SRC)/resources.h
+involute.o: $(UTILS_SRC)/usleep.h
+involute.o: $(UTILS_SRC)/visual.h
+involute.o: $(UTILS_SRC)/yarandom.h
+jigglypuff.o: ../../config.h
+jigglypuff.o: $(HACK_SRC)/fps.h
+jigglypuff.o: $(srcdir)/gltrackball.h
+jigglypuff.o: $(HACK_SRC)/images/gen/jigglymap_png.h
+jigglypuff.o: $(HACK_SRC)/recanim.h
+jigglypuff.o: $(HACK_SRC)/screenhackI.h
+jigglypuff.o: $(UTILS_SRC)/colors.h
+jigglypuff.o: $(UTILS_SRC)/erase.h
+jigglypuff.o: $(UTILS_SRC)/font-retry.h
+jigglypuff.o: $(UTILS_SRC)/grabscreen.h
+jigglypuff.o: $(UTILS_SRC)/hsv.h
+jigglypuff.o: $(UTILS_SRC)/resources.h
+jigglypuff.o: $(UTILS_SRC)/usleep.h
+jigglypuff.o: $(UTILS_SRC)/visual.h
+jigglypuff.o: $(UTILS_SRC)/yarandom.h
+jigglypuff.o: $(HACK_SRC)/ximage-loader.h
+jigglypuff.o: $(HACK_SRC)/xlockmoreI.h
+jigglypuff.o: $(HACK_SRC)/xlockmore.h
+jigsaw.o: ../../config.h
+jigsaw.o: $(HACK_SRC)/fps.h
+jigsaw.o: $(srcdir)/gltrackball.h
+jigsaw.o: $(srcdir)/grab-ximage.h
+jigsaw.o: $(srcdir)/normals.h
+jigsaw.o: $(HACK_SRC)/recanim.h
+jigsaw.o: $(srcdir)/rotator.h
+jigsaw.o: $(HACK_SRC)/screenhackI.h
+jigsaw.o: $(srcdir)/texfont.h
+jigsaw.o: $(UTILS_SRC)/colors.h
+jigsaw.o: $(UTILS_SRC)/erase.h
+jigsaw.o: $(UTILS_SRC)/font-retry.h
+jigsaw.o: $(UTILS_SRC)/grabscreen.h
+jigsaw.o: $(UTILS_SRC)/hsv.h
+jigsaw.o: $(UTILS_SRC)/resources.h
+jigsaw.o: $(UTILS_SRC)/spline.h
+jigsaw.o: $(UTILS_SRC)/usleep.h
+jigsaw.o: $(UTILS_SRC)/visual.h
+jigsaw.o: $(UTILS_SRC)/yarandom.h
+jigsaw.o: $(HACK_SRC)/xlockmoreI.h
+jigsaw.o: $(HACK_SRC)/xlockmore.h
+juggler3d.o: ../../config.h
+juggler3d.o: $(HACK_SRC)/fps.h
+juggler3d.o: $(srcdir)/gltrackball.h
+juggler3d.o: $(HACK_SRC)/recanim.h
+juggler3d.o: $(srcdir)/rotator.h
+juggler3d.o: $(HACK_SRC)/screenhackI.h
+juggler3d.o: $(srcdir)/sphere.h
+juggler3d.o: $(srcdir)/texfont.h
+juggler3d.o: $(srcdir)/tube.h
+juggler3d.o: $(UTILS_SRC)/colors.h
+juggler3d.o: $(UTILS_SRC)/erase.h
+juggler3d.o: $(UTILS_SRC)/font-retry.h
+juggler3d.o: $(UTILS_SRC)/grabscreen.h
+juggler3d.o: $(UTILS_SRC)/hsv.h
+juggler3d.o: $(UTILS_SRC)/resources.h
+juggler3d.o: $(UTILS_SRC)/usleep.h
+juggler3d.o: $(UTILS_SRC)/visual.h
+juggler3d.o: $(UTILS_SRC)/yarandom.h
+juggler3d.o: $(HACK_SRC)/xlockmoreI.h
+juggler3d.o: $(HACK_SRC)/xlockmore.h
+kaleidocycle.o: ../../config.h
+kaleidocycle.o: $(HACK_SRC)/fps.h
+kaleidocycle.o: $(srcdir)/gltrackball.h
+kaleidocycle.o: $(srcdir)/normals.h
+kaleidocycle.o: $(HACK_SRC)/recanim.h
+kaleidocycle.o: $(srcdir)/rotator.h
+kaleidocycle.o: $(HACK_SRC)/screenhackI.h
+kaleidocycle.o: $(UTILS_SRC)/colors.h
+kaleidocycle.o: $(UTILS_SRC)/erase.h
+kaleidocycle.o: $(UTILS_SRC)/font-retry.h
+kaleidocycle.o: $(UTILS_SRC)/grabscreen.h
+kaleidocycle.o: $(UTILS_SRC)/hsv.h
+kaleidocycle.o: $(UTILS_SRC)/resources.h
+kaleidocycle.o: $(UTILS_SRC)/usleep.h
+kaleidocycle.o: $(UTILS_SRC)/visual.h
+kaleidocycle.o: $(UTILS_SRC)/yarandom.h
+kaleidocycle.o: $(HACK_SRC)/xlockmoreI.h
+kaleidocycle.o: $(HACK_SRC)/xlockmore.h
+klein.o: ../../config.h
+klein.o: $(srcdir)/curlicue.h
+klein.o: $(HACK_SRC)/fps.h
+klein.o: $(srcdir)/gltrackball.h
+klein.o: $(HACK_SRC)/recanim.h
+klein.o: $(HACK_SRC)/screenhackI.h
+klein.o: $(UTILS_SRC)/colors.h
+klein.o: $(UTILS_SRC)/erase.h
+klein.o: $(UTILS_SRC)/font-retry.h
+klein.o: $(UTILS_SRC)/grabscreen.h
+klein.o: $(UTILS_SRC)/hsv.h
+klein.o: $(UTILS_SRC)/resources.h
+klein.o: $(UTILS_SRC)/usleep.h
+klein.o: $(UTILS_SRC)/visual.h
+klein.o: $(UTILS_SRC)/yarandom.h
+klein.o: $(HACK_SRC)/xlockmoreI.h
+klein.o: $(HACK_SRC)/xlockmore.h
+lament_model.o: ../../config.h
+lament_model.o: $(srcdir)/gllist.h
+lament.o: ../../config.h
+lament.o: $(HACK_SRC)/fps.h
+lament.o: $(srcdir)/gllist.h
+lament.o: $(srcdir)/gltrackball.h
+lament.o: $(HACK_SRC)/images/gen/lament512_png.h
+lament.o: $(srcdir)/normals.h
+lament.o: $(HACK_SRC)/recanim.h
+lament.o: $(srcdir)/rotator.h
+lament.o: $(HACK_SRC)/screenhackI.h
+lament.o: $(UTILS_SRC)/colors.h
+lament.o: $(UTILS_SRC)/erase.h
+lament.o: $(UTILS_SRC)/font-retry.h
+lament.o: $(UTILS_SRC)/grabscreen.h
+lament.o: $(UTILS_SRC)/hsv.h
+lament.o: $(UTILS_SRC)/resources.h
+lament.o: $(UTILS_SRC)/usleep.h
+lament.o: $(UTILS_SRC)/visual.h
+lament.o: $(UTILS_SRC)/yarandom.h
+lament.o: $(HACK_SRC)/ximage-loader.h
+lament.o: $(HACK_SRC)/xlockmoreI.h
+lament.o: $(HACK_SRC)/xlockmore.h
+lavalite.o: ../../config.h
+lavalite.o: $(HACK_SRC)/fps.h
+lavalite.o: $(srcdir)/gltrackball.h
+lavalite.o: $(srcdir)/marching.h
+lavalite.o: $(HACK_SRC)/recanim.h
+lavalite.o: $(srcdir)/rotator.h
+lavalite.o: $(HACK_SRC)/screenhackI.h
+lavalite.o: $(UTILS_SRC)/colors.h
+lavalite.o: $(UTILS_SRC)/erase.h
+lavalite.o: $(UTILS_SRC)/font-retry.h
+lavalite.o: $(UTILS_SRC)/grabscreen.h
+lavalite.o: $(UTILS_SRC)/hsv.h
+lavalite.o: $(UTILS_SRC)/resources.h
+lavalite.o: $(UTILS_SRC)/usleep.h
+lavalite.o: $(UTILS_SRC)/visual.h
+lavalite.o: $(UTILS_SRC)/yarandom.h
+lavalite.o: $(HACK_SRC)/ximage-loader.h
+lavalite.o: $(HACK_SRC)/xlockmoreI.h
+lavalite.o: $(HACK_SRC)/xlockmore.h
+lockward.o: ../../config.h
+lockward.o: $(HACK_SRC)/fps.h
+lockward.o: $(HACK_SRC)/recanim.h
+lockward.o: $(HACK_SRC)/screenhackI.h
+lockward.o: $(UTILS_SRC)/colors.h
+lockward.o: $(UTILS_SRC)/erase.h
+lockward.o: $(UTILS_SRC)/font-retry.h
+lockward.o: $(UTILS_SRC)/grabscreen.h
+lockward.o: $(UTILS_SRC)/hsv.h
+lockward.o: $(UTILS_SRC)/resources.h
+lockward.o: $(UTILS_SRC)/usleep.h
+lockward.o: $(UTILS_SRC)/visual.h
+lockward.o: $(UTILS_SRC)/yarandom.h
+lockward.o: $(HACK_SRC)/xlockmoreI.h
+lockward.o: $(HACK_SRC)/xlockmore.h
+marching.o: ../../config.h
+marching.o: $(srcdir)/marching.h
+marching.o: $(srcdir)/normals.h
+maze3d.o: ../../config.h
+maze3d.o: $(HACK_SRC)/fps.h
+maze3d.o: $(HACK_SRC)/images/gen/bob_png.h
+maze3d.o: $(HACK_SRC)/images/gen/brick1_png.h
+maze3d.o: $(HACK_SRC)/images/gen/brick2_png.h
+maze3d.o: $(HACK_SRC)/images/gen/logo-32_png.h
+maze3d.o: $(HACK_SRC)/images/gen/start_png.h
+maze3d.o: $(HACK_SRC)/images/gen/wood2_png.h
+maze3d.o: $(HACK_SRC)/recanim.h
+maze3d.o: $(HACK_SRC)/screenhackI.h
+maze3d.o: $(UTILS_SRC)/colors.h
+maze3d.o: $(UTILS_SRC)/erase.h
+maze3d.o: $(UTILS_SRC)/font-retry.h
+maze3d.o: $(UTILS_SRC)/grabscreen.h
+maze3d.o: $(UTILS_SRC)/hsv.h
+maze3d.o: $(UTILS_SRC)/resources.h
+maze3d.o: $(UTILS_SRC)/usleep.h
+maze3d.o: $(UTILS_SRC)/visual.h
+maze3d.o: $(UTILS_SRC)/yarandom.h
+maze3d.o: $(HACK_SRC)/ximage-loader.h
+maze3d.o: $(HACK_SRC)/xlockmoreI.h
+maze3d.o: $(HACK_SRC)/xlockmore.h
+menger.o: ../../config.h
+menger.o: $(HACK_SRC)/fps.h
+menger.o: $(srcdir)/gltrackball.h
+menger.o: $(HACK_SRC)/recanim.h
+menger.o: $(srcdir)/rotator.h
+menger.o: $(HACK_SRC)/screenhackI.h
+menger.o: $(UTILS_SRC)/colors.h
+menger.o: $(UTILS_SRC)/erase.h
+menger.o: $(UTILS_SRC)/font-retry.h
+menger.o: $(UTILS_SRC)/grabscreen.h
+menger.o: $(UTILS_SRC)/hsv.h
+menger.o: $(UTILS_SRC)/resources.h
+menger.o: $(UTILS_SRC)/usleep.h
+menger.o: $(UTILS_SRC)/visual.h
+menger.o: $(UTILS_SRC)/yarandom.h
+menger.o: $(HACK_SRC)/xlockmoreI.h
+menger.o: $(HACK_SRC)/xlockmore.h
+mirrorblob.o: ../../config.h
+mirrorblob.o: $(HACK_SRC)/fps.h
+mirrorblob.o: $(srcdir)/gltrackball.h
+mirrorblob.o: $(srcdir)/grab-ximage.h
+mirrorblob.o: $(HACK_SRC)/recanim.h
+mirrorblob.o: $(HACK_SRC)/screenhackI.h
+mirrorblob.o: $(UTILS_SRC)/colors.h
+mirrorblob.o: $(UTILS_SRC)/erase.h
+mirrorblob.o: $(UTILS_SRC)/font-retry.h
+mirrorblob.o: $(UTILS_SRC)/grabscreen.h
+mirrorblob.o: $(UTILS_SRC)/hsv.h
+mirrorblob.o: $(UTILS_SRC)/resources.h
+mirrorblob.o: $(UTILS_SRC)/usleep.h
+mirrorblob.o: $(UTILS_SRC)/visual.h
+mirrorblob.o: $(UTILS_SRC)/yarandom.h
+mirrorblob.o: $(HACK_SRC)/xlockmoreI.h
+mirrorblob.o: $(HACK_SRC)/xlockmore.h
+moebiusgears.o: ../../config.h
+moebiusgears.o: $(HACK_SRC)/fps.h
+moebiusgears.o: $(srcdir)/gltrackball.h
+moebiusgears.o: $(srcdir)/involute.h
+moebiusgears.o: $(srcdir)/normals.h
+moebiusgears.o: $(HACK_SRC)/recanim.h
+moebiusgears.o: $(srcdir)/rotator.h
+moebiusgears.o: $(HACK_SRC)/screenhackI.h
+moebiusgears.o: $(UTILS_SRC)/colors.h
+moebiusgears.o: $(UTILS_SRC)/erase.h
+moebiusgears.o: $(UTILS_SRC)/font-retry.h
+moebiusgears.o: $(UTILS_SRC)/grabscreen.h
+moebiusgears.o: $(UTILS_SRC)/hsv.h
+moebiusgears.o: $(UTILS_SRC)/resources.h
+moebiusgears.o: $(UTILS_SRC)/usleep.h
+moebiusgears.o: $(UTILS_SRC)/visual.h
+moebiusgears.o: $(UTILS_SRC)/yarandom.h
+moebiusgears.o: $(HACK_SRC)/xlockmoreI.h
+moebiusgears.o: $(HACK_SRC)/xlockmore.h
+moebius.o: ../../config.h
+moebius.o: $(HACK_SRC)/fps.h
+moebius.o: $(srcdir)/gltrackball.h
+moebius.o: $(HACK_SRC)/recanim.h
+moebius.o: $(srcdir)/rotator.h
+moebius.o: $(HACK_SRC)/screenhackI.h
+moebius.o: $(srcdir)/sphere.h
+moebius.o: $(srcdir)/tube.h
+moebius.o: $(UTILS_SRC)/colors.h
+moebius.o: $(UTILS_SRC)/erase.h
+moebius.o: $(UTILS_SRC)/font-retry.h
+moebius.o: $(UTILS_SRC)/grabscreen.h
+moebius.o: $(UTILS_SRC)/hsv.h
+moebius.o: $(UTILS_SRC)/resources.h
+moebius.o: $(UTILS_SRC)/usleep.h
+moebius.o: $(UTILS_SRC)/visual.h
+moebius.o: $(UTILS_SRC)/yarandom.h
+moebius.o: $(HACK_SRC)/xlockmoreI.h
+moebius.o: $(HACK_SRC)/xlockmore.h
+molecule.o: ../../config.h
+molecule.o: $(HACK_SRC)/fps.h
+molecule.o: $(srcdir)/gltrackball.h
+molecule.o: molecules.h
+molecule.o: $(HACK_SRC)/recanim.h
+molecule.o: $(srcdir)/rotator.h
+molecule.o: $(HACK_SRC)/screenhackI.h
+molecule.o: $(srcdir)/sphere.h
+molecule.o: $(srcdir)/texfont.h
+molecule.o: $(srcdir)/tube.h
+molecule.o: $(UTILS_SRC)/colors.h
+molecule.o: $(UTILS_SRC)/erase.h
+molecule.o: $(UTILS_SRC)/font-retry.h
+molecule.o: $(UTILS_SRC)/grabscreen.h
+molecule.o: $(UTILS_SRC)/hsv.h
+molecule.o: $(UTILS_SRC)/resources.h
+molecule.o: $(UTILS_SRC)/usleep.h
+molecule.o: $(UTILS_SRC)/visual.h
+molecule.o: $(UTILS_SRC)/yarandom.h
+molecule.o: $(HACK_SRC)/xlockmoreI.h
+molecule.o: $(HACK_SRC)/xlockmore.h
+morph3d.o: ../../config.h
+morph3d.o: $(HACK_SRC)/fps.h
+morph3d.o: $(HACK_SRC)/recanim.h
+morph3d.o: $(HACK_SRC)/screenhackI.h
+morph3d.o: $(UTILS_SRC)/colors.h
+morph3d.o: $(UTILS_SRC)/erase.h
+morph3d.o: $(UTILS_SRC)/font-retry.h
+morph3d.o: $(UTILS_SRC)/grabscreen.h
+morph3d.o: $(UTILS_SRC)/hsv.h
+morph3d.o: $(UTILS_SRC)/resources.h
+morph3d.o: $(UTILS_SRC)/usleep.h
+morph3d.o: $(UTILS_SRC)/visual.h
+morph3d.o: $(UTILS_SRC)/yarandom.h
+morph3d.o: $(HACK_SRC)/xlockmoreI.h
+morph3d.o: $(HACK_SRC)/xlockmore.h
+noof.o: ../../config.h
+noof.o: $(HACK_SRC)/fps.h
+noof.o: $(HACK_SRC)/recanim.h
+noof.o: $(HACK_SRC)/screenhackI.h
+noof.o: $(UTILS_SRC)/colors.h
+noof.o: $(UTILS_SRC)/erase.h
+noof.o: $(UTILS_SRC)/font-retry.h
+noof.o: $(UTILS_SRC)/grabscreen.h
+noof.o: $(UTILS_SRC)/hsv.h
+noof.o: $(UTILS_SRC)/pow2.h
+noof.o: $(UTILS_SRC)/resources.h
+noof.o: $(UTILS_SRC)/usleep.h
+noof.o: $(UTILS_SRC)/visual.h
+noof.o: $(UTILS_SRC)/yarandom.h
+noof.o: $(HACK_SRC)/xlockmoreI.h
+noof.o: $(HACK_SRC)/xlockmore.h
+normals.o: ../../config.h
+normals.o: $(srcdir)/normals.h
+peepers.o: ../../config.h
+peepers.o: $(HACK_SRC)/fps.h
+peepers.o: $(srcdir)/gltrackball.h
+peepers.o: $(HACK_SRC)/images/gen/iris_png.h
+peepers.o: $(HACK_SRC)/images/gen/sclera_png.h
+peepers.o: $(srcdir)/normals.h
+peepers.o: $(HACK_SRC)/recanim.h
+peepers.o: $(srcdir)/rotator.h
+peepers.o: $(HACK_SRC)/screenhackI.h
+peepers.o: $(UTILS_SRC)/colors.h
+peepers.o: $(UTILS_SRC)/erase.h
+peepers.o: $(UTILS_SRC)/font-retry.h
+peepers.o: $(UTILS_SRC)/grabscreen.h
+peepers.o: $(UTILS_SRC)/hsv.h
+peepers.o: $(UTILS_SRC)/resources.h
+peepers.o: $(UTILS_SRC)/usleep.h
+peepers.o: $(UTILS_SRC)/visual.h
+peepers.o: $(UTILS_SRC)/yarandom.h
+peepers.o: $(HACK_SRC)/ximage-loader.h
+peepers.o: $(HACK_SRC)/xlockmoreI.h
+peepers.o: $(HACK_SRC)/xlockmore.h
+photopile.o: ../../config.h
+photopile.o: $(srcdir)/dropshadow.h
+photopile.o: $(HACK_SRC)/fps.h
+photopile.o: $(srcdir)/grab-ximage.h
+photopile.o: $(HACK_SRC)/recanim.h
+photopile.o: $(HACK_SRC)/screenhackI.h
+photopile.o: $(srcdir)/texfont.h
+photopile.o: $(UTILS_SRC)/colors.h
+photopile.o: $(UTILS_SRC)/erase.h
+photopile.o: $(UTILS_SRC)/font-retry.h
+photopile.o: $(UTILS_SRC)/grabscreen.h
+photopile.o: $(UTILS_SRC)/hsv.h
+photopile.o: $(UTILS_SRC)/resources.h
+photopile.o: $(UTILS_SRC)/usleep.h
+photopile.o: $(UTILS_SRC)/visual.h
+photopile.o: $(UTILS_SRC)/yarandom.h
+photopile.o: $(HACK_SRC)/xlockmoreI.h
+photopile.o: $(HACK_SRC)/xlockmore.h
+pinion.o: ../../config.h
+pinion.o: $(HACK_SRC)/fps.h
+pinion.o: $(srcdir)/gltrackball.h
+pinion.o: $(srcdir)/involute.h
+pinion.o: $(srcdir)/normals.h
+pinion.o: $(HACK_SRC)/recanim.h
+pinion.o: $(HACK_SRC)/screenhackI.h
+pinion.o: $(srcdir)/texfont.h
+pinion.o: $(UTILS_SRC)/colors.h
+pinion.o: $(UTILS_SRC)/erase.h
+pinion.o: $(UTILS_SRC)/font-retry.h
+pinion.o: $(UTILS_SRC)/grabscreen.h
+pinion.o: $(UTILS_SRC)/hsv.h
+pinion.o: $(UTILS_SRC)/resources.h
+pinion.o: $(UTILS_SRC)/usleep.h
+pinion.o: $(UTILS_SRC)/visual.h
+pinion.o: $(UTILS_SRC)/yarandom.h
+pinion.o: $(HACK_SRC)/xlockmoreI.h
+pinion.o: $(HACK_SRC)/xlockmore.h
+pipeobjs.o: $(srcdir)/buildlwo.h
+pipeobjs.o: ../../config.h
+pipes.o: $(srcdir)/buildlwo.h
+pipes.o: ../../config.h
+pipes.o: $(HACK_SRC)/fps.h
+pipes.o: $(srcdir)/gltrackball.h
+pipes.o: $(HACK_SRC)/recanim.h
+pipes.o: $(HACK_SRC)/screenhackI.h
+pipes.o: $(srcdir)/sphere.h
+pipes.o: $(srcdir)/teapot.h
+pipes.o: $(UTILS_SRC)/colors.h
+pipes.o: $(UTILS_SRC)/erase.h
+pipes.o: $(UTILS_SRC)/font-retry.h
+pipes.o: $(UTILS_SRC)/grabscreen.h
+pipes.o: $(UTILS_SRC)/hsv.h
+pipes.o: $(UTILS_SRC)/resources.h
+pipes.o: $(UTILS_SRC)/usleep.h
+pipes.o: $(UTILS_SRC)/visual.h
+pipes.o: $(UTILS_SRC)/yarandom.h
+pipes.o: $(HACK_SRC)/xlockmoreI.h
+pipes.o: $(HACK_SRC)/xlockmore.h
+polyhedra-gl.o: ../../config.h
+polyhedra-gl.o: $(HACK_SRC)/fps.h
+polyhedra-gl.o: $(srcdir)/gltrackball.h
+polyhedra-gl.o: $(srcdir)/normals.h
+polyhedra-gl.o: $(srcdir)/polyhedra.h
+polyhedra-gl.o: $(HACK_SRC)/recanim.h
+polyhedra-gl.o: $(srcdir)/rotator.h
+polyhedra-gl.o: $(HACK_SRC)/screenhackI.h
+polyhedra-gl.o: $(srcdir)/teapot.h
+polyhedra-gl.o: $(srcdir)/texfont.h
+polyhedra-gl.o: $(UTILS_SRC)/colors.h
+polyhedra-gl.o: $(UTILS_SRC)/erase.h
+polyhedra-gl.o: $(UTILS_SRC)/font-retry.h
+polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h
+polyhedra-gl.o: $(UTILS_SRC)/hsv.h
+polyhedra-gl.o: $(UTILS_SRC)/resources.h
+polyhedra-gl.o: $(UTILS_SRC)/usleep.h
+polyhedra-gl.o: $(UTILS_SRC)/visual.h
+polyhedra-gl.o: $(UTILS_SRC)/yarandom.h
+polyhedra-gl.o: $(HACK_SRC)/xlockmoreI.h
+polyhedra-gl.o: $(HACK_SRC)/xlockmore.h
+polyhedra.o: ../../config.h
+polyhedra.o: $(srcdir)/polyhedra.h
+polytopes.o: ../../config.h
+polytopes.o: $(HACK_SRC)/fps.h
+polytopes.o: $(srcdir)/gltrackball.h
+polytopes.o: $(HACK_SRC)/recanim.h
+polytopes.o: $(HACK_SRC)/screenhackI.h
+polytopes.o: $(UTILS_SRC)/colors.h
+polytopes.o: $(UTILS_SRC)/erase.h
+polytopes.o: $(UTILS_SRC)/font-retry.h
+polytopes.o: $(UTILS_SRC)/grabscreen.h
+polytopes.o: $(UTILS_SRC)/hsv.h
+polytopes.o: $(UTILS_SRC)/resources.h
+polytopes.o: $(UTILS_SRC)/usleep.h
+polytopes.o: $(UTILS_SRC)/visual.h
+polytopes.o: $(UTILS_SRC)/yarandom.h
+polytopes.o: $(HACK_SRC)/xlockmoreI.h
+polytopes.o: $(HACK_SRC)/xlockmore.h
+projectiveplane.o: ../../config.h
+projectiveplane.o: $(srcdir)/curlicue.h
+projectiveplane.o: $(HACK_SRC)/fps.h
+projectiveplane.o: $(srcdir)/gltrackball.h
+projectiveplane.o: $(HACK_SRC)/recanim.h
+projectiveplane.o: $(HACK_SRC)/screenhackI.h
+projectiveplane.o: $(UTILS_SRC)/colors.h
+projectiveplane.o: $(UTILS_SRC)/erase.h
+projectiveplane.o: $(UTILS_SRC)/font-retry.h
+projectiveplane.o: $(UTILS_SRC)/grabscreen.h
+projectiveplane.o: $(UTILS_SRC)/hsv.h
+projectiveplane.o: $(UTILS_SRC)/resources.h
+projectiveplane.o: $(UTILS_SRC)/usleep.h
+projectiveplane.o: $(UTILS_SRC)/visual.h
+projectiveplane.o: $(UTILS_SRC)/yarandom.h
+projectiveplane.o: $(HACK_SRC)/xlockmoreI.h
+projectiveplane.o: $(HACK_SRC)/xlockmore.h
+providence.o: ../../config.h
+providence.o: $(HACK_SRC)/fps.h
+providence.o: $(srcdir)/gltrackball.h
+providence.o: $(HACK_SRC)/recanim.h
+providence.o: $(HACK_SRC)/screenhackI.h
+providence.o: $(UTILS_SRC)/colors.h
+providence.o: $(UTILS_SRC)/erase.h
+providence.o: $(UTILS_SRC)/font-retry.h
+providence.o: $(UTILS_SRC)/grabscreen.h
+providence.o: $(UTILS_SRC)/hsv.h
+providence.o: $(UTILS_SRC)/resources.h
+providence.o: $(UTILS_SRC)/usleep.h
+providence.o: $(UTILS_SRC)/visual.h
+providence.o: $(UTILS_SRC)/yarandom.h
+providence.o: $(HACK_SRC)/xlockmoreI.h
+providence.o: $(HACK_SRC)/xlockmore.h
+pulsar.o: ../../config.h
+pulsar.o: $(HACK_SRC)/fps.h
+pulsar.o: $(HACK_SRC)/recanim.h
+pulsar.o: $(HACK_SRC)/screenhackI.h
+pulsar.o: $(UTILS_SRC)/colors.h
+pulsar.o: $(UTILS_SRC)/erase.h
+pulsar.o: $(UTILS_SRC)/font-retry.h
+pulsar.o: $(UTILS_SRC)/grabscreen.h
+pulsar.o: $(UTILS_SRC)/hsv.h
+pulsar.o: $(UTILS_SRC)/resources.h
+pulsar.o: $(UTILS_SRC)/usleep.h
+pulsar.o: $(UTILS_SRC)/visual.h
+pulsar.o: $(UTILS_SRC)/yarandom.h
+pulsar.o: $(HACK_SRC)/ximage-loader.h
+pulsar.o: $(HACK_SRC)/xlockmoreI.h
+pulsar.o: $(HACK_SRC)/xlockmore.h
+quasicrystal.o: ../../config.h
+quasicrystal.o: $(HACK_SRC)/fps.h
+quasicrystal.o: $(HACK_SRC)/recanim.h
+quasicrystal.o: $(srcdir)/rotator.h
+quasicrystal.o: $(HACK_SRC)/screenhackI.h
+quasicrystal.o: $(UTILS_SRC)/colors.h
+quasicrystal.o: $(UTILS_SRC)/erase.h
+quasicrystal.o: $(UTILS_SRC)/font-retry.h
+quasicrystal.o: $(UTILS_SRC)/grabscreen.h
+quasicrystal.o: $(UTILS_SRC)/hsv.h
+quasicrystal.o: $(UTILS_SRC)/resources.h
+quasicrystal.o: $(UTILS_SRC)/usleep.h
+quasicrystal.o: $(UTILS_SRC)/visual.h
+quasicrystal.o: $(UTILS_SRC)/yarandom.h
+quasicrystal.o: $(HACK_SRC)/xlockmoreI.h
+quasicrystal.o: $(HACK_SRC)/xlockmore.h
+queens.o: $(srcdir)/chessmodels.h
+queens.o: ../../config.h
+queens.o: $(HACK_SRC)/fps.h
+queens.o: $(srcdir)/gltrackball.h
+queens.o: $(HACK_SRC)/recanim.h
+queens.o: $(HACK_SRC)/screenhackI.h
+queens.o: $(UTILS_SRC)/colors.h
+queens.o: $(UTILS_SRC)/erase.h
+queens.o: $(UTILS_SRC)/font-retry.h
+queens.o: $(UTILS_SRC)/grabscreen.h
+queens.o: $(UTILS_SRC)/hsv.h
+queens.o: $(UTILS_SRC)/resources.h
+queens.o: $(UTILS_SRC)/usleep.h
+queens.o: $(UTILS_SRC)/visual.h
+queens.o: $(UTILS_SRC)/yarandom.h
+queens.o: $(HACK_SRC)/xlockmoreI.h
+queens.o: $(HACK_SRC)/xlockmore.h
+quickhull.o: ../../config.h
+quickhull.o: $(HACK_SRC)/fps.h
+quickhull.o: $(srcdir)/quickhull.h
+quickhull.o: $(HACK_SRC)/recanim.h
+quickhull.o: $(HACK_SRC)/screenhackI.h
+quickhull.o: $(UTILS_SRC)/colors.h
+quickhull.o: $(UTILS_SRC)/font-retry.h
+quickhull.o: $(UTILS_SRC)/grabscreen.h
+quickhull.o: $(UTILS_SRC)/hsv.h
+quickhull.o: $(UTILS_SRC)/resources.h
+quickhull.o: $(UTILS_SRC)/usleep.h
+quickhull.o: $(UTILS_SRC)/visual.h
+quickhull.o: $(UTILS_SRC)/yarandom.h
+raverhoop.o: ../../config.h
+raverhoop.o: $(HACK_SRC)/fps.h
+raverhoop.o: $(srcdir)/gltrackball.h
+raverhoop.o: $(HACK_SRC)/recanim.h
+raverhoop.o: $(srcdir)/rotator.h
+raverhoop.o: $(HACK_SRC)/screenhackI.h
+raverhoop.o: $(UTILS_SRC)/colors.h
+raverhoop.o: $(UTILS_SRC)/erase.h
+raverhoop.o: $(UTILS_SRC)/font-retry.h
+raverhoop.o: $(UTILS_SRC)/grabscreen.h
+raverhoop.o: $(UTILS_SRC)/hsv.h
+raverhoop.o: $(UTILS_SRC)/resources.h
+raverhoop.o: $(UTILS_SRC)/usleep.h
+raverhoop.o: $(UTILS_SRC)/visual.h
+raverhoop.o: $(UTILS_SRC)/yarandom.h
+raverhoop.o: $(HACK_SRC)/xlockmoreI.h
+raverhoop.o: $(HACK_SRC)/xlockmore.h
+razzledazzle.o: ../../config.h
+razzledazzle.o: $(HACK_SRC)/fps.h
+razzledazzle.o: $(srcdir)/gllist.h
+razzledazzle.o: $(srcdir)/normals.h
+razzledazzle.o: $(HACK_SRC)/recanim.h
+razzledazzle.o: $(HACK_SRC)/screenhackI.h
+razzledazzle.o: $(UTILS_SRC)/colors.h
+razzledazzle.o: $(UTILS_SRC)/erase.h
+razzledazzle.o: $(UTILS_SRC)/font-retry.h
+razzledazzle.o: $(UTILS_SRC)/grabscreen.h
+razzledazzle.o: $(UTILS_SRC)/hsv.h
+razzledazzle.o: $(UTILS_SRC)/resources.h
+razzledazzle.o: $(UTILS_SRC)/usleep.h
+razzledazzle.o: $(UTILS_SRC)/visual.h
+razzledazzle.o: $(UTILS_SRC)/yarandom.h
+razzledazzle.o: $(HACK_SRC)/xlockmoreI.h
+razzledazzle.o: $(HACK_SRC)/xlockmore.h
+robot.o: ../../config.h
+robot.o: $(srcdir)/gllist.h
+robot-wireframe.o: ../../config.h
+robot-wireframe.o: $(srcdir)/gllist.h
+romanboy.o: ../../config.h
+romanboy.o: $(srcdir)/curlicue.h
+romanboy.o: $(HACK_SRC)/fps.h
+romanboy.o: $(srcdir)/gltrackball.h
+romanboy.o: $(HACK_SRC)/recanim.h
+romanboy.o: $(HACK_SRC)/screenhackI.h
+romanboy.o: $(UTILS_SRC)/colors.h
+romanboy.o: $(UTILS_SRC)/erase.h
+romanboy.o: $(UTILS_SRC)/font-retry.h
+romanboy.o: $(UTILS_SRC)/grabscreen.h
+romanboy.o: $(UTILS_SRC)/hsv.h
+romanboy.o: $(UTILS_SRC)/resources.h
+romanboy.o: $(UTILS_SRC)/usleep.h
+romanboy.o: $(UTILS_SRC)/visual.h
+romanboy.o: $(UTILS_SRC)/yarandom.h
+romanboy.o: $(HACK_SRC)/xlockmoreI.h
+romanboy.o: $(HACK_SRC)/xlockmore.h
+rotator.o: ../../config.h
+rotator.o: $(srcdir)/rotator.h
+rotator.o: $(UTILS_SRC)/yarandom.h
+rubikblocks.o: ../../config.h
+rubikblocks.o: $(HACK_SRC)/fps.h
+rubikblocks.o: $(srcdir)/gltrackball.h
+rubikblocks.o: $(HACK_SRC)/recanim.h
+rubikblocks.o: $(srcdir)/rotator.h
+rubikblocks.o: $(HACK_SRC)/screenhackI.h
+rubikblocks.o: $(UTILS_SRC)/colors.h
+rubikblocks.o: $(UTILS_SRC)/erase.h
+rubikblocks.o: $(UTILS_SRC)/font-retry.h
+rubikblocks.o: $(UTILS_SRC)/grabscreen.h
+rubikblocks.o: $(UTILS_SRC)/hsv.h
+rubikblocks.o: $(UTILS_SRC)/resources.h
+rubikblocks.o: $(UTILS_SRC)/usleep.h
+rubikblocks.o: $(UTILS_SRC)/visual.h
+rubikblocks.o: $(UTILS_SRC)/yarandom.h
+rubikblocks.o: $(HACK_SRC)/xlockmoreI.h
+rubikblocks.o: $(HACK_SRC)/xlockmore.h
+rubik.o: ../../config.h
+rubik.o: $(HACK_SRC)/fps.h
+rubik.o: $(srcdir)/gltrackball.h
+rubik.o: $(HACK_SRC)/recanim.h
+rubik.o: $(HACK_SRC)/screenhackI.h
+rubik.o: $(UTILS_SRC)/colors.h
+rubik.o: $(UTILS_SRC)/erase.h
+rubik.o: $(UTILS_SRC)/font-retry.h
+rubik.o: $(UTILS_SRC)/grabscreen.h
+rubik.o: $(UTILS_SRC)/hsv.h
+rubik.o: $(UTILS_SRC)/resources.h
+rubik.o: $(UTILS_SRC)/usleep.h
+rubik.o: $(UTILS_SRC)/visual.h
+rubik.o: $(UTILS_SRC)/yarandom.h
+rubik.o: $(HACK_SRC)/xlockmoreI.h
+rubik.o: $(HACK_SRC)/xlockmore.h
+s1_1.o: ../../config.h
+s1_1.o: $(srcdir)/gllist.h
+s1_2.o: ../../config.h
+s1_2.o: $(srcdir)/gllist.h
+s1_3.o: ../../config.h
+s1_3.o: $(srcdir)/gllist.h
+s1_4.o: ../../config.h
+s1_4.o: $(srcdir)/gllist.h
+s1_5.o: ../../config.h
+s1_5.o: $(srcdir)/gllist.h
+s1_6.o: ../../config.h
+s1_6.o: $(srcdir)/gllist.h
+s1_b.o: ../../config.h
+s1_b.o: $(srcdir)/gllist.h
+sballs.o: ../../config.h
+sballs.o: $(HACK_SRC)/fps.h
+sballs.o: $(srcdir)/gltrackball.h
+sballs.o: $(HACK_SRC)/images/gen/sball-bg_png.h
+sballs.o: $(HACK_SRC)/images/gen/sball_png.h
+sballs.o: $(HACK_SRC)/recanim.h
+sballs.o: $(HACK_SRC)/screenhackI.h
+sballs.o: $(UTILS_SRC)/colors.h
+sballs.o: $(UTILS_SRC)/erase.h
+sballs.o: $(UTILS_SRC)/font-retry.h
+sballs.o: $(UTILS_SRC)/grabscreen.h
+sballs.o: $(UTILS_SRC)/hsv.h
+sballs.o: $(UTILS_SRC)/resources.h
+sballs.o: $(UTILS_SRC)/usleep.h
+sballs.o: $(UTILS_SRC)/visual.h
+sballs.o: $(UTILS_SRC)/yarandom.h
+sballs.o: $(HACK_SRC)/ximage-loader.h
+sballs.o: $(HACK_SRC)/xlockmoreI.h
+sballs.o: $(HACK_SRC)/xlockmore.h
+seccam.o: ../../config.h
+seccam.o: $(srcdir)/gllist.h
+shark.o: $(srcdir)/atlantis.h
+shark.o: ../../config.h
+shark.o: $(HACK_SRC)/fps.h
+shark.o: $(HACK_SRC)/recanim.h
+shark.o: $(HACK_SRC)/screenhackI.h
+shark.o: $(UTILS_SRC)/colors.h
+shark.o: $(UTILS_SRC)/font-retry.h
+shark.o: $(UTILS_SRC)/grabscreen.h
+shark.o: $(UTILS_SRC)/hsv.h
+shark.o: $(UTILS_SRC)/resources.h
+shark.o: $(UTILS_SRC)/usleep.h
+shark.o: $(UTILS_SRC)/visual.h
+shark.o: $(UTILS_SRC)/yarandom.h
+ships.o: ../../config.h
+ships.o: $(srcdir)/gllist.h
+sierpinski3d.o: ../../config.h
+sierpinski3d.o: $(HACK_SRC)/fps.h
+sierpinski3d.o: $(srcdir)/gltrackball.h
+sierpinski3d.o: $(HACK_SRC)/recanim.h
+sierpinski3d.o: $(srcdir)/rotator.h
+sierpinski3d.o: $(HACK_SRC)/screenhackI.h
+sierpinski3d.o: $(UTILS_SRC)/colors.h
+sierpinski3d.o: $(UTILS_SRC)/erase.h
+sierpinski3d.o: $(UTILS_SRC)/font-retry.h
+sierpinski3d.o: $(UTILS_SRC)/grabscreen.h
+sierpinski3d.o: $(UTILS_SRC)/hsv.h
+sierpinski3d.o: $(UTILS_SRC)/resources.h
+sierpinski3d.o: $(UTILS_SRC)/usleep.h
+sierpinski3d.o: $(UTILS_SRC)/visual.h
+sierpinski3d.o: $(UTILS_SRC)/yarandom.h
+sierpinski3d.o: $(HACK_SRC)/xlockmoreI.h
+sierpinski3d.o: $(HACK_SRC)/xlockmore.h
+skytentacles.o: ../../config.h
+skytentacles.o: $(HACK_SRC)/fps.h
+skytentacles.o: $(srcdir)/gltrackball.h
+skytentacles.o: $(HACK_SRC)/images/gen/scales_png.h
+skytentacles.o: $(srcdir)/normals.h
+skytentacles.o: $(HACK_SRC)/recanim.h
+skytentacles.o: $(srcdir)/rotator.h
+skytentacles.o: $(HACK_SRC)/screenhackI.h
+skytentacles.o: $(UTILS_SRC)/colors.h
+skytentacles.o: $(UTILS_SRC)/erase.h
+skytentacles.o: $(UTILS_SRC)/font-retry.h
+skytentacles.o: $(UTILS_SRC)/grabscreen.h
+skytentacles.o: $(UTILS_SRC)/hsv.h
+skytentacles.o: $(UTILS_SRC)/resources.h
+skytentacles.o: $(UTILS_SRC)/usleep.h
+skytentacles.o: $(UTILS_SRC)/visual.h
+skytentacles.o: $(UTILS_SRC)/yarandom.h
+skytentacles.o: $(HACK_SRC)/ximage-loader.h
+skytentacles.o: $(HACK_SRC)/xlockmoreI.h
+skytentacles.o: $(HACK_SRC)/xlockmore.h
+sonar-icmp.o: ../../config.h
+sonar-icmp.o: $(HACK_SRC)/fps.h
+sonar-icmp.o: $(HACK_SRC)/recanim.h
+sonar-icmp.o: $(HACK_SRC)/screenhackI.h
+sonar-icmp.o: $(srcdir)/sonar.h
+sonar-icmp.o: $(UTILS_SRC)/aligned_malloc.h
+sonar-icmp.o: $(UTILS_SRC)/async_netdb.h
+sonar-icmp.o: $(UTILS_SRC)/colors.h
+sonar-icmp.o: $(UTILS_SRC)/font-retry.h
+sonar-icmp.o: $(UTILS_SRC)/grabscreen.h
+sonar-icmp.o: $(UTILS_SRC)/hsv.h
+sonar-icmp.o: $(UTILS_SRC)/resources.h
+sonar-icmp.o: $(UTILS_SRC)/thread_util.h
+sonar-icmp.o: $(UTILS_SRC)/usleep.h
+sonar-icmp.o: $(UTILS_SRC)/version.h
+sonar-icmp.o: $(UTILS_SRC)/visual.h
+sonar-icmp.o: $(UTILS_SRC)/yarandom.h
+sonar.o: ../../config.h
+sonar.o: $(HACK_SRC)/fps.h
+sonar.o: $(srcdir)/gltrackball.h
+sonar.o: $(HACK_SRC)/recanim.h
+sonar.o: $(srcdir)/rotator.h
+sonar.o: $(HACK_SRC)/screenhackI.h
+sonar.o: $(srcdir)/sonar.h
+sonar.o: $(srcdir)/texfont.h
+sonar.o: $(UTILS_SRC)/aligned_malloc.h
+sonar.o: $(UTILS_SRC)/colors.h
+sonar.o: $(UTILS_SRC)/erase.h
+sonar.o: $(UTILS_SRC)/font-retry.h
+sonar.o: $(UTILS_SRC)/grabscreen.h
+sonar.o: $(UTILS_SRC)/hsv.h
+sonar.o: $(UTILS_SRC)/resources.h
+sonar.o: $(UTILS_SRC)/thread_util.h
+sonar.o: $(UTILS_SRC)/usleep.h
+sonar.o: $(UTILS_SRC)/visual.h
+sonar.o: $(UTILS_SRC)/yarandom.h
+sonar.o: $(HACK_SRC)/xlockmoreI.h
+sonar.o: $(HACK_SRC)/xlockmore.h
+sonar-sim.o: ../../config.h
+sonar-sim.o: $(HACK_SRC)/fps.h
+sonar-sim.o: $(HACK_SRC)/recanim.h
+sonar-sim.o: $(HACK_SRC)/screenhackI.h
+sonar-sim.o: $(srcdir)/sonar.h
+sonar-sim.o: $(UTILS_SRC)/colors.h
+sonar-sim.o: $(UTILS_SRC)/font-retry.h
+sonar-sim.o: $(UTILS_SRC)/grabscreen.h
+sonar-sim.o: $(UTILS_SRC)/hsv.h
+sonar-sim.o: $(UTILS_SRC)/resources.h
+sonar-sim.o: $(UTILS_SRC)/usleep.h
+sonar-sim.o: $(UTILS_SRC)/visual.h
+sonar-sim.o: $(UTILS_SRC)/yarandom.h
+spheremonics.o: ../../config.h
+spheremonics.o: $(HACK_SRC)/fps.h
+spheremonics.o: $(srcdir)/gltrackball.h
+spheremonics.o: $(srcdir)/normals.h
+spheremonics.o: $(HACK_SRC)/recanim.h
+spheremonics.o: $(srcdir)/rotator.h
+spheremonics.o: $(HACK_SRC)/screenhackI.h
+spheremonics.o: $(srcdir)/texfont.h
+spheremonics.o: $(UTILS_SRC)/colors.h
+spheremonics.o: $(UTILS_SRC)/erase.h
+spheremonics.o: $(UTILS_SRC)/font-retry.h
+spheremonics.o: $(UTILS_SRC)/grabscreen.h
+spheremonics.o: $(UTILS_SRC)/hsv.h
+spheremonics.o: $(UTILS_SRC)/resources.h
+spheremonics.o: $(UTILS_SRC)/usleep.h
+spheremonics.o: $(UTILS_SRC)/visual.h
+spheremonics.o: $(UTILS_SRC)/yarandom.h
+spheremonics.o: $(HACK_SRC)/xlockmoreI.h
+spheremonics.o: $(HACK_SRC)/xlockmore.h
+sphere.o: ../../config.h
+sphere.o: $(srcdir)/sphere.h
+splitflap.o: ../../config.h
+splitflap.o: $(HACK_SRC)/fps.h
+splitflap.o: $(srcdir)/gllist.h
+splitflap.o: $(srcdir)/gltrackball.h
+splitflap.o: $(HACK_SRC)/recanim.h
+splitflap.o: $(srcdir)/rotator.h
+splitflap.o: $(HACK_SRC)/screenhackI.h
+splitflap.o: $(srcdir)/texfont.h
+splitflap.o: $(UTILS_SRC)/colors.h
+splitflap.o: $(UTILS_SRC)/erase.h
+splitflap.o: $(UTILS_SRC)/font-retry.h
+splitflap.o: $(UTILS_SRC)/grabscreen.h
+splitflap.o: $(UTILS_SRC)/hsv.h
+splitflap.o: $(UTILS_SRC)/resources.h
+splitflap.o: $(UTILS_SRC)/textclient.h
+splitflap.o: $(UTILS_SRC)/usleep.h
+splitflap.o: $(UTILS_SRC)/utf8wc.h
+splitflap.o: $(UTILS_SRC)/visual.h
+splitflap.o: $(UTILS_SRC)/yarandom.h
+splitflap.o: $(HACK_SRC)/ximage-loader.h
+splitflap.o: $(HACK_SRC)/xlockmoreI.h
+splitflap.o: $(HACK_SRC)/xlockmore.h
+splitflap_obj.o: ../../config.h
+splitflap_obj.o: $(srcdir)/gllist.h
+splodesic.o: ../../config.h
+splodesic.o: $(HACK_SRC)/fps.h
+splodesic.o: $(srcdir)/gltrackball.h
+splodesic.o: $(srcdir)/normals.h
+splodesic.o: $(HACK_SRC)/recanim.h
+splodesic.o: $(srcdir)/rotator.h
+splodesic.o: $(HACK_SRC)/screenhackI.h
+splodesic.o: $(UTILS_SRC)/colors.h
+splodesic.o: $(UTILS_SRC)/erase.h
+splodesic.o: $(UTILS_SRC)/font-retry.h
+splodesic.o: $(UTILS_SRC)/grabscreen.h
+splodesic.o: $(UTILS_SRC)/hsv.h
+splodesic.o: $(UTILS_SRC)/resources.h
+splodesic.o: $(UTILS_SRC)/usleep.h
+splodesic.o: $(UTILS_SRC)/visual.h
+splodesic.o: $(UTILS_SRC)/yarandom.h
+splodesic.o: $(HACK_SRC)/xlockmoreI.h
+splodesic.o: $(HACK_SRC)/xlockmore.h
+sproingies.o: ../../config.h
+sproingies.o: $(HACK_SRC)/fps.h
+sproingies.o: $(srcdir)/gllist.h
+sproingies.o: $(HACK_SRC)/recanim.h
+sproingies.o: $(HACK_SRC)/screenhackI.h
+sproingies.o: $(srcdir)/sproingies.h
+sproingies.o: $(UTILS_SRC)/colors.h
+sproingies.o: $(UTILS_SRC)/erase.h
+sproingies.o: $(UTILS_SRC)/font-retry.h
+sproingies.o: $(UTILS_SRC)/grabscreen.h
+sproingies.o: $(UTILS_SRC)/hsv.h
+sproingies.o: $(UTILS_SRC)/resources.h
+sproingies.o: $(UTILS_SRC)/usleep.h
+sproingies.o: $(UTILS_SRC)/visual.h
+sproingies.o: $(UTILS_SRC)/yarandom.h
+sproingies.o: $(HACK_SRC)/xlockmoreI.h
+sproingiewrap.o: ../../config.h
+sproingiewrap.o: $(HACK_SRC)/fps.h
+sproingiewrap.o: $(HACK_SRC)/recanim.h
+sproingiewrap.o: $(HACK_SRC)/screenhackI.h
+sproingiewrap.o: $(srcdir)/sproingies.h
+sproingiewrap.o: $(UTILS_SRC)/colors.h
+sproingiewrap.o: $(UTILS_SRC)/erase.h
+sproingiewrap.o: $(UTILS_SRC)/font-retry.h
+sproingiewrap.o: $(UTILS_SRC)/grabscreen.h
+sproingiewrap.o: $(UTILS_SRC)/hsv.h
+sproingiewrap.o: $(UTILS_SRC)/resources.h
+sproingiewrap.o: $(UTILS_SRC)/usleep.h
+sproingiewrap.o: $(UTILS_SRC)/visual.h
+sproingiewrap.o: $(UTILS_SRC)/yarandom.h
+sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h
+sproingiewrap.o: $(HACK_SRC)/xlockmore.h
+stairs.o: ../../config.h
+stairs.o: $(HACK_SRC)/fps.h
+stairs.o: $(srcdir)/gltrackball.h
+stairs.o: $(HACK_SRC)/images/gen/wood_png.h
+stairs.o: $(HACK_SRC)/recanim.h
+stairs.o: $(HACK_SRC)/screenhackI.h
+stairs.o: $(srcdir)/sphere.h
+stairs.o: $(UTILS_SRC)/colors.h
+stairs.o: $(UTILS_SRC)/erase.h
+stairs.o: $(UTILS_SRC)/font-retry.h
+stairs.o: $(UTILS_SRC)/grabscreen.h
+stairs.o: $(UTILS_SRC)/hsv.h
+stairs.o: $(UTILS_SRC)/resources.h
+stairs.o: $(UTILS_SRC)/usleep.h
+stairs.o: $(UTILS_SRC)/visual.h
+stairs.o: $(UTILS_SRC)/yarandom.h
+stairs.o: $(HACK_SRC)/ximage-loader.h
+stairs.o: $(HACK_SRC)/xlockmoreI.h
+stairs.o: $(HACK_SRC)/xlockmore.h
+starwars.o: ../../config.h
+starwars.o: $(HACK_SRC)/fps.h
+starwars.o: $(srcdir)/glut_roman.h
+starwars.o: $(srcdir)/glutstroke.h
+starwars.o: $(HACK_SRC)/recanim.h
+starwars.o: $(HACK_SRC)/screenhackI.h
+starwars.o: $(srcdir)/starwars.h
+starwars.o: $(srcdir)/texfont.h
+starwars.o: $(UTILS_SRC)/colors.h
+starwars.o: $(UTILS_SRC)/erase.h
+starwars.o: $(UTILS_SRC)/font-retry.h
+starwars.o: $(UTILS_SRC)/grabscreen.h
+starwars.o: $(UTILS_SRC)/hsv.h
+starwars.o: $(UTILS_SRC)/resources.h
+starwars.o: $(UTILS_SRC)/textclient.h
+starwars.o: $(UTILS_SRC)/usleep.h
+starwars.o: $(UTILS_SRC)/utf8wc.h
+starwars.o: $(UTILS_SRC)/visual.h
+starwars.o: $(UTILS_SRC)/yarandom.h
+starwars.o: $(HACK_SRC)/xlockmoreI.h
+starwars.o: $(HACK_SRC)/xlockmore.h
+stonerview-move.o: ../../config.h
+stonerview-move.o: $(srcdir)/stonerview.h
+stonerview-move.o: $(srcdir)/stonerview-move.h
+stonerview-move.o: $(srcdir)/stonerview-osc.h
+stonerview-move.o: $(UTILS_SRC)/yarandom.h
+stonerview.o: ../../config.h
+stonerview.o: $(HACK_SRC)/fps.h
+stonerview.o: $(srcdir)/gltrackball.h
+stonerview.o: $(HACK_SRC)/recanim.h
+stonerview.o: $(HACK_SRC)/screenhackI.h
+stonerview.o: $(srcdir)/stonerview.h
+stonerview.o: $(srcdir)/stonerview-move.h
+stonerview.o: $(srcdir)/stonerview-osc.h
+stonerview.o: $(UTILS_SRC)/colors.h
+stonerview.o: $(UTILS_SRC)/erase.h
+stonerview.o: $(UTILS_SRC)/font-retry.h
+stonerview.o: $(UTILS_SRC)/grabscreen.h
+stonerview.o: $(UTILS_SRC)/hsv.h
+stonerview.o: $(UTILS_SRC)/resources.h
+stonerview.o: $(UTILS_SRC)/usleep.h
+stonerview.o: $(UTILS_SRC)/visual.h
+stonerview.o: $(UTILS_SRC)/yarandom.h
+stonerview.o: $(HACK_SRC)/xlockmoreI.h
+stonerview.o: $(HACK_SRC)/xlockmore.h
+stonerview-osc.o: ../../config.h
+stonerview-osc.o: $(srcdir)/stonerview.h
+stonerview-osc.o: $(srcdir)/stonerview-move.h
+stonerview-osc.o: $(srcdir)/stonerview-osc.h
+stonerview-osc.o: $(UTILS_SRC)/yarandom.h
+stonerview-view.o: ../../config.h
+stonerview-view.o: $(srcdir)/stonerview.h
+stonerview-view.o: $(srcdir)/stonerview-move.h
+stonerview-view.o: $(srcdir)/stonerview-osc.h
+superquadrics.o: ../../config.h
+superquadrics.o: $(HACK_SRC)/fps.h
+superquadrics.o: $(HACK_SRC)/recanim.h
+superquadrics.o: $(HACK_SRC)/screenhackI.h
+superquadrics.o: $(UTILS_SRC)/colors.h
+superquadrics.o: $(UTILS_SRC)/erase.h
+superquadrics.o: $(UTILS_SRC)/font-retry.h
+superquadrics.o: $(UTILS_SRC)/grabscreen.h
+superquadrics.o: $(UTILS_SRC)/hsv.h
+superquadrics.o: $(UTILS_SRC)/resources.h
+superquadrics.o: $(UTILS_SRC)/usleep.h
+superquadrics.o: $(UTILS_SRC)/visual.h
+superquadrics.o: $(UTILS_SRC)/yarandom.h
+superquadrics.o: $(HACK_SRC)/xlockmoreI.h
+superquadrics.o: $(HACK_SRC)/xlockmore.h
+surfaces.o: ../../config.h
+surfaces.o: $(HACK_SRC)/fps.h
+surfaces.o: $(srcdir)/gltrackball.h
+surfaces.o: $(HACK_SRC)/recanim.h
+surfaces.o: $(srcdir)/rotator.h
+surfaces.o: $(HACK_SRC)/screenhackI.h
+surfaces.o: $(UTILS_SRC)/colors.h
+surfaces.o: $(UTILS_SRC)/erase.h
+surfaces.o: $(UTILS_SRC)/font-retry.h
+surfaces.o: $(UTILS_SRC)/grabscreen.h
+surfaces.o: $(UTILS_SRC)/hsv.h
+surfaces.o: $(UTILS_SRC)/resources.h
+surfaces.o: $(UTILS_SRC)/usleep.h
+surfaces.o: $(UTILS_SRC)/visual.h
+surfaces.o: $(UTILS_SRC)/yarandom.h
+surfaces.o: $(HACK_SRC)/xlockmoreI.h
+surfaces.o: $(HACK_SRC)/xlockmore.h
+swim.o: $(srcdir)/atlantis.h
+swim.o: ../../config.h
+swim.o: $(HACK_SRC)/fps.h
+swim.o: $(HACK_SRC)/recanim.h
+swim.o: $(HACK_SRC)/screenhackI.h
+swim.o: $(UTILS_SRC)/colors.h
+swim.o: $(UTILS_SRC)/erase.h
+swim.o: $(UTILS_SRC)/font-retry.h
+swim.o: $(UTILS_SRC)/grabscreen.h
+swim.o: $(UTILS_SRC)/hsv.h
+swim.o: $(UTILS_SRC)/resources.h
+swim.o: $(UTILS_SRC)/usleep.h
+swim.o: $(UTILS_SRC)/visual.h
+swim.o: $(UTILS_SRC)/yarandom.h
+swim.o: $(HACK_SRC)/xlockmoreI.h
+tangram.o: ../../config.h
+tangram.o: $(HACK_SRC)/fps.h
+tangram.o: $(HACK_SRC)/recanim.h
+tangram.o: $(HACK_SRC)/screenhackI.h
+tangram.o: $(srcdir)/tangram_shapes.h
+tangram.o: $(srcdir)/texfont.h
+tangram.o: $(UTILS_SRC)/colors.h
+tangram.o: $(UTILS_SRC)/erase.h
+tangram.o: $(UTILS_SRC)/font-retry.h
+tangram.o: $(UTILS_SRC)/grabscreen.h
+tangram.o: $(UTILS_SRC)/hsv.h
+tangram.o: $(UTILS_SRC)/resources.h
+tangram.o: $(UTILS_SRC)/usleep.h
+tangram.o: $(UTILS_SRC)/visual.h
+tangram.o: $(UTILS_SRC)/yarandom.h
+tangram.o: $(HACK_SRC)/xlockmoreI.h
+tangram.o: $(HACK_SRC)/xlockmore.h
+tangram_shapes.o: ../../config.h
+tangram_shapes.o: $(srcdir)/tangram_shapes.h
+teapot.o: ../../config.h
+teapot.o: $(srcdir)/teapot.h
+texfont.o: ../../config.h
+texfont.o: $(HACK_SRC)/fps.h
+texfont.o: $(srcdir)/texfont.h
+texfont.o: $(UTILS_SRC)/pow2.h
+texfont.o: $(UTILS_SRC)/resources.h
+texfont.o: $(UTILS_SRC)/xft.h
+texfont.o: $(UTILS_SRC)/xshm.h
+timetunnel.o: ../../config.h
+timetunnel.o: $(HACK_SRC)/fps.h
+timetunnel.o: $(srcdir)/gltrackball.h
+timetunnel.o: $(HACK_SRC)/images/gen/logo-180_png.h
+timetunnel.o: $(HACK_SRC)/images/gen/timetunnel0_png.h
+timetunnel.o: $(HACK_SRC)/images/gen/timetunnel1_png.h
+timetunnel.o: $(HACK_SRC)/images/gen/timetunnel2_png.h
+timetunnel.o: $(HACK_SRC)/images/gen/tunnelstar_png.h
+timetunnel.o: $(HACK_SRC)/recanim.h
+timetunnel.o: $(srcdir)/rotator.h
+timetunnel.o: $(HACK_SRC)/screenhackI.h
+timetunnel.o: $(UTILS_SRC)/colors.h
+timetunnel.o: $(UTILS_SRC)/erase.h
+timetunnel.o: $(UTILS_SRC)/font-retry.h
+timetunnel.o: $(UTILS_SRC)/grabscreen.h
+timetunnel.o: $(UTILS_SRC)/hsv.h
+timetunnel.o: $(UTILS_SRC)/resources.h
+timetunnel.o: $(UTILS_SRC)/usleep.h
+timetunnel.o: $(UTILS_SRC)/visual.h
+timetunnel.o: $(UTILS_SRC)/yarandom.h
+timetunnel.o: $(HACK_SRC)/ximage-loader.h
+timetunnel.o: $(HACK_SRC)/xlockmoreI.h
+timetunnel.o: $(HACK_SRC)/xlockmore.h
+toast2.o: ../../config.h
+toast2.o: $(srcdir)/gllist.h
+toaster_base.o: ../../config.h
+toaster_base.o: $(srcdir)/gllist.h
+toaster_handle2.o: ../../config.h
+toaster_handle2.o: $(srcdir)/gllist.h
+toaster_handle.o: ../../config.h
+toaster_handle.o: $(srcdir)/gllist.h
+toaster_jet.o: ../../config.h
+toaster_jet.o: $(srcdir)/gllist.h
+toaster_knob.o: ../../config.h
+toaster_knob.o: $(srcdir)/gllist.h
+toaster.o: ../../config.h
+toaster.o: $(srcdir)/gllist.h
+toaster_slots.o: ../../config.h
+toaster_slots.o: $(srcdir)/gllist.h
+toaster_wing.o: ../../config.h
+toaster_wing.o: $(srcdir)/gllist.h
+toast.o: ../../config.h
+toast.o: $(srcdir)/gllist.h
+topblock.o: ../../config.h
+topblock.o: $(HACK_SRC)/fps.h
+topblock.o: $(srcdir)/gltrackball.h
+topblock.o: $(HACK_SRC)/recanim.h
+topblock.o: $(HACK_SRC)/screenhackI.h
+topblock.o: $(srcdir)/sphere.h
+topblock.o: $(srcdir)/topblock.h
+topblock.o: $(srcdir)/tube.h
+topblock.o: $(UTILS_SRC)/colors.h
+topblock.o: $(UTILS_SRC)/erase.h
+topblock.o: $(UTILS_SRC)/font-retry.h
+topblock.o: $(UTILS_SRC)/grabscreen.h
+topblock.o: $(UTILS_SRC)/hsv.h
+topblock.o: $(UTILS_SRC)/resources.h
+topblock.o: $(UTILS_SRC)/usleep.h
+topblock.o: $(UTILS_SRC)/visual.h
+topblock.o: $(UTILS_SRC)/yarandom.h
+topblock.o: $(HACK_SRC)/xlockmoreI.h
+topblock.o: $(HACK_SRC)/xlockmore.h
+trackball.o: ../../config.h
+trackball.o: $(srcdir)/trackball.h
+tronbit_idle1.o: ../../config.h
+tronbit_idle1.o: $(srcdir)/gllist.h
+tronbit_idle2.o: ../../config.h
+tronbit_idle2.o: $(srcdir)/gllist.h
+tronbit_no.o: ../../config.h
+tronbit_no.o: $(srcdir)/gllist.h
+tronbit.o: ../../config.h
+tronbit.o: $(HACK_SRC)/fps.h
+tronbit.o: $(srcdir)/gllist.h
+tronbit.o: $(srcdir)/gltrackball.h
+tronbit.o: $(HACK_SRC)/recanim.h
+tronbit.o: $(srcdir)/rotator.h
+tronbit.o: $(HACK_SRC)/screenhackI.h
+tronbit.o: $(srcdir)/sphere.h
+tronbit.o: $(UTILS_SRC)/colors.h
+tronbit.o: $(UTILS_SRC)/erase.h
+tronbit.o: $(UTILS_SRC)/font-retry.h
+tronbit.o: $(UTILS_SRC)/grabscreen.h
+tronbit.o: $(UTILS_SRC)/hsv.h
+tronbit.o: $(UTILS_SRC)/resources.h
+tronbit.o: $(UTILS_SRC)/usleep.h
+tronbit.o: $(UTILS_SRC)/visual.h
+tronbit.o: $(UTILS_SRC)/yarandom.h
+tronbit.o: $(HACK_SRC)/xlockmoreI.h
+tronbit.o: $(HACK_SRC)/xlockmore.h
+tronbit_yes.o: ../../config.h
+tronbit_yes.o: $(srcdir)/gllist.h
+tube.o: ../../config.h
+tube.o: $(srcdir)/tube.h
+tunnel_draw.o: ../../config.h
+tunnel_draw.o: $(HACK_SRC)/fps.h
+tunnel_draw.o: $(HACK_SRC)/recanim.h
+tunnel_draw.o: $(HACK_SRC)/screenhackI.h
+tunnel_draw.o: $(srcdir)/tunnel_draw.h
+tunnel_draw.o: $(UTILS_SRC)/colors.h
+tunnel_draw.o: $(UTILS_SRC)/erase.h
+tunnel_draw.o: $(UTILS_SRC)/font-retry.h
+tunnel_draw.o: $(UTILS_SRC)/grabscreen.h
+tunnel_draw.o: $(UTILS_SRC)/hsv.h
+tunnel_draw.o: $(UTILS_SRC)/resources.h
+tunnel_draw.o: $(UTILS_SRC)/usleep.h
+tunnel_draw.o: $(UTILS_SRC)/visual.h
+tunnel_draw.o: $(UTILS_SRC)/yarandom.h
+tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h
+unicrud.o: ../../config.h
+unicrud.o: $(HACK_SRC)/fps.h
+unicrud.o: $(srcdir)/gltrackball.h
+unicrud.o: $(HACK_SRC)/recanim.h
+unicrud.o: $(srcdir)/rotator.h
+unicrud.o: $(HACK_SRC)/screenhackI.h
+unicrud.o: $(srcdir)/texfont.h
+unicrud.o: $(UTILS_SRC)/colors.h
+unicrud.o: $(UTILS_SRC)/erase.h
+unicrud.o: $(UTILS_SRC)/font-retry.h
+unicrud.o: $(UTILS_SRC)/grabscreen.h
+unicrud.o: $(UTILS_SRC)/hsv.h
+unicrud.o: $(UTILS_SRC)/resources.h
+unicrud.o: $(UTILS_SRC)/usleep.h
+unicrud.o: $(UTILS_SRC)/utf8wc.h
+unicrud.o: $(UTILS_SRC)/visual.h
+unicrud.o: $(UTILS_SRC)/yarandom.h
+unicrud.o: $(HACK_SRC)/xlockmoreI.h
+unicrud.o: $(HACK_SRC)/xlockmore.h
+unknownpleasures.o: ../../config.h
+unknownpleasures.o: $(HACK_SRC)/fps.h
+unknownpleasures.o: $(srcdir)/gltrackball.h
+unknownpleasures.o: $(HACK_SRC)/recanim.h
+unknownpleasures.o: $(HACK_SRC)/screenhackI.h
+unknownpleasures.o: $(UTILS_SRC)/colors.h
+unknownpleasures.o: $(UTILS_SRC)/erase.h
+unknownpleasures.o: $(UTILS_SRC)/font-retry.h
+unknownpleasures.o: $(UTILS_SRC)/grabscreen.h
+unknownpleasures.o: $(UTILS_SRC)/hsv.h
+unknownpleasures.o: $(UTILS_SRC)/resources.h
+unknownpleasures.o: $(UTILS_SRC)/usleep.h
+unknownpleasures.o: $(UTILS_SRC)/visual.h
+unknownpleasures.o: $(UTILS_SRC)/yarandom.h
+unknownpleasures.o: $(HACK_SRC)/xlockmoreI.h
+unknownpleasures.o: $(HACK_SRC)/xlockmore.h
+vigilance.o: ../../config.h
+vigilance.o: $(HACK_SRC)/fps.h
+vigilance.o: $(srcdir)/gllist.h
+vigilance.o: $(srcdir)/gltrackball.h
+vigilance.o: $(srcdir)/normals.h
+vigilance.o: $(HACK_SRC)/recanim.h
+vigilance.o: $(HACK_SRC)/screenhackI.h
+vigilance.o: $(UTILS_SRC)/colors.h
+vigilance.o: $(UTILS_SRC)/erase.h
+vigilance.o: $(UTILS_SRC)/font-retry.h
+vigilance.o: $(UTILS_SRC)/grabscreen.h
+vigilance.o: $(UTILS_SRC)/hsv.h
+vigilance.o: $(UTILS_SRC)/resources.h
+vigilance.o: $(UTILS_SRC)/usleep.h
+vigilance.o: $(UTILS_SRC)/visual.h
+vigilance.o: $(UTILS_SRC)/yarandom.h
+vigilance.o: $(HACK_SRC)/ximage-loader.h
+vigilance.o: $(HACK_SRC)/xlockmoreI.h
+vigilance.o: $(HACK_SRC)/xlockmore.h
+voronoi.o: ../../config.h
+voronoi.o: $(HACK_SRC)/fps.h
+voronoi.o: $(HACK_SRC)/recanim.h
+voronoi.o: $(HACK_SRC)/screenhackI.h
+voronoi.o: $(UTILS_SRC)/colors.h
+voronoi.o: $(UTILS_SRC)/erase.h
+voronoi.o: $(UTILS_SRC)/font-retry.h
+voronoi.o: $(UTILS_SRC)/grabscreen.h
+voronoi.o: $(UTILS_SRC)/hsv.h
+voronoi.o: $(UTILS_SRC)/resources.h
+voronoi.o: $(UTILS_SRC)/usleep.h
+voronoi.o: $(UTILS_SRC)/visual.h
+voronoi.o: $(UTILS_SRC)/yarandom.h
+voronoi.o: $(HACK_SRC)/xlockmoreI.h
+voronoi.o: $(HACK_SRC)/xlockmore.h
+whale.o: $(srcdir)/atlantis.h
+whale.o: ../../config.h
+whale.o: $(HACK_SRC)/fps.h
+whale.o: $(HACK_SRC)/recanim.h
+whale.o: $(HACK_SRC)/screenhackI.h
+whale.o: $(UTILS_SRC)/colors.h
+whale.o: $(UTILS_SRC)/font-retry.h
+whale.o: $(UTILS_SRC)/grabscreen.h
+whale.o: $(UTILS_SRC)/hsv.h
+whale.o: $(UTILS_SRC)/resources.h
+whale.o: $(UTILS_SRC)/usleep.h
+whale.o: $(UTILS_SRC)/visual.h
+whale.o: $(UTILS_SRC)/yarandom.h
+winduprobot.o: ../../config.h
+winduprobot.o: $(HACK_SRC)/fps.h
+winduprobot.o: $(srcdir)/gllist.h
+winduprobot.o: $(srcdir)/gltrackball.h
+winduprobot.o: $(HACK_SRC)/images/gen/chromesphere_png.h
+winduprobot.o: $(srcdir)/involute.h
+winduprobot.o: $(HACK_SRC)/recanim.h
+winduprobot.o: $(HACK_SRC)/screenhackI.h
+winduprobot.o: $(srcdir)/sphere.h
+winduprobot.o: $(srcdir)/texfont.h
+winduprobot.o: $(UTILS_SRC)/colors.h
+winduprobot.o: $(UTILS_SRC)/erase.h
+winduprobot.o: $(UTILS_SRC)/font-retry.h
+winduprobot.o: $(UTILS_SRC)/grabscreen.h
+winduprobot.o: $(UTILS_SRC)/hsv.h
+winduprobot.o: $(UTILS_SRC)/resources.h
+winduprobot.o: $(UTILS_SRC)/textclient.h
+winduprobot.o: $(UTILS_SRC)/usleep.h
+winduprobot.o: $(UTILS_SRC)/visual.h
+winduprobot.o: $(UTILS_SRC)/yarandom.h
+winduprobot.o: $(HACK_SRC)/ximage-loader.h
+winduprobot.o: $(HACK_SRC)/xlockmoreI.h
+winduprobot.o: $(HACK_SRC)/xlockmore.h
+xlock-gl-utils.o: ../../config.h
+xlock-gl-utils.o: $(HACK_SRC)/fps.h
+xlock-gl-utils.o: $(HACK_SRC)/recanim.h
+xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h
+xlock-gl-utils.o: $(srcdir)/texfont.h
+xlock-gl-utils.o: $(UTILS_SRC)/colors.h
+xlock-gl-utils.o: $(UTILS_SRC)/erase.h
+xlock-gl-utils.o: $(UTILS_SRC)/font-retry.h
+xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h
+xlock-gl-utils.o: $(UTILS_SRC)/hsv.h
+xlock-gl-utils.o: $(UTILS_SRC)/resources.h
+xlock-gl-utils.o: $(UTILS_SRC)/usleep.h
+xlock-gl-utils.o: $(UTILS_SRC)/visual.h
+xlock-gl-utils.o: $(UTILS_SRC)/yarandom.h
+xlock-gl-utils.o: $(HACK_SRC)/xlockmoreI.h
+xscreensaver-gl-helper.o: ../../config.h
+xscreensaver-gl-helper.o: $(UTILS_SRC)/utils.h
+xscreensaver-gl-helper.o: $(UTILS_SRC)/visual.h
+
diff --git a/hacks/glx/README b/hacks/glx/README
new file mode 100644
index 0000000..5142503
--- /dev/null
+++ b/hacks/glx/README
@@ -0,0 +1,10 @@
+
+This directory contains various graphics hacks that requre OpenGL. These are
+independent from the xscreensaver program (in the ../../driver/ directory)
+but some of them use the utility functions found in the ../../utils/ directory.
+
+If you have compilation problems, check the parameters in ../../config.h.
+
+If you're looking for a free implementation of the OpenGL library,
+check out . For general OpenGL info, see
+.
diff --git a/hacks/glx/antinspect.c b/hacks/glx/antinspect.c
new file mode 100644
index 0000000..ad3bef5
--- /dev/null
+++ b/hacks/glx/antinspect.c
@@ -0,0 +1,704 @@
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Copyright 2004 Blair Tennessy
+ * tennessy@cs.ubc.ca
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n"
+
+# define free_antinspect 0
+# define release_antinspect 0
+#include "xlockmore.h"
+#else
+#include "xlock.h"
+#endif
+
+#ifdef HAVE_JWXYZ
+# include "jwxyz.h"
+#else
+# include
+# include
+# include
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+#include "sphere.h"
+#include "gltrackball.h"
+
+#define DEF_SHADOWS "True"
+
+static int shadows;
+
+static XrmOptionDescRec opts[] = {
+ {"-shadows", ".antinspect.shadows", XrmoptionNoArg, "on"},
+ {"+shadows", ".antinspect.shadows", XrmoptionNoArg, "off"}
+};
+
+static argtype vars[] = {
+ {&shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool}
+};
+
+static OptionStruct desc[] = {
+ {"-/+shadows", "turn on/off ant shadows"}
+};
+
+ENTRYPOINT ModeSpecOpt antinspect_opts = {sizeof opts / sizeof opts[0],
+ opts,
+ sizeof vars / sizeof vars[0],
+ vars,
+ desc};
+
+#ifdef USE_MODULES
+ModStruct antinspect_description =
+ {"antinspect", "init_antinspect", "draw_antinspect", (char *) NULL,
+ "draw_antinspect", "change_antinspect", (char *) NULL, &antinspect_opts,
+ 1000, 1, 1, 1, 4, 1.0, "",
+ "draws some ants", 0, NULL};
+#endif
+
+#define Scale4Window 0.3
+#define Scale4Iconic 0.4
+
+#define sqr(A) ((A)*(A))
+
+#ifndef Pi
+#define Pi M_PI
+#endif
+
+#define ObjAntinspectStrip 0
+#define ObjAntBody 1
+#define MaxObj 2
+
+/*************************************************************************/
+
+typedef struct {
+ GLint WindH, WindW;
+ GLfloat step;
+ GLfloat ant_position;
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+ int linewidth;
+ float ant_step;
+
+} antinspectstruct;
+
+static const float front_shininess[] = {60.0};
+static const float front_specular[] = {0.7, 0.7, 0.7, 1.0};
+static const float ambient[] = {0.0, 0.0, 0.0, 1.0};
+static const float diffuse[] = {1.0, 1.0, 1.0, 1.0};
+static float position0[] = {0.0, 3.0, 0.0, 1.0};
+static const float position1[] = {-1.0, -3.0, 1.0, 0.0};
+static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0};
+static const float lmodel_twoside[] = {GL_TRUE};
+
+static const float MaterialRed[] = {0.6, 0.0, 0.0, 1.0};
+static const float MaterialOrange[] = {1.0, 0.69, 0.00, 1.0};
+static const float MaterialGray[] = {0.2, 0.2, 0.2, 1.0};
+static const float MaterialBlack[] = {0.1, 0.1, 0.1, 0.4};
+static const float MaterialShadow[] = {0.3, 0.3, 0.3, 0.3};
+static const float MaterialGray5[] = {0.5, 0.5, 0.5, 0.3};
+static const float MaterialGray6[] = {0.6, 0.6, 0.6, 1.0};
+
+static antinspectstruct *antinspect = (antinspectstruct *) NULL;
+
+#define NUM_SCENES 2
+
+enum {X, Y, Z, W};
+enum {A, B, C, D};
+
+/* create a matrix that will project the desired shadow */
+static void shadowmatrix(GLfloat shadowMat[4][4],
+ const GLfloat groundplane[4],
+ const GLfloat lightpos[4])
+{
+ GLfloat dot;
+
+ /* find dot product between light position vector and ground plane normal */
+ dot = groundplane[X] * lightpos[X] +
+ groundplane[Y] * lightpos[Y] +
+ groundplane[Z] * lightpos[Z] +
+ groundplane[W] * lightpos[W];
+
+ shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
+ shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
+ shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
+ shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
+
+ shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
+ shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
+ shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
+ shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
+
+ shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
+ shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
+ shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
+ shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
+
+ shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
+ shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
+ shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
+ shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
+}
+
+static const GLfloat ground[4] = {0.0, 1.0, 0.0, -0.00001};
+
+/* simple filled sphere */
+static Bool mySphere(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+ gluSphere(quadObj, radius, 16, 16);
+ gluDeleteQuadric(quadObj);
+#else
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (16, 16, False);
+ glPopMatrix();
+#endif
+ return True;
+}
+
+/* caged sphere */
+static Bool mySphere2(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_LINE);/*GLU_SILHOUETTE);*/
+ gluSphere(quadObj, radius, 16, 8);
+ gluDeleteQuadric(quadObj);
+#else
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (16, 8, True);
+ glPopMatrix();
+#endif
+
+ return True;
+}
+
+/* null cone */
+static Bool myCone2(float radius)
+{
+ return True;
+}
+
+/* draw an ant */
+static Bool draw_antinspect_ant(ModeInfo *mi, antinspectstruct * mp,
+ const float *Material, int mono,
+ Bool (*sphere)(float), Bool (*cone)(float))
+{
+ float cos1 = cos(mp->ant_step);
+ float cos2 = cos(mp->ant_step + 2 * Pi / 3);
+ float cos3 = cos(mp->ant_step + 4 * Pi / 3);
+ float sin1 = sin(mp->ant_step);
+ float sin2 = sin(mp->ant_step + 2 * Pi / 3);
+ float sin3 = sin(mp->ant_step + 4 * Pi / 3);
+
+ if (mono)
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5);
+ else
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Material);
+ glEnable(GL_CULL_FACE);
+ glPushMatrix();
+ glScalef(1, 1.3, 1);
+ if (!((*sphere)(0.18)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glTranslatef(0.00, 0.30, 0.00);
+ if (!((*sphere)(0.2)))
+ return False;
+
+ glTranslatef(-0.05, 0.17, 0.05);
+ glRotatef(-90, 1, 0, 0);
+ glRotatef(-25, 0, 1, 0);
+ if (!((*cone)(0.05)))
+ return False;
+ glTranslatef(0.00, 0.10, 0.00);
+ if (!((*cone)(0.05)))
+ return False;
+ glRotatef(25, 0, 1, 0);
+ glRotatef(90, 1, 0, 0);
+
+ glScalef(1, 1.3, 1);
+ glTranslatef(0.15, -0.65, 0.05);
+ if (!((*sphere)(0.25)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glPopMatrix();
+ glDisable(GL_CULL_FACE);
+
+ glDisable(GL_LIGHTING);
+
+ /* ANTENNAS */
+ glBegin(GL_LINES);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+ glBegin(GL_POINTS);
+ if (mono)
+ glColor3fv(MaterialGray6);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.00, 0.18);
+ glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+ mi->polygon_count++;
+ glEnd();
+ mi->polygon_count++;
+
+ /* LEFT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, -0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, 0.00, -0.18);
+ glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ if (mono)
+ glColor3fv(MaterialGray5);
+ else
+ glColor3fv(Material);
+ glVertex3f(0.00, -0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ glEnable(GL_LIGHTING);
+
+ return True;
+}
+
+/* only works with 3 right now */
+#define ANTCOUNT 3
+
+static const float MaterialBen[4] = {0.25, 0.30, 0.46, 1.0};
+
+static const float* antmaterial[ANTCOUNT] =
+ {MaterialRed, MaterialBen, MaterialOrange};
+static double antposition[ANTCOUNT] = {0.0, 120.0, 240.0};
+static const double antvelocity[ANTCOUNT] = {0.3, 0.3, 0.3};
+static const double antsphere[ANTCOUNT] = {1.2, 1.2, 1.2};
+
+/* permutations */
+static const double antorder[6][ANTCOUNT] = {{0, 1, 2},
+ {0, 2, 1},
+ {2, 0, 1},
+ {2, 1, 0},
+ {1, 2, 0},
+ {1, 0, 2}};
+
+/* draw the scene */
+static Bool draw_antinspect_strip(ModeInfo * mi)
+{
+ antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+ int i, j;
+ int mono = MI_IS_MONO(mi);
+
+ int ro = (((int)antposition[1])/(360/(2*ANTCOUNT))) % (2*ANTCOUNT);
+
+ glEnable(GL_TEXTURE_2D);
+ position0[1] = 9.6;
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray5);
+ glRotatef(-30.0, 0.0, 1.0, 0.0);
+
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+
+ /* render ground plane */
+ glBegin(GL_TRIANGLES);
+ glColor4fv(MaterialShadow);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlack);
+ glNormal3f(0.0, 1.0, 0.0);
+
+ /* middle tri */
+ glVertex3f(0.0, 0.0, -1.0);
+ glVertex3f(-sqrt(3.0)/2.0, 0.0, 0.5);
+ glVertex3f(sqrt(3.0)/2.0, 0.0, 0.5);
+ mi->polygon_count++;
+ glEnd();
+
+ /* rotate */
+ for(i = 0; i < 3; ++i) {
+ glRotatef(120.0, 0.0, 1.0, 0.0);
+ glBegin(GL_TRIANGLES);
+ glVertex3f(0.0, 0.0, 1.0 + 3.0);
+ glVertex3f(sqrt(3.0)/2.0, 0.0, -0.5 + 3.0);
+ glVertex3f(-sqrt(3.0)/2.0, 0.0, -0.5 + 3.0);
+ mi->polygon_count++;
+ glEnd();
+ }
+
+ /* first render shadows -- no depth required */
+ if(shadows) {
+ GLfloat m[4][4];
+ shadowmatrix(m, ground, position0);
+
+ glColor4fv(MaterialShadow);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+
+ glDisable(GL_BLEND);
+ glDisable(GL_LIGHTING);
+
+ /* display ant shadow */
+ glPushMatrix();
+ glTranslatef(0.0, 0.001, 0.0);
+ glMultMatrixf(m[0]);
+
+ for(i = 0; i < ANTCOUNT; ++i) {
+
+ /* draw ant */
+ glPushMatrix();
+
+ /* center */
+ glRotatef(antposition[i], 0.0, 1.0, 0.0);
+ glTranslatef(2.4, 0.0, 0.0);
+ glTranslatef(0.0, antsphere[i], 0.0);
+ glRotatef(90.0, 0.0, 1.0, 0.0);
+
+ /* orient ant */
+ glRotatef(10.0, 0.0, 1.0, 0.0);
+ glRotatef(40.0, 0.0, 0.0, 1.0);
+ glTranslatef(0.0, -0.8, 0.0);
+ glRotatef(180.0, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+
+ /* set colour */
+ glColor4fv(MaterialShadow);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+
+ if(antposition[i] > 360.0)
+ antposition[i] = 0.0;
+ draw_antinspect_ant(mi, mp, MaterialShadow, mono, mySphere2, myCone2);
+
+ glDisable(GL_BLEND);
+ glDisable(GL_LIGHTING);
+
+ /* draw sphere */
+ glRotatef(-20.0, 1.0, 0.0, 0.0);
+ glRotatef(-mp->ant_step*2, 0.0, 0.0, 1.0);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+ mySphere2(1.2);
+
+ glPopMatrix();
+ }
+
+ glPopMatrix();
+ }
+
+ glEnable(GL_LIGHTING);
+
+ /* truants */
+ for(j = 0; j < ANTCOUNT; ++j) {
+ /* determine rendering order */
+ i = antorder[ro][j];
+
+ glPushMatrix();
+
+ /* center */
+ glRotatef(antposition[i], 0.0, 1.0, 0.0);
+ glTranslatef(2.4, 0.0, 0.0);
+ glTranslatef(0.0, antsphere[i], 0.0);
+ glRotatef(90.0, 0.0, 1.0, 0.0);
+
+ /* draw ant */
+ glPushMatrix();
+ glRotatef(10.0, 0.0, 1.0, 0.0);
+ glRotatef(40.0, 0.0, 0.0, 1.0);
+ glTranslatef(0.0, -0.8, 0.0);
+ glRotatef(180.0, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+ if(antposition[i] > 360.0)
+ antposition[i] = 0.0;
+ glEnable(GL_BLEND);
+ draw_antinspect_ant(mi, mp, antmaterial[i], mono, mySphere2, myCone2);
+ glDisable(GL_BLEND);
+ glPopMatrix();
+
+ /* draw sphere */
+ glRotatef(-20.0, 1.0, 0.0, 0.0);
+ glRotatef(-mp->ant_step*2, 0.0, 0.0, 1.0);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mono ? MaterialGray5 : antmaterial[i]);
+ mySphere2(1.2);
+ glEnable(GL_BLEND);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialBlack);
+ mySphere(1.16);
+ glDisable(GL_BLEND);
+
+ glPopMatrix();
+
+ /* finally, evolve */
+ antposition[i] += antvelocity[i];
+ }
+
+ /* but the step size is the same! */
+ mp->ant_step += 0.2;
+
+ mp->ant_position += 1;
+ return True;
+}
+
+ENTRYPOINT void reshape_antinspect(ModeInfo * mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+ antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+ mp->linewidth = (width / 512) + 1;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, mp->WindW = (GLint) width, mp->WindH = (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ gluPerspective(45, 1/h, 7.0, 20.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLineWidth(mp->linewidth);
+ glPointSize(mp->linewidth);
+}
+
+static void pinit(void)
+{
+ glClearDepth(1.0);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION, position1);
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+ glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_NORMALIZE);
+ glFrontFace(GL_CCW);
+
+ /* antinspect */
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glDisable(GL_TEXTURE_2D);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+}
+
+ENTRYPOINT Bool antinspect_handle_event (ModeInfo *mi, XEvent *event)
+{
+ antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, mp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &mp->button_down_p))
+ return True;
+
+ return False;
+}
+
+ENTRYPOINT void init_antinspect(ModeInfo * mi)
+{
+ antinspectstruct *mp;
+
+ MI_INIT(mi, antinspect);
+ mp = &antinspect[MI_SCREEN(mi)];
+ mp->step = NRAND(90);
+ mp->ant_position = NRAND(90);
+ mp->trackball = gltrackball_init (False);
+
+ if ((mp->glx_context = init_GL(mi)) != NULL) {
+ reshape_antinspect(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ pinit();
+ }
+ else
+ MI_CLEARWINDOW(mi);
+
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+}
+
+ENTRYPOINT void draw_antinspect(ModeInfo * mi)
+{
+ antinspectstruct *mp;
+
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if(!antinspect)
+ return;
+ mp = &antinspect[MI_SCREEN(mi)];
+
+ MI_IS_DRAWN(mi) = True;
+
+ if(!mp->glx_context)
+ return;
+
+ glXMakeCurrent(display, window, *(mp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+
+ mi->polygon_count = 0;
+
+ /* position camera --- this works well, we can peer inside
+ the antbubble */
+ glTranslatef(0.0, 0.0, -10.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ glRotatef(o, 0, 0, 1);
+ }
+# endif
+
+ gltrackball_rotate(mp->trackball);
+ glRotatef((15.0/2.0 + 15.0*sin(mp->ant_step/100.0)), 1.0, 0.0, 0.0);
+ glRotatef(30.0, 1.0, 0.0, 0.0);
+ glRotatef(180.0, 0.0, 1.0, 0.0);
+
+ if (!draw_antinspect_strip(mi)) {
+ MI_ABORT(mi);
+ return;
+ }
+
+ glPopMatrix();
+
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glFlush();
+
+ glXSwapBuffers(display, window);
+
+ mp->step += 0.025;
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void change_antinspect(ModeInfo * mi)
+{
+ antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+
+ if (!mp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ pinit();
+}
+#endif /* !STANDALONE */
+
+
+XSCREENSAVER_MODULE ("AntInspect", antinspect)
diff --git a/hacks/glx/antinspect.man b/hacks/glx/antinspect.man
new file mode 100644
index 0000000..804d7a4
--- /dev/null
+++ b/hacks/glx/antinspect.man
@@ -0,0 +1,56 @@
+.TH XScreenSaver 1 "March 2004"
+.SH NAME
+antinspect \- ant model inspection screenhack
+.SH SYNOPSIS
+.B antinspect
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+.SH DESCRIPTION
+The \fIantinspect\fP code displays three ant-powered balls churning in a
+circle.
+.SH OPTIONS
+.I antinspect
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-shadows
+Draw shadows on ground
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2004 by Blair Tennessy. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy , 15-March-2004.
+
diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c
new file mode 100644
index 0000000..79b7e0b
--- /dev/null
+++ b/hacks/glx/antmaze.c
@@ -0,0 +1,1613 @@
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Copyright 2004 Blair Tennessy
+ * tennessy@cs.ubc.ca
+ */
+
+#if 0
+static const char sccsid[] = "@(#)antmaze.c 5.01 2001/03/01 xlockmore";
+#endif
+
+#ifdef STANDALONE
+# define MODE_antmaze
+# define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*fpsSolid: True \n"
+
+# define free_antmaze 0
+# define release_antmaze 0
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef HAVE_JWXYZ
+# include "jwxyz.h"
+#else
+# include
+# include
+# include
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+#ifdef MODE_antmaze
+
+
+#include "sphere.h"
+#include "tube.h"
+#include "rotator.h"
+#include "gltrackball.h"
+
+#define DEF_SOLIDANTMAZE "False"
+#define DEF_NOANTS "False"
+
+static int solidantmaze;
+static int noants;
+
+static XrmOptionDescRec opts[] =
+{
+ {"-solidantmaze", ".antmaze.solidantmaze", XrmoptionNoArg, "on"},
+ {"+solidantmaze", ".antmaze.solidantmaze", XrmoptionNoArg, "off"},
+ {"-noants", ".antmaze.noants", XrmoptionNoArg, "on"},
+ {"+noants", ".antmaze.noants", XrmoptionNoArg, "off"}
+};
+static argtype vars[] =
+{
+ {&solidantmaze, "solidantmaze", "Solidantmaze", DEF_SOLIDANTMAZE, t_Bool},
+ {&noants, "noants", "Noants", DEF_NOANTS, t_Bool}
+};
+
+static OptionStruct desc[] =
+{
+ {"-/+solidantmaze", "select between a SOLID or a NET Antmaze Strip"},
+ {"-/+noants", "turn on/off walking ants"}
+};
+
+ENTRYPOINT ModeSpecOpt antmaze_opts =
+{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
+
+#ifdef USE_MODULES
+ModStruct antmaze_description =
+{"antmaze", "init_antmaze", "draw_antmaze", NULL,
+ "draw_antmaze", "change_antmaze", NULL, &antmaze_opts,
+ 1000, 1, 1, 1, 4, 1.0, "",
+ "draws some ants", 0, NULL};
+
+#endif
+
+#define Scale4Window 0.3
+#define Scale4Iconic 0.4
+
+#define sqr(A) ((A)*(A))
+
+#ifndef Pi
+#define Pi M_PI
+#endif
+
+#define ObjAntmazeStrip 0
+#define ObjAntBody 1
+#define MaxObj 2
+
+/*************************************************************************/
+
+#include "ants.h"
+
+#define ANTCOUNT 5
+#define PI 3.14157
+
+#define EPSILON 0.01
+#define BOARDSIZE 10
+#define BOARDCOUNT 2
+#define PARTS 20
+
+#define checkImageWidth 64
+#define checkImageHeight 64
+
+typedef struct {
+ GLint WindH, WindW;
+ GLfloat step;
+ GLfloat ant_position;
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ int focus;
+ int currentboard;
+
+ double antdirection[ANTCOUNT];
+ double antposition[ANTCOUNT][3];
+ int anton[ANTCOUNT];
+
+ double antvelocity[ANTCOUNT];
+ double antsize[ANTCOUNT];
+ int bposition[ANTCOUNT][2];
+ int board[BOARDCOUNT][10][10];
+
+ int part[ANTCOUNT];
+ double antpath[ANTCOUNT][PARTS][2];
+ int antpathlength[ANTCOUNT];
+
+ GLubyte checkers[checkImageWidth][checkImageHeight][3];
+
+ GLuint checktexture, brushedtexture;
+ double elevator;
+
+ double ant_step;
+ double first_ant_step;
+ int started;
+ int introduced;
+ int entroducing;
+
+ double fadeout;
+ double fadeoutspeed;
+
+ int mag;
+
+} antmazestruct;
+
+static antmazestruct *antmaze = (antmazestruct *) NULL;
+
+
+static const GLfloat MaterialRed[] = {0.6, 0.0, 0.0, 1.0};
+/*static const GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0};*/
+static const GLfloat MaterialGray8[] = {0.8, 0.8, 0.8, 1.0};
+static const GLfloat MaterialGray35[] = {0.30, 0.30, 0.30, 1.0};
+static const GLfloat MaterialGray4[] = {0.40, 0.40, 0.40, 1.0};
+static const GLfloat MaterialOrange[] = {1.0, 0.69, 0.00, 1.0};
+static const GLfloat MaterialGreen[] = {0.1, 0.4, 0.2, 1.0};
+
+/* lighting variables */
+static const GLfloat front_shininess[] = {60.0};
+static const GLfloat front_specular[] = {0.8, 0.8, 0.8, 1.0};
+static const GLfloat ambient[] = {0.1, 0.1, 0.1, 1.0};
+/*static const GLfloat ambient2[] = {0.0, 0.0, 0.0, 0.0};*/
+static const GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0};
+static const GLfloat position0[] = {1.0, 5.0, 1.0, 1.0};
+static const GLfloat position1[] = {-1.0, -5.0, 1.0, 1.0};
+/*static const GLfloat lmodel_ambient[] = {0.8, 0.8, 0.8, 1.0};*/
+/*static const GLfloat lmodel_twoside[] = {GL_TRUE};*/
+/*static const GLfloat spotlight_ambient[] = { 0.0, 0.0, 0.0, 1.0 };*/
+/*static const GLfloat spotlight_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };*/
+
+#define NUM_SCENES 2
+
+/* filled sphere */
+static Bool mySphere(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+ gluSphere(quadObj, radius, 16, 16);
+ gluDeleteQuadric(quadObj);
+#else
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (16, 16, False);
+ glPopMatrix();
+#endif
+ return True;
+}
+
+#if 0
+/* silhouette sphere */
+static Bool mySphere2(float radius)
+{
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_SILHOUETTE);
+ gluSphere(quadObj, radius, 16, 8);
+ gluDeleteQuadric(quadObj);
+
+ return True;
+}
+#endif
+
+/* textured sphere */
+static Bool mySphereTex(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+ gluQuadricTexture(quadObj, GL_TRUE);
+ gluQuadricNormals(quadObj, GLU_SMOOTH);
+ gluSphere(quadObj, radius, 32, 16);
+ gluDeleteQuadric(quadObj);
+#else
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (32, 16, False);
+ glPopMatrix();
+#endif
+
+ return True;
+}
+
+/* filled cone */
+static Bool myCone(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if ((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+ gluCylinder(quadObj, radius, 0, radius * 2, 8, 1);
+ gluDeleteQuadric(quadObj);
+#else
+ cone (0, 0, 0,
+ 0, 0, radius * 2,
+ radius, 0,
+ 8, True, True, False);
+#endif
+ return True;
+}
+
+/* no cone */
+static Bool myCone2(float radius) { return True; }
+
+#define MATERIALS 4
+static const float *antmaterial[ANTCOUNT] =
+ {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange, MaterialGreen};
+
+static const float *materials[MATERIALS] =
+ {MaterialRed, MaterialGray35, MaterialGray4, MaterialOrange};
+
+
+static void makeCheckImage(antmazestruct *mp)
+{
+ int i, j;
+
+ for (i = 0; i < checkImageWidth; i++) {
+ for (j = 0; j < checkImageHeight; j++) {
+ if(((((i&0x8)==0)^((j&0x8)))==0)) {
+ int c = 102 + random()%32;
+ mp->checkers[i][j][0] = c;
+ mp->checkers[i][j][1] = c;
+ mp->checkers[i][j][2] = c;
+ }
+ else {
+ int c = 153 + random()%32;
+ mp->checkers[i][j][0] = c;/*153;*/
+ mp->checkers[i][j][1] = c;/*c;*//*0;*/
+ mp->checkers[i][j][2] = c;/*c;*//*0;*/
+ }
+ }
+ }
+
+ glGenTextures(1, &mp->checktexture);
+ glBindTexture(GL_TEXTURE_2D, mp->checktexture);
+
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+ glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
+ checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ &mp->checkers[0][0]);
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+}
+
+static void makeBrushedImage(antmazestruct *mp)
+{
+ int i, j, c;
+
+ for(i = 0; i < checkImageWidth; ++i)
+ for(j = 0; j < checkImageHeight; ++j) {
+
+ c = 102+102*fabs(sin(2.0*i / Pi)*sin(2.0*j/Pi)) + random()%51;
+
+/* c = (i+j)%8==0 || (i+j+5)%8==0 ? 153 : 102; */
+
+ mp->checkers[i][j][0] = c;
+ mp->checkers[i][j][1] = c;
+ mp->checkers[i][j][2] = c;
+ }
+
+/* for (i = 0; i < checkImageWidth; i++) { */
+/* for (j = 0; j < checkImageHeight; j++) { */
+/* int c = 102 + pow((random()%1000)/1000.0, 4)*103; */
+/* checkers[i][j][0] = c; */
+/* checkers[i][j][1] = c; */
+/* checkers[i][j][2] = c; */
+/* } */
+/* } */
+
+/* /\* smooth *\/ */
+/* for (i = 0; i < checkImageWidth; i++) { */
+/* for (j = 0; j < checkImageHeight; j++) { */
+/* int a = checkers[(i+checkImageWidth+1)%checkImageWidth][j][0] + */
+/* 4*checkers[i][j][0] + checkers[(i+1)%checkImageWidth][j][0]; */
+/* a /= 6; */
+/* checkers[i][j][0] = a; */
+/* checkers[i][j][1] = a; */
+/* checkers[i][j][2] = a; */
+/* } */
+/* } */
+
+ glGenTextures(1, &mp->brushedtexture);
+ glBindTexture(GL_TEXTURE_2D, mp->brushedtexture);
+
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+ glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
+ checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ &mp->checkers[0][0]);
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+}
+
+#if 0
+static void draw_wall(ModeInfo *mi, double x1, double z1, double x2, double z2)
+{
+ float x = fabs(x2 - x1)/2.0;
+
+ glBegin(GL_QUADS);
+
+ /* draw top */
+ glNormal3f(0.0, 1.0, 0.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(x1, 1.0, z1+0.25);
+ glTexCoord2f(x, 0.0);
+ glVertex3f(x2, 1.0, z2+0.25);
+ glTexCoord2f(x, 0.25);
+ glVertex3f(x2, 1.0, z2-0.25);
+ glTexCoord2f(0.0, 0.25);
+ glVertex3f(x1, 1.0, z1-0.25);
+ mi->polygon_count++;
+
+ /* draw sides */
+ glNormal3f(0.0, 0.0, 1.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(x1, 0.0, z1+0.25);
+ glTexCoord2f(x, 0.0);
+ glVertex3f(x2, 0.0, z2+0.25);
+ glTexCoord2f(x, 0.5);
+ glVertex3f(x2, 1.0, z2+0.25);
+ glTexCoord2f(0.0, 0.5);
+ glVertex3f(x1, 1.0, z1+0.25);
+ mi->polygon_count++;
+
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(x1, 0.0, z1-0.25);
+ glTexCoord2f(x, 0.0);
+ glVertex3f(x2, 0.0, z2-0.25);
+ glTexCoord2f(x, 0.5);
+ glVertex3f(x2, 1.0, z2-0.25);
+ glTexCoord2f(0.0, 0.5);
+ glVertex3f(x1, 1.0, z1-0.25);
+ mi->polygon_count++;
+
+ /* draw ends */
+ glNormal3f(1.0, 0.0, 0.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(x2, 0.0, z2+0.25);
+ glTexCoord2f(0.25, 0.0);
+ glVertex3f(x2, 0.0, z2-0.25);
+ glTexCoord2f(0.25, 0.5);
+ glVertex3f(x2, 1.0, z2-0.25);
+ glTexCoord2f(0.0, 0.5);
+ glVertex3f(x2, 1.0, z2+0.25);
+ mi->polygon_count++;
+
+ glNormal3f(-1.0, 0.0, 0.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(x1, 0.0, z1-0.25);
+ glTexCoord2f(0.25, 0.0);
+ glVertex3f(x1, 0.0, z1+0.25);
+ glTexCoord2f(0.25, 0.5);
+ glVertex3f(x1, 1.0, z1+0.25);
+ glTexCoord2f(0.0, 0.5);
+ glVertex3f(x1, 1.0, z1-0.25);
+ mi->polygon_count++;
+
+ glEnd();
+}
+#endif
+
+static void draw_board(ModeInfo *mi, antmazestruct *mp)
+{
+
+ int i, j;
+ double h = 0.5;
+ double stf = 0.0625;
+
+ glBindTexture(GL_TEXTURE_2D, mp->checktexture);
+
+ glBegin(GL_QUADS);
+
+ for(i = 0; i < BOARDSIZE; ++i)
+ for(j = 0; j < BOARDSIZE; ++j) {
+ if(mp->board[mp->currentboard][j][i]) {
+
+/* /\* draw top *\/ */
+/* glNormal3f(0.0, 1.0, 0.0); */
+/* glTexCoord2f(0.0 + stf, 0.0 + stf); */
+/* glVertex3f(i-0.5, h, j+0.5); */
+/* glTexCoord2f(1.0 + stf, 0.0 + stf); */
+/* glVertex3f(i+0.5, h, j+0.5); */
+/* glTexCoord2f(1.0 + stf, 1.0 + stf); */
+/* glVertex3f(i+0.5, h, j-0.5); */
+/* glTexCoord2f(0.0 + stf, 1.0 + stf); */
+/* glVertex3f(i-0.5, h, j-0.5); */
+
+ /* draw top */
+ glNormal3f(0.0, 1.0, 0.0);
+ glTexCoord2f(0.0 + stf, 0.0 + stf);
+ glVertex3f(i-0.5, h, j+0.5);
+ glTexCoord2f(1.0 + stf, 0.0 + stf);
+ glVertex3f(i+0.5, h, j+0.5);
+ glTexCoord2f(1.0 + stf, 1.0 + stf);
+ glVertex3f(i+0.5, h, j-0.5);
+ glTexCoord2f(0.0 + stf, 1.0 + stf);
+ glVertex3f(i-0.5, h, j-0.5);
+ mi->polygon_count++;
+
+ /* draw south face */
+ if(j == 9 || !mp->board[mp->currentboard][j+1][i]) {
+ glNormal3f(0.0, 0.0, 1.0);
+ glTexCoord2f(0.0 + stf, 0.0 + stf);
+ glVertex3f(i-0.5, 0.0, j+0.5);
+ glTexCoord2f(1.0 + stf, 0.0 + stf);
+ glVertex3f(i+0.5, 0.0, j+0.5);
+ glTexCoord2f(1.0 + stf, h + stf);
+ glVertex3f(i+0.5, h, j+0.5);
+ glTexCoord2f(0.0 + stf, h + stf);
+ glVertex3f(i-0.5, h, j+0.5);
+ mi->polygon_count++;
+ }
+
+ /* draw north face */
+ if(j == 0 || !mp->board[mp->currentboard][j-1][i]) {
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0 + stf, 0.0 + stf);
+ glVertex3f(i+0.5, 0.0, j-0.5);
+ glTexCoord2f(1.0 + stf, 0.0 + stf);
+ glVertex3f(i-0.5, 0.0, j-0.5);
+ glTexCoord2f(1.0 + stf, h + stf);
+ glVertex3f(i-0.5, h, j-0.5);
+ glTexCoord2f(0.0 + stf, h + stf);
+ glVertex3f(i+0.5, h, j-0.5);
+ mi->polygon_count++;
+ }
+
+ /* draw east face */
+ if(i == 9 || !mp->board[mp->currentboard][j][i+1]) {
+ glNormal3f(1.0, 0.0, 0.0);
+ glTexCoord2f(0.0 + stf, 0.0 + stf);
+ glVertex3f(i+0.5, 0.0, j+0.5);
+ glTexCoord2f(1.0 + stf, 0.0 + stf);
+ glVertex3f(i+0.5, 0.0, j-0.5);
+ glTexCoord2f(1.0 + stf, h + stf);
+ glVertex3f(i+0.5, h, j-0.5);
+ glTexCoord2f(0.0 + stf, h + stf);
+ glVertex3f(i+0.5, h, j+0.5);
+ mi->polygon_count++;
+ }
+
+ /* draw west face */
+ if(i == 0 || !mp->board[mp->currentboard][j][i-1]) {
+ glNormal3f(-1.0, 0.0, 0.0);
+ glTexCoord2f(0.0 + stf, 0.0 + stf);
+ glVertex3f(i-0.5, 0.0, j-0.5);
+ glTexCoord2f(1.0 + stf, 0.0 + stf);
+ glVertex3f(i-0.5, 0.0, j+0.5);
+ glTexCoord2f(1.0 + stf, h + stf);
+ glVertex3f(i-0.5, h, j+0.5);
+ glTexCoord2f(0.0 + stf, h + stf);
+ glVertex3f(i-0.5, h, j-0.5);
+ mi->polygon_count++;
+ }
+ }
+ else {
+ double tx = 2.0;
+ glNormal3f(0.0, 1.0, 0.0);
+ glTexCoord2f(0.0, 0.0);
+ glVertex3f(i-0.5, 0.0, j+0.5);
+ glTexCoord2f(tx, 0.0);
+ glVertex3f(i+0.5, 0.0, j+0.5);
+ glTexCoord2f(tx, tx);
+ glVertex3f(i+0.5, 0.0, j-0.5);
+ glTexCoord2f(0.0, tx);
+ glVertex3f(i-0.5, 0.0, j-0.5);
+ mi->polygon_count++;
+ }
+ }
+ glEnd();
+
+/* /\* draw elevator *\/ */
+/* glBindTexture(GL_TEXTURE_2D, brushedtexture); */
+
+/* glBegin(GL_QUADS); */
+
+/* glNormal3f(0.0, 1.0, 0.0); */
+
+/* if(pastfirst) { */
+/* /\* source *\/ */
+/* glTexCoord2f(0.0, 0.0); */
+/* glVertex3f(0.5, 0.0, BOARDSIZE - 0.5 + 0.2); */
+/* glTexCoord2f(1.0, 0.0); */
+/* glVertex3f(1.5, 0.0, BOARDSIZE - 0.5 + 0.2); */
+/* glTexCoord2f(1.0, 1.5); */
+/* glVertex3f(1.5, 0.0, BOARDSIZE + 1.0 + 0.2); */
+/* glTexCoord2f(0.0, 1.5); */
+/* glVertex3f(0.5, 0.0, BOARDSIZE + 1.0 + 0.2); */
+/* mi->polygon_count++; */
+/* } */
+
+/* /\* destination *\/ */
+/* glTexCoord2f(0.0, 0.0); */
+/* glVertex3f(BOARDSIZE - 2.5, elevator, -2.0 - 0.2); */
+/* glTexCoord2f(1.0, 0.0); */
+/* glVertex3f(BOARDSIZE - 1.5, elevator, -2.0 - 0.2); */
+/* glTexCoord2f(1.0, 1.5); */
+/* glVertex3f(BOARDSIZE - 1.5, elevator, -0.5 - 0.2); */
+/* glTexCoord2f(0.0, 1.5); */
+/* glVertex3f(BOARDSIZE - 2.5, elevator, -0.5 - 0.2); */
+/* mi->polygon_count++; */
+
+/* glEnd(); */
+
+/* for(i = 0; i < BOARDSIZE; ++i) */
+/* for(j = 0; j < BOARDSIZE; ++j) { */
+/* if(board[j][i]) { */
+
+/* /\* draw brushed boxtop *\/ */
+/* glNormal3f(0.0, 1.0, 0.0); */
+/* glTexCoord2f(0.0 + stf, 0.0 + stf); */
+/* glVertex3f(i-0.5 + stf, h+0.001, j+0.5 - stf); */
+/* glTexCoord2f(1.0 + stf, 0.0 + stf); */
+/* glVertex3f(i+0.5 - stf, h+0.001, j+0.5 - stf); */
+/* glTexCoord2f(1.0 + stf, 1.0 + stf); */
+/* glVertex3f(i+0.5 - stf, h+0.001, j-0.5 + stf); */
+/* glTexCoord2f(0.0 + stf, 1.0 + stf); */
+/* glVertex3f(i-0.5 + stf, h+0.001, j-0.5 + stf); */
+/* mi->polygon_count++; */
+/* } */
+/* } */
+
+/* glEnd(); */
+}
+
+static void build_board(antmazestruct *mp, int b)
+{
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i)
+ for(j = 0; j < BOARDSIZE; ++j)
+ mp->board[b][i][j] = 1;
+
+/* for(i = 0; i < BOARDSIZE; ++i) { */
+/* board[0][i] = 1; */
+/* board[i][0] = 1; */
+/* board[BOARDSIZE-1][BOARDSIZE-i] = 1; */
+/* board[BOARDSIZE-i][BOARDSIZE-1] = 1; */
+/* } */
+
+/* board[0][BOARDSIZE-2] = 0; */
+/* board[BOARDSIZE-1][1] = 0; */
+
+
+ mp->board[b][BOARDSIZE-1][1] = 0;
+ mp->board[b][0][BOARDSIZE-2] = 0;
+
+ /* build the ant paths */
+ if(mp->currentboard == b) {
+ for(i = 0; i < ANTCOUNT; ++i) {
+ int sx = BOARDSIZE-2;
+ int sy = 1;
+
+ for(j = 0; ; ++j) {
+ mp->board[b][sx][sy] = 0;
+ mp->antpath[i][j][0] = sy - 5.0;
+ mp->antpath[i][j][1] = sx - 5.0;
+
+ if(random()%2) {
+ if(sx > 1)
+ sx -= 1;
+ else if(sy < BOARDSIZE-2)
+ sy += 1;
+ else
+ break;
+ }
+ else {
+ if(sy < BOARDSIZE-2)
+ sy += 1;
+ else if(sx > 1)
+ sx -= 1;
+ else
+ break;
+ }
+ }
+
+ ++j;
+ mp->antpath[i][j][0] = BOARDSIZE-7.0;
+ mp->antpath[i][j][1] = -7.0;
+ mp->antpathlength[i] = j;
+ }
+ }
+
+/* for(i = 0; i < 20; ++i) { */
+/* int x = 1 + random()%(BOARDSIZE-2); */
+/* int y = 1 + random()%(BOARDSIZE-2); */
+/* board[x][y] = 1; */
+/* } */
+}
+
+/* compute nearness */
+static int near(double a[2], double b[2])
+{
+ return fabs(a[0] - b[0]) < 0.5 && fabs(a[1] - b[1]) < 0.5;
+}
+
+static double sign(double d)
+{
+ return d < 0.0 ? -1.0 : 1.0;
+}
+
+static double min(double a, double b)
+{
+ return a < b ? a : b;
+}
+
+/* draw method for ant */
+static Bool draw_ant(ModeInfo *mi, antmazestruct *mp,
+ const float *Material, int mono, int shadow,
+ float ant_step, Bool (*sphere)(float), Bool (*cone)(float))
+{
+
+ float cos1 = cos(mp->ant_step);
+ float cos2 = cos(mp->ant_step + 2 * Pi / 3);
+ float cos3 = cos(mp->ant_step + 4 * Pi / 3);
+ float sin1 = sin(mp->ant_step);
+ float sin2 = sin(mp->ant_step + 2 * Pi / 3);
+ float sin3 = sin(mp->ant_step + 4 * Pi / 3);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mono ? MaterialGray5 : Material);
+
+/* glEnable(GL_CULL_FACE); */
+
+ glPushMatrix();
+ glScalef(1, 1.3, 1);
+ if(!((*sphere)(0.18)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glTranslatef(0.00, 0.30, 0.00);
+ if(!((*sphere)(0.2)))
+ return False;
+
+ glTranslatef(-0.05, 0.17, 0.05);
+ glRotatef(-90, 1, 0, 0);
+ glRotatef(-25, 0, 1, 0);
+ if(!((*cone)(0.05)))
+ return False;
+ glTranslatef(0.00, 0.10, 0.00);
+ if(!((*cone)(0.05)))
+ return False;
+ glRotatef(25, 0, 1, 0);
+ glRotatef(90, 1, 0, 0);
+
+ glScalef(1, 1.3, 1);
+ glTranslatef(0.15, -0.65, 0.05);
+ if(!((*sphere)(0.25)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glPopMatrix();
+
+/* glDisable(GL_CULL_FACE); */
+
+ glDisable(GL_LIGHTING);
+
+ /* ANTENNAS */
+ glBegin(GL_LINES);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+
+ if(!shadow) {
+ glBegin(GL_POINTS);
+ glColor3fv(mono ? MaterialGray6 : MaterialRed);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+ }
+
+ /* LEFT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.00, 0.18);
+ glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, -0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.00, -0.18);
+ glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, -0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ if(!shadow) {
+ glBegin(GL_POINTS);
+ glColor3fv(mono ? MaterialGray8 : MaterialGray35);
+ glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+ glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+ glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+ glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+ glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+ glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+ mi->polygon_count += 6;
+ glEnd();
+ }
+
+ glEnable(GL_LIGHTING);
+
+ return True;
+}
+
+static Bool draw_antmaze_strip(ModeInfo * mi)
+{
+ antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+ int i;
+ int mono = MI_IS_MONO(mi);
+
+/* glMatrixMode(GL_MODELVIEW); */
+/* glLoadIdentity(); */
+/* glPushMatrix(); */
+
+ glEnable(GL_LIGHTING);
+/* glDisable(GL_BLEND); */
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+
+ /* set light */
+/* double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */
+/* GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */
+/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+ /* draw board */
+ if(mp->elevator < 1.0) {
+ glEnable(GL_TEXTURE_2D);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6);
+ glTranslatef(-(BOARDSIZE-1)/2.0, 0.0, -(BOARDSIZE-1)/2.0);
+ draw_board(mi, mp);
+ glTranslatef(BOARDSIZE/2.0, 0.0, BOARDSIZE/2.0);
+ glDisable(GL_TEXTURE_2D);
+ }
+
+ mp->introduced--;
+
+ glTranslatef(0.0, -0.1, 0.0);
+
+ for(i = 0; i < ANTCOUNT; ++i) {
+
+/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+ if(!mp->anton[i]) { continue; }
+
+ /* determine location, move to goal */
+ glPushMatrix();
+ glTranslatef(0.0, 0.01, 0.0);
+ glTranslatef(mp->antposition[i][0], mp->antposition[i][2], mp->antposition[i][1]);
+/* glScalef(1.0, 0.01, 1.0); */
+ glScalef(0.6, 0.01, 0.6);
+ glRotatef(180.0 + mp->antdirection[i]*180.0/PI, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+ glDisable(GL_LIGHTING);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glColor4fv(MaterialGrayB);
+
+ glScalef(mp->antsize[i], mp->antsize[i], mp->antsize[i]);
+
+ /* slow down first ant */
+ if(i == 0 && mp->part[i] == mp->antpathlength[i])
+ draw_ant(mi, mp, MaterialGrayB, mono, 1, mp->first_ant_step, mySphere, myCone);
+ else
+ draw_ant(mi, mp, MaterialGrayB, mono, 1, mp->ant_step, mySphere, myCone);
+
+ glPopMatrix();
+
+ glDisable(GL_BLEND);
+ glEnable(GL_LIGHTING);
+
+ glPushMatrix();
+/* glTranslatef(0.0, 0.18, 0.0); */
+ glTranslatef(0.0, 0.12, 0.0);
+ glTranslatef(mp->antposition[i][0], mp->antposition[i][2], mp->antposition[i][1]);
+ glRotatef(180.0 + mp->antdirection[i]*180.0/PI, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+ glScalef(0.6, 0.6, 0.6);
+
+ glScalef(mp->antsize[i], mp->antsize[i], mp->antsize[i]);
+
+/* glEnable(GL_TEXTURE_2D); */
+/* glBindTexture(GL_TEXTURE_2D, brushedtexture); */
+
+/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialRed); */
+
+ /* slow down first ant */
+ if(i == 0 && mp->part[i] == mp->antpathlength[i] && mp->elevator > 0.0) {
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ draw_ant(mi, mp, antmaterial[i], mono, 1, mp->first_ant_step, mySphere, myCone);
+ }
+ else {
+/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, mp->brushedtexture);
+ draw_ant(mi, mp, antmaterial[i], mono, 1, mp->ant_step, mySphereTex, myCone);
+ glDisable(GL_TEXTURE_2D);
+ }
+
+
+/* draw_ant(mi, antmaterial[i], mono, 0, ant_step, mySphereTex, myCone); */
+/* glDisable(GL_TEXTURE_2D); */
+ glPopMatrix();
+ }
+
+/* glPopMatrix(); */
+
+/* /\* now draw overlay *\/ */
+/* glDisable(GL_LIGHTING); */
+/* glDisable(GL_BLEND); */
+
+/* /\* go to ortho mode *\/ */
+/* glMatrixMode(GL_PROJECTION); */
+/* glPushMatrix(); */
+/* glLoadIdentity(); */
+/* glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */
+
+/* /\* translate to corner *\/ */
+/* glTranslatef(4.0-1.2, 3.0-1.2, 0.0); */
+
+/* glDisable(GL_LIGHTING); */
+/* glEnable(GL_BLEND); */
+
+/* /\* draw the 2d board *\/ */
+/* glBegin(GL_QUADS); */
+/* { */
+/* int i, j; */
+/* double sz = 1.0; */
+/* for(i = 0; i < BOARDSIZE; ++i) */
+/* for(j = 0; j < BOARDSIZE; ++j) { */
+/* int par = board[i][j]; */
+/* glColor4f(par ? 0.4 : 0.6, */
+/* par ? 0.4 : 0.6, */
+/* par ? 0.4 : 0.6, */
+/* 0.5); */
+/* glNormal3f(0.0, 0.0, 1.0); */
+/* glVertex3f((sz*(i+1))/BOARDSIZE, (sz*(j+1))/BOARDSIZE, 0.0); */
+/* glVertex3f((sz*i)/BOARDSIZE, (sz*(j+1))/BOARDSIZE, 0.0); */
+/* glVertex3f((sz*i)/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */
+/* glVertex3f((sz*(i+1))/BOARDSIZE, (sz*j)/BOARDSIZE, 0.0); */
+/* mi->polygon_count++; */
+/* } */
+/* } */
+/* glEnd(); */
+
+/* glPopMatrix(); */
+
+
+ /* but the step size is the same! */
+ mp->ant_step += 0.18;
+/* if(ant_step > 2*Pi) { */
+/* ant_step = 0.0; */
+/* } */
+
+ if(mp->ant_step > 5*Pi)
+ mp->started = 1;
+
+ mp->ant_position += 1;
+ return True;
+}
+#undef AntmazeDivisions
+#undef AntmazeTransversals
+
+ENTRYPOINT void reshape_antmaze(ModeInfo * mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+ int size = (width / 512) + 1;
+ antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+
+ glViewport(0, 0, mp->WindW = (GLint) width, mp->WindH = (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ gluPerspective(45, 1/h, 1, 25.0);
+
+ glMatrixMode(GL_MODELVIEW);
+/* glLineWidth(3.0); */
+ glLineWidth(size);
+ glPointSize(size);
+}
+
+static void update_ants(antmazestruct *mp)
+{
+ int i;
+ GLfloat df[4];
+ df[0] = df[1] = df[2] = 0.8*mp->fadeout;
+ df[3] = 1.0;
+
+ /* fade out */
+ if(mp->fadeoutspeed < -0.00001) {
+
+ if(mp->fadeout <= 0.0) {
+ /* switch boards: rebuild old board, increment current */
+ mp->currentboard = (mp->currentboard+1)%BOARDCOUNT;
+ build_board(mp, mp->currentboard);
+ mp->fadeoutspeed = 0.02;
+ }
+
+ mp->fadeout += mp->fadeoutspeed;
+
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, df);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, df);
+ }
+
+ /* fade in */
+ if(mp->fadeoutspeed > 0.0001) {
+ mp->fadeout += mp->fadeoutspeed;
+ if(mp->fadeout >= 1.0) {
+ mp->fadeout = 1.0;
+ mp->fadeoutspeed = 0.0;
+ mp->entroducing = 12;
+ }
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, df);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, df);
+ }
+
+ for(i = 0; i < ANTCOUNT; ++i) {
+
+ if(!mp->anton[i] && mp->elevator < 1.0) {
+
+ /* turn on ant */
+ if(mp->entroducing > 0 && mp->introduced <= 0 && random()%100 == 0) {
+ mp->anton[i] = 1;
+ mp->part[i] = 0;
+ mp->antsize[i] = 0.0;
+ mp->antposition[i][0] = -4.0;
+ mp->antposition[i][1] = 5.0;
+ mp->antdirection[i] = PI/2.0;
+ mp->bposition[i][0] = 0;
+ mp->bposition[i][1] = 8;
+ mp->introduced = 300;
+ mp->entroducing--;
+ }
+
+ continue;
+ }
+
+ if(mp->part[i] == 0 && mp->antsize[i] < 1.0) {
+ mp->antsize[i] += 0.02;
+ continue;
+ }
+
+ if(mp->part[i] > mp->antpathlength[i] && mp->antsize[i] > 0.0) {
+ mp->antsize[i] -= 0.02;
+ if(mp->antvelocity[i] > 0.0) {
+ mp->antvelocity[i] -= 0.02;
+ }
+ else { mp->antvelocity[i] = 0.0; }
+
+ continue;
+ }
+
+ if(mp->part[i] > mp->antpathlength[i] && mp->antsize[i] <= 0.0) {
+ mp->antvelocity[i] = 0.02;
+
+ /* if(i != 0) { */
+ antmaterial[i] = materials[random()%MATERIALS];
+ /* } */
+
+ mp->antdirection[i] = PI/2.0;
+ mp->bposition[i][0] = 0;
+ mp->bposition[i][1] = 8;
+ mp->part[i] = 0;
+
+ mp->antsize[i] = 0.0;
+
+ mp->anton[i] = 0;
+
+ mp->antposition[i][0] = -4.0;
+ mp->antposition[i][1] = 5.0;
+
+ /* /\* reset camera *\/ */
+ /* if(i == focus) { */
+ /* started = 0; */
+ /* ant_step = 0.0; */
+ /* } */
+
+ /* check for the end */
+ if(mp->entroducing <= 0) {
+ int ao = 0, z = 0;
+ for(z = 0; z < ANTCOUNT; ++z) {
+ if(mp->anton[z]) { ao = 1; break; }
+ }
+
+ if(ao == 0) {
+ mp->fadeoutspeed = -0.02;
+ }
+ }
+
+ }
+
+ /* near goal, bend path towards next step */
+ if(near(mp->antposition[i], mp->antpath[i][mp->part[i]])) {
+
+ ++mp->part[i];
+
+/* /\* special first ant *\/ */
+/* if(i == 0 && part[i] > antpathlength[i]) { */
+/* if(fir) */
+/* first_ant_step = ant_step; */
+
+/* antvelocity[i] = 0.0; */
+/* /\* antposition[i][2] += 0.025; *\/ */
+/* elevator += 0.025; */
+
+/* /\* set light *\/ */
+/* double l1 = 1.0 - (elevator < 1.0 ? elevator : 2.0 - elevator); */
+/* GLfloat df[4] = {0.8*l1, 0.8*l1, 0.8*l1, 1.0}; */
+/* glLightfv(GL_LIGHT0, GL_DIFFUSE, df); */
+/* glLightfv(GL_LIGHT1, GL_DIFFUSE, df); */
+
+/* /\* draw next board *\/ */
+/* if(elevator > 1.0) { */
+
+/* if(makenew == 1) { */
+/* int re; */
+
+/* /\* switch boards: rebuild old board, increment current *\/ */
+/* currentboard = (currentboard+1)%BOARDCOUNT; */
+/* build_board(currentboard); */
+
+/* for(re = 1; re < ANTCOUNT; ++re) { */
+/* anton[re] = 0; */
+/* antmaterial[re] = materials[random()%MATERIALS]; */
+/* } */
+
+/* makenew = 0; */
+
+/* } */
+
+/* /\* draw the other board *\/ */
+/* glEnable(GL_TEXTURE_2D); */
+/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6); */
+
+/* glPushMatrix(); */
+/* glTranslatef(-(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0), 0.0, */
+/* -(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0)); */
+/* draw_board(mi, mp); */
+/* glPopMatrix(); */
+/* glDisable(GL_TEXTURE_2D); */
+/* } */
+/* /\* reset *\/ */
+/* if(elevator > 2.0) { */
+/* antposition[i][0] = -4.0;/\*-= -(-(BOARDSIZE-3.5)+(BOARDSIZE-1)/2.0);*\//\*= -4.0;*\/ */
+/* antposition[i][1] = 5.5;/\*-(2.4+BOARDSIZE+(BOARDSIZE-1)/2.0);*\/ */
+/* /\* antposition[i][2] = 0.15; *\/ */
+/* antdirection[i] = PI/2.0; */
+/* bposition[i][0] = 0; */
+/* bposition[i][1] = 8; */
+/* part[i] = 0; */
+/* antvelocity[i] = 0.02; */
+/* fir = 0; */
+/* antmaterial[i] = MaterialRed; */
+
+/* makenew = 1; */
+
+/* elevator = 0.0; */
+/* introduced = 200; */
+/* } */
+/* else { */
+/* part[i]--; */
+/* } */
+/* } */
+
+ }
+
+ /* move toward goal, correct ant direction if required */
+ else {
+
+ /* difference */
+ double dx = mp->antpath[i][mp->part[i]][0] - mp->antposition[i][0];
+ double dz = - mp->antpath[i][mp->part[i]][1] + mp->antposition[i][1];
+ double theta, ideal;
+
+ if(dz > EPSILON)
+ theta = atan(dz/dx);
+ else
+ theta = dx > EPSILON ? 0.0 : PI;
+
+ ideal = theta - mp->antdirection[i];
+ if(ideal < -Pi/2.0)
+ ideal += Pi;
+
+ /* compute correction */
+ {
+ double dt = sign(ideal) * min(fabs(ideal), PI/90.0);
+ mp->antdirection[i] += dt;
+ if(mp->antdirection[i] > 2.0*PI)
+ mp->antdirection[i] = 0.0;
+ }
+ }
+
+ mp->antposition[i][0] += mp->antvelocity[i] * cos(mp->antdirection[i]);
+ mp->antposition[i][1] += mp->antvelocity[i] * sin(-mp->antdirection[i]);
+ }
+}
+
+static void pinit(antmazestruct *mp)
+{
+ glClearDepth(1.0);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION, position1);
+
+ glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05);
+ glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.001);
+ glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1);
+
+ glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.05);
+ glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.001);
+ glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.1);
+
+
+/* glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); */
+/* glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); */
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_NORMALIZE);
+ glFrontFace(GL_CCW);
+ glCullFace(GL_BACK);
+
+ /* antmaze */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glDisable(GL_TEXTURE_2D);
+
+ /* setup textures */
+ makeCheckImage(mp);
+ makeBrushedImage(mp);
+
+ build_board(mp, 0);
+ build_board(mp, 1);
+
+/* makeCheckImage(); */
+/* glPixelStorei(GL_UNPACK_ALIGNMENT, 1); */
+/* glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, */
+/* checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, checkers); */
+/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); */
+/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); */
+
+/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); */
+/* glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); */
+/* glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); */
+ glEnable(GL_TEXTURE_2D);
+
+/* glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); */
+/* glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); */
+}
+
+#define MAX_MAGNIFICATION 10
+#define max(a, b) a < b ? b : a
+#define min(a, b) a < b ? a : b
+
+ENTRYPOINT Bool antmaze_handle_event (ModeInfo *mi, XEvent *event)
+{
+ antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, mp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &mp->button_down_p))
+ return True;
+
+ if (event->xany.type == ButtonPress)
+ {
+ switch(event->xbutton.button) {
+
+ case Button3:
+ mp->focus = (mp->focus + 1) % ANTCOUNT;
+ return True;
+
+ case Button4:
+ mp->mag = max(mp->mag-1, 1);
+ return True;
+
+ case Button5:
+ mp->mag = min(mp->mag+1, MAX_MAGNIFICATION);
+ return True;
+ }
+ }
+
+ return False;
+}
+
+ENTRYPOINT void init_antmaze(ModeInfo * mi)
+{
+ double rot_speed = 0.3;
+ int i;
+
+ antmazestruct *mp;
+
+ MI_INIT(mi, antmaze);
+ mp = &antmaze[MI_SCREEN(mi)];
+ mp->step = NRAND(90);
+ mp->ant_position = NRAND(90);
+
+
+ mp->antdirection[0] = PI/2.0;
+ mp->antdirection[1] = PI/2.0;
+ mp->antdirection[2] = 0;
+ mp->antdirection[3] = PI/2.0;
+ mp->antdirection[4] = PI/2.0;
+
+ mp->antposition[0][0] = -4.0;
+ mp->antposition[0][1] = 5.0;
+ mp->antposition[0][1] = 0.15;
+
+ mp->antposition[1][0] = -4.0;
+ mp->antposition[1][1] = 3.0;
+ mp->antposition[1][1] = 0.15;
+
+ mp->antposition[2][0] = -1.0;
+ mp->antposition[2][1] = -2.0;
+ mp->antposition[2][1] = 0.15;
+
+ mp->antposition[3][0] = -3.9;
+ mp->antposition[3][1] = 6.0;
+ mp->antposition[3][1] = 0.15;
+
+ mp->antposition[4][0] = 2.0;
+ mp->antposition[4][1] = -2.0;
+ mp->antposition[4][1] = 0.15;
+
+
+
+ for (i = 0; i < ANTCOUNT; i++) {
+ mp->antvelocity[i] = 0.02;
+ mp->antsize[i] = 1.0;
+ mp->anton[i] = 0;
+ }
+
+ mp->bposition[0][0] = 0;
+ mp->bposition[0][1] = 8;
+
+ mp->bposition[1][0] = 9;
+ mp->bposition[1][1] = 1;
+
+ mp->bposition[2][0] = 1;
+ mp->bposition[2][1] = 1;
+
+ mp->bposition[3][0] = 4;
+ mp->bposition[3][1] = 8;
+
+ mp->bposition[4][0] = 2;
+ mp->bposition[4][1] = 1;
+
+ mp->part[0] = 0;
+ mp->part[1] = 1;
+ mp->part[2] = 5;
+ mp->part[3] = 1;
+ mp->part[4] = 3;
+
+ mp->introduced = 0;
+ mp->entroducing = 12;
+ mp->fadeout = 1.0;
+ mp->mag = 4.0;
+
+ mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True);
+ mp->trackball = gltrackball_init (False);
+
+ if ((mp->glx_context = init_GL(mi)) != NULL) {
+ reshape_antmaze(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ pinit(mp);
+ }
+ else
+ MI_CLEARWINDOW(mi);
+}
+
+static void
+device_rotate(ModeInfo *mi)
+{
+#if 0
+ GLfloat rot = current_device_rotation();
+ glRotatef(rot, 0, 0, 1);
+ if ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135))
+ {
+ GLfloat s = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ glScalef (1/s, s, 1);
+ }
+#endif
+}
+
+
+ENTRYPOINT void draw_antmaze(ModeInfo * mi)
+{
+ double h = (GLfloat) MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+
+ antmazestruct *mp;
+
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if(!antmaze)
+ return;
+ mp = &antmaze[MI_SCREEN(mi)];
+
+ MI_IS_DRAWN(mi) = True;
+
+ if(!mp->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+ glXMakeCurrent(display, window, *(mp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ /* first panel */
+ glPushMatrix();
+/* h = ((GLfloat) MI_HEIGHT(mi)/2) / (3*(GLfloat)MI_WIDTH(mi)/4); */
+ glViewport(MI_WIDTH(mi)/32, MI_HEIGHT(mi)/8, (9*MI_WIDTH(mi))/16, 3*MI_HEIGHT(mi)/4);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+/* h = (3*MI_HEIGHT(mi)/4) / (3*MI_WIDTH(mi)/4); */
+ gluPerspective(45, 1/h, 1, 25.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ device_rotate(mi);
+
+ glPushMatrix();
+
+ /* follow focused ant */
+ glTranslatef(0.0, 0.0, -mp->mag - 5.0);
+ glRotatef(20.0+5.0*sin(mp->ant_step/40.0), 1.0, 0.0, 0.0);
+/* glTranslatef(0.0, */
+/* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)), */
+/* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */
+
+ gltrackball_rotate(mp->trackball);
+
+ glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0);
+
+/* glRotatef(90.0, 0.0, 0.0, 1.0); */
+
+/* glTranslatef(-antposition[0][0]-0.5, 0.0, -antposition[focus][1]); */
+ /*-elevator*/
+
+ /* sync */
+ if(!draw_antmaze_strip(mi)) {
+ MI_ABORT(mi);
+ return;
+ }
+
+ glPopMatrix();
+ glPopMatrix();
+
+ h = (GLfloat) (3*MI_HEIGHT(mi)/8) / (GLfloat) (MI_WIDTH(mi)/2);
+
+ /* draw overhead */
+ glPushMatrix();
+ glViewport((17*MI_WIDTH(mi))/32, MI_HEIGHT(mi)/2, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ device_rotate(mi);
+ gluPerspective(45, 1/h, 1, 25.0);
+ glMatrixMode(GL_MODELVIEW);
+
+ /* twist scene */
+ glTranslatef(0.0, 0.0, -16.0);
+ glRotatef(60.0, 1.0, 0.0, 0.0);
+ glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0);
+ gltrackball_rotate(mp->trackball);
+
+ /* sync */
+ if(!draw_antmaze_strip(mi)) {
+ MI_ABORT(mi);
+ return;
+ }
+
+ glPopMatrix();
+
+ /* draw ant display */
+ glPushMatrix();
+ glViewport((5*MI_WIDTH(mi))/8, MI_HEIGHT(mi)/8, (11*MI_WIDTH(mi))/32, 3*MI_HEIGHT(mi)/8);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ device_rotate(mi);
+ gluPerspective(45, 1/h, 1, 25.0);
+ glMatrixMode(GL_MODELVIEW);
+
+ /* twist scene */
+ glTranslatef(0.0, 0.0, -1.6);
+ glRotatef(30.0, 1.0, 0.0, 0.0);
+ glRotatef(mp->ant_step, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+
+/* /\* draw ant shadow *\/ */
+/* glPushMatrix(); */
+/* glScalef(1.0, 0.01, 1.0); */
+/* glRotatef(90.0, 0.0, 0.0, 1.0); */
+/* glRotatef(90.0, 0.0, 1.0, 0.0); */
+/* glDisable(GL_LIGHTING); */
+/* glColor4fv(MaterialGray6); */
+
+/* /\* slow down first ant *\/ */
+/* draw_ant(MaterialGrayB, 0, 1, first_ant_step, mySphere, myCone); */
+/* glPopMatrix(); */
+
+ /* draw ant body */
+ glEnable(GL_TEXTURE_2D);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glBindTexture(GL_TEXTURE_2D, mp->brushedtexture);
+ draw_ant(mi, mp, MaterialGray35, 0, 1, mp->ant_step/2.0, mySphereTex, myCone2);
+ glDisable(GL_TEXTURE_2D);
+
+ glPopMatrix();
+
+/* /\* draw overlay *\/ */
+/* glPushMatrix(); */
+
+/* /\* go to ortho mode *\/ */
+/* glViewport(MI_WIDTH(mi)/2, MI_HEIGHT(mi)/8, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8); */
+
+/* glMatrixMode(GL_PROJECTION); */
+/* glLoadIdentity(); */
+
+/* glPushMatrix (); */
+/* glOrtho(-4.0, 4.0, -3.0, 3.0, -100.0, 100.0); */
+
+/* glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGrayB); */
+/* glColor4fv(MaterialGrayB); */
+
+/* glDisable(GL_LIGHTING); */
+/* glEnable(GL_BLEND); */
+
+/* glBegin(GL_QUADS); */
+/* glNormal3f(0.0, 0.0, 1.0); */
+/* glVertex3f(4.0, 3.0, 0.0); */
+/* glVertex3f(2.0, 3.0, 0.0); */
+/* glVertex3f(2.0, -3.0, 0.0); */
+/* glVertex3f(4.0, -3.0, 0.0); */
+/* mi->polygon_count++; */
+/* glEnd(); */
+
+/* glEnable(GL_LIGHTING); */
+/* glDisable(GL_BLEND); */
+
+/* glPopMatrix(); */
+/* glPopMatrix(); */
+
+ if (MI_IS_FPS(mi)) {
+ glViewport(0, 0, MI_WIDTH(mi), MI_HEIGHT(mi));
+ do_fps (mi);
+ }
+ glFlush();
+
+ glXSwapBuffers(display, window);
+
+ update_ants(mp);
+
+ mp->step += 0.025;
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void change_antmaze(ModeInfo * mi)
+{
+ antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+
+ if (!mp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ pinit();
+}
+#endif /* !STANDALONE */
+
+XSCREENSAVER_MODULE ("AntMaze", antmaze)
+
+#endif
diff --git a/hacks/glx/antmaze.man b/hacks/glx/antmaze.man
new file mode 100644
index 0000000..4c4bec8
--- /dev/null
+++ b/hacks/glx/antmaze.man
@@ -0,0 +1,52 @@
+.TH XScreenSaver 1 "May 2005"
+.SH NAME
+antmaze \- ant maze walker
+.SH SYNOPSIS
+.B antmaze
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+.SH DESCRIPTION
+The \fIantmaze\fP code displays ants finding their way through a maze.
+.SH OPTIONS
+.I antmaze
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Blair Tennessy. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy , 8-May-2005.
+
diff --git a/hacks/glx/ants.h b/hacks/glx/ants.h
new file mode 100644
index 0000000..d0bef7e
--- /dev/null
+++ b/hacks/glx/ants.h
@@ -0,0 +1,45 @@
+/* ants.h -- header file containing common ant parameters
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Copyright 2003 Blair Tennessy
+*/
+
+/* static const GLfloat MaterialRed[] = {0.6, 0.0, 0.0, 1.0}; */
+/*static const GLfloat MaterialPurple[] = {0.6, 0.2, 0.5, 1.0};*/
+/*static const GLfloat MaterialOrange[] = {1.0, 0.69, 0.00, 1.0};*/
+/*static const GLfloat MaterialGreen[] = {0.1, 0.5, 0.2, 0.2};*/
+/*static const GLfloat MaterialBlue[] = {0.4, 0.4, 0.8, 1.0};*/
+/*static const GLfloat MaterialCyan[] = {0.2, 0.5, 0.7, 1.0};*/
+/*static const GLfloat MaterialYellow[] = {0.7, 0.7, 0.0, 1.0};*/
+/* static const GLfloat MaterialMagenta[] = {0.6, 0.2, 0.5, 1.0}; */
+/*static const GLfloat MaterialWhite[] = {0.7, 0.7, 0.7, 1.0};*/
+static const GLfloat MaterialGray[] = {0.2, 0.2, 0.2, 1.0};
+static const GLfloat MaterialGrayB[] = {0.1, 0.1, 0.1, 0.5};
+/*static const GLfloat MaterialGray35[] = {0.30, 0.30, 0.30, 1.0};*/
+
+static const GLfloat MaterialGray5[] = {0.5, 0.5, 0.5, 1.0};
+static const GLfloat MaterialGray6[] = {0.6, 0.6, 0.6, 1.0};
+/* static const GLfloat MaterialGray8[] = {0.8, 0.8, 0.8, 1.0};*/
+
+typedef struct {
+
+ double position[3];
+ double goal[3];
+ double velocity;
+ double direction;
+ double step;
+
+ const GLfloat *material;
+
+} Ant;
diff --git a/hacks/glx/antspotlight.c b/hacks/glx/antspotlight.c
new file mode 100644
index 0000000..55bb80c
--- /dev/null
+++ b/hacks/glx/antspotlight.c
@@ -0,0 +1,799 @@
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Copyright 2003 Blair Tennessy
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*useSHM: True \n"
+
+# define free_antspotlight 0
+# define release_antspotlight 0
+#include "xlockmore.h"
+#else
+#include "xlock.h"
+#endif
+
+#ifdef HAVE_JWXYZ
+# include "jwxyz.h"
+#else
+# include
+# include
+# include
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+#include "sphere.h"
+#include "tube.h"
+#include "rotator.h"
+#include "gltrackball.h"
+
+ENTRYPOINT ModeSpecOpt antspotlight_opts = {
+ 0, NULL, 0, NULL, NULL
+};
+
+#ifdef USE_MODULES
+ModStruct antspotlight_description = {
+ "antspotlight", "init_antspotlight", "draw_antspotlight",
+ (char *) NULL, "draw_antspotlight", "change_antspotlight",
+ (char *) NULL, &antspotlight_opts, 1000, 1, 1, 1, 4, 1.0, "",
+ "draws an ant scoping the screen", 0, NULL
+};
+#endif
+
+#define Scale4Window 0.3
+#define Scale4Iconic 0.4
+
+#define sqr(A) ((A)*(A))
+
+#ifndef Pi
+#define Pi M_PI
+#endif
+
+#include "ants.h"
+#include "grab-ximage.h"
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLfloat max_tx, max_ty;
+ int mono, wire, ticks;
+ GLuint screentexture;
+
+ Ant *ant;
+ double boardsize;
+ GLfloat spot_direction[3];
+ int mag;
+
+ Bool mipmap_p;
+ Bool waiting_for_image_p;
+
+} antspotlightstruct;
+
+static antspotlightstruct *antspotlight = (antspotlightstruct *) NULL;
+
+#define NUM_SCENES 2
+
+/* draw method for ant */
+static Bool draw_ant(ModeInfo *mi, antspotlightstruct *mp,
+ const GLfloat *Material, int mono, int shadow,
+ float ant_step, Bool (*sphere)(float), Bool (*cone)(float))
+{
+
+ float cos1 = cos(ant_step);
+ float cos2 = cos(ant_step + 2 * Pi / 3);
+ float cos3 = cos(ant_step + 4 * Pi / 3);
+ float sin1 = sin(ant_step);
+ float sin2 = sin(ant_step + 2 * Pi / 3);
+ float sin3 = sin(ant_step + 4 * Pi / 3);
+
+/* Apparently this is a performance killer on many systems...
+ glEnable(GL_POLYGON_SMOOTH);
+ */
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->mono ? MaterialGray5 : Material);
+ glEnable(GL_CULL_FACE);
+ glPushMatrix();
+ glScalef(1, 1.3, 1);
+ if(!((*sphere)(0.18)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glTranslatef(0.00, 0.30, 0.00);
+ if(!((*sphere)(0.2)))
+ return False;
+
+ glTranslatef(-0.05, 0.17, 0.05);
+ glRotatef(-90, 1, 0, 0);
+ glRotatef(-25, 0, 1, 0);
+ if(!((*cone)(0.05)))
+ return False;
+ glTranslatef(0.00, 0.10, 0.00);
+ if(!((*cone)(0.05)))
+ return False;
+ glRotatef(25, 0, 1, 0);
+ glRotatef(90, 1, 0, 0);
+
+ glScalef(1, 1.3, 1);
+ glTranslatef(0.15, -0.65, 0.05);
+ if(!((*sphere)(0.25)))
+ return False;
+ glScalef(1, 1 / 1.3, 1);
+ glPopMatrix();
+ glDisable(GL_CULL_FACE);
+
+ glDisable(GL_LIGHTING);
+
+ /* ANTENNAS */
+ glEnable(GL_LINE_SMOOTH);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glBegin(GL_LINES);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.30, 0.00);
+ glColor3fv(MaterialGray);
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+
+ if(!shadow) {
+ glBegin(GL_POINTS);
+ glColor3fv(mp->mono ? MaterialGray6 : MaterialGray5);
+ glVertex3f(0.40, 0.70, 0.40);
+ mi->polygon_count++;
+ glVertex3f(0.40, 0.70, -0.40);
+ mi->polygon_count++;
+ glEnd();
+ }
+
+ /* LEFT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos1, 0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.00, 0.18);
+ glVertex3f(0.35 + 0.05 * cos2, 0.00, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* LEFT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, -0.05, 0.18);
+ glVertex3f(0.35 + 0.05 * cos3, -0.15, 0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-FRONT ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin1, 0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-CENTER ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, 0.00, -0.18);
+ glVertex3f(0.35 - 0.05 * sin2, 0.00, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ /* RIGHT-BACK ARM */
+ glBegin(GL_LINE_STRIP);
+ glColor3fv(mp->mono ? MaterialGray5 : Material);
+ glVertex3f(0.00, -0.05, -0.18);
+ glVertex3f(0.35 - 0.05 * sin3, -0.15, -0.25);
+ mi->polygon_count++;
+ glColor3fv(MaterialGray);
+ glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+ mi->polygon_count++;
+ glEnd();
+
+ if(!shadow) {
+ glBegin(GL_POINTS);
+ glColor3fv(MaterialGray5);
+ glVertex3f(-0.20 + 0.05 * cos1, 0.25 + 0.1 * sin1, 0.45);
+ glVertex3f(-0.20 + 0.05 * cos2, 0.00 + 0.1 * sin2, 0.45);
+ glVertex3f(-0.20 + 0.05 * cos3, -0.25 + 0.1 * sin3, 0.45);
+ glVertex3f(-0.20 - 0.05 * sin1, 0.25 + 0.1 * cos1, -0.45);
+ glVertex3f(-0.20 - 0.05 * sin2, 0.00 + 0.1 * cos2, -0.45);
+ glVertex3f(-0.20 - 0.05 * sin3, -0.25 + 0.1 * cos3, -0.45);
+ mi->polygon_count += 6;
+ glEnd();
+ }
+
+ glEnable(GL_LIGHTING);
+
+ return True;
+}
+
+/* filled sphere */
+static Bool mySphere(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL);
+ gluSphere(quadObj, radius, 16, 16);
+ gluDeleteQuadric(quadObj);
+#else
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (16, 16, False);
+ glPopMatrix();
+#endif
+ return True;
+}
+
+/* silhouette sphere */
+static Bool mySphere2(float radius)
+{
+#if 0
+ GLUquadricObj *quadObj;
+
+ if((quadObj = gluNewQuadric()) == 0)
+ return False;
+ gluQuadricDrawStyle(quadObj, (GLenum) GLU_LINE);
+ gluSphere(quadObj, radius, 16, 8);
+ gluDeleteQuadric(quadObj);
+#else
+ /* #### no GLU_LINE */
+ glPushMatrix();
+ glScalef (radius, radius, radius);
+ glRotatef (90, 1, 0, 0);
+ unit_sphere (16, 16, True);
+ glPopMatrix();
+#endif
+ return True;
+}
+
+/* no cone */
+static Bool myCone2(float radius) { return True; }
+
+static void draw_board(ModeInfo *mi, antspotlightstruct *mp)
+{
+ int i, j;
+ double cutoff = Pi/3.0;
+ double center[3];
+ double centertex[2];
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, mp->screentexture);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray6);
+
+ /* draw mesh */
+
+ /* center is roughly spotlight position */
+ center[0] = mp->ant->position[0];/* + cos(ant->direction); */
+ center[1] = 0.0;
+ center[2] = mp->ant->position[2];/* - 0.7*sin(ant->direction);*/
+
+ centertex[0] = (mp->boardsize/2.0+center[0]) * mp->max_tx / mp->boardsize;
+ centertex[1] = mp->max_ty - ((mp->boardsize/2.0+center[2]) * mp->max_ty / mp->boardsize);
+
+/* glPolygonMode(GL_FRONT, GL_LINE); */
+/* glDisable(GL_TEXTURE_2D); */
+
+ /*
+ the vertices determined here should correspond to the illuminated
+ board. ideally the code adapts vertex distribution to the
+ intensity and shape of the light.
+
+ i should be finding the intersection of the cone of light and
+ the board-plane.
+ */
+ for(i = -12; i < 12; ++i) {
+
+ double theta1, theta2;
+
+ glBegin(GL_TRIANGLE_STRIP);
+ glNormal3f(0.0, 1.0, 0.0);
+
+ glTexCoord2f(centertex[0], centertex[1]);
+ glVertex3f(center[0], 0.01, center[2]);
+
+ /* watch those constants */
+ theta1 = mp->ant->direction + i*(cutoff/8);
+ theta2 = mp->ant->direction + (i+1)*(cutoff/8);
+
+ for(j = 1; j <= 64; ++j) {
+ double point[3], tex[2];
+ /* double fj = pow(1.05, j) - 1.0;*/
+ double fj = j / 6.0;
+ point[0] = center[0] + fj*cos(theta1);
+ point[1] = 0.0;
+ point[2] = center[2] - fj*sin(theta1);
+
+ tex[0] = (mp->boardsize/2.0+point[0]) * mp->max_tx / mp->boardsize;
+ tex[1] = (mp->boardsize/2.0+point[2]) * mp->max_ty / mp->boardsize;
+
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f(point[0], point[1], point[2]);
+
+ point[0] = center[0] + fj*cos(theta2);
+ point[1] = 0.0;
+ point[2] = center[2] - fj*sin(theta2);
+
+ tex[0] = (mp->boardsize/2.0+point[0]) * mp->max_tx / mp->boardsize;
+ tex[1] = (mp->boardsize/2.0+point[2]) * mp->max_ty / mp->boardsize;
+
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f(point[0], point[1], point[2]);
+ mi->polygon_count++;
+ }
+
+ glEnd();
+ }
+
+ glDisable(GL_TEXTURE_2D);
+}
+
+/* return euclidean distance between two points */
+static double distance(double x[3], double y[3])
+{
+ double dx = x[0] - y[0];
+ double dz = x[2] - y[2];
+ return sqrt(dx*dx + dz*dz);
+}
+
+/* determine a new goal */
+static void find_goal(antspotlightstruct *mp)
+{
+ do {
+ mp->ant->goal[0] = random()%((int)(mp->boardsize+0.5)-2) - mp->boardsize/2.0 + 1.0;
+ mp->ant->goal[1] = 0.0;
+ mp->ant->goal[2] = random()%((int)(mp->boardsize+0.5)-2) - mp->boardsize/2.0 + 1.0;
+ }
+ while(distance(mp->ant->position, mp->ant->goal) < 2.0);
+}
+
+/* construct our ant */
+static void build_ant(antspotlightstruct *mp)
+{
+ mp->ant = (Ant *) malloc(sizeof (Ant));
+ mp->ant->position[0] = 0.0;
+ mp->ant->position[1] = 0.0;
+ mp->ant->position[2] = 0.0;
+ mp->ant->direction = 0.0;
+ mp->ant->velocity = 0.02;
+ mp->ant->material = MaterialGray5;
+ mp->ant->step = 0;
+ find_goal(mp);
+}
+
+#define EPSILON 0.01
+
+static double sign(double d)
+{
+ return d < 0.0 ? -1.0 : 1.0;
+}
+
+static double min(double a, double b)
+{
+ return a < b ? a : b;
+}
+
+/*
+static double max(double a, double b)
+{
+ return a > b ? a : b;
+}
+*/
+
+/* find a new goal and reset steps */
+static void reset_ant(antspotlightstruct *mp)
+{
+ find_goal(mp);
+}
+
+/* draw ant composed of skeleton and glass */
+static void show_ant(ModeInfo *mi, antspotlightstruct *mp)
+{
+
+ glPushMatrix();
+
+ /* move into position */
+ glTranslatef(mp->ant->position[0], 0.33, mp->ant->position[2]);
+ glRotatef(180.0 + mp->ant->direction*180.0/Pi, 0.0, 1.0, 0.0);
+ glRotatef(90.0, 0.0, 0.0, 1.0);
+
+ /* draw skeleton */
+ draw_ant(mi, mp, mp->ant->material, mp->mono, 0, mp->ant->step, mySphere2, myCone2);
+
+ /* draw glass */
+ if(!mp->wire && !mp->mono) {
+ glEnable(GL_BLEND);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGrayB);
+ glColor4fv(MaterialGrayB);
+ draw_ant(mi, mp, MaterialGrayB, mp->mono, 0, mp->ant->step, mySphere, myCone2);
+ glDisable(GL_BLEND);
+ }
+
+ glPopMatrix();
+}
+
+static void draw_antspotlight_strip(ModeInfo *mi)
+{
+ antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)];
+
+ /* compute spotlight position and direction */
+ GLfloat light1_position[4];
+
+ light1_position[0] = mp->ant->position[0] + 0.7*cos(mp->ant->direction);
+ light1_position[1] = 0.5;
+ light1_position[2] = mp->ant->position[2] - 0.7*sin(mp->ant->direction);
+ light1_position[3] = 1.0;
+
+ mp->spot_direction[0] = cos(mp->ant->direction);
+ mp->spot_direction[1] = -0.5;
+ mp->spot_direction[2] = -sin(mp->ant->direction);
+
+ glLightfv(GL_LIGHT2, GL_POSITION, light1_position);
+ glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, mp->spot_direction);
+
+ glEnable(GL_LIGHT2);
+ glDisable(GL_LIGHT0);
+ glDisable(GL_LIGHT1);
+
+ /* draw board */
+ if(mp->wire)
+ ;
+ else
+ draw_board(mi, mp);
+
+ glDisable(GL_LIGHT2);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+
+ /* now modify ant */
+ show_ant(mi, mp);
+
+ /* near goal, bend path towards next step */
+ if(distance(mp->ant->position, mp->ant->goal) < 0.2) {
+ reset_ant(mp);
+ }
+
+ if(random()%100 == 0) {
+ reset_ant(mp);
+ }
+
+
+ /* move toward goal, correct ant direction if required */
+ else {
+
+ /* difference */
+ double dx = mp->ant->goal[0] - mp->ant->position[0];
+ double dz = -(mp->ant->goal[2] - mp->ant->position[2]);
+ double theta, ideal, dt;
+
+ if(fabs(dx) > EPSILON) {
+ theta = atan(dz/dx);
+ if(dx < 0.0)
+ theta += Pi;
+ }
+ else
+ theta = dz > 0.0 ? (1.0/2.0)*Pi : (3.0/2.0)*Pi;
+
+ if(theta < 0.0)
+ theta += 2*Pi;
+
+ ideal = theta - mp->ant->direction;
+ if(ideal > Pi)
+ ideal -= 2*Pi;
+
+ /* compute correction */
+ dt = sign(ideal) * min(fabs(ideal), Pi/100.0);
+ mp->ant->direction += dt;
+ while(mp->ant->direction < 0.0)
+ mp->ant->direction += 2*Pi;
+ while(mp->ant->direction > 2*Pi)
+ mp->ant->direction -= 2*Pi;
+ }
+
+ mp->ant->position[0] += mp->ant->velocity * cos(mp->ant->direction);
+ mp->ant->position[2] += mp->ant->velocity * sin(-mp->ant->direction);
+ mp->ant->step += 10*mp->ant->velocity;
+ while(mp->ant->step > 2*Pi)
+ mp->ant->step -= 2*Pi;
+}
+
+ENTRYPOINT void reshape_antspotlight(ModeInfo * mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+ int size = 2;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ gluPerspective(45, 1/h, 1.0, 25.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLineWidth(size);
+ glPointSize(size);
+}
+
+/* lighting variables */
+static const GLfloat front_shininess[] = {60.0};
+static const GLfloat front_specular[] = {0.8, 0.8, 0.8, 1.0};
+static const GLfloat ambient[] = {0.4, 0.4, 0.4, 1.0};
+/*static const GLfloat ambient2[] = {0.0, 0.0, 0.0, 0.0};*/
+static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0};
+static const GLfloat position0[] = {1.0, 5.0, 1.0, 0.0};
+static const GLfloat position1[] = {-1.0, -5.0, 1.0, 0.0};
+/*static const GLfloat lmodel_ambient[] = {0.8, 0.8, 0.8, 1.0};*/
+static const GLfloat lmodel_twoside[] = {GL_TRUE};
+static const GLfloat spotlight_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
+static const GLfloat spotlight_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
+
+static void pinit(void)
+{
+ glClearDepth(1.0);
+
+ /* setup twoside lighting */
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION, position1);
+
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, spotlight_ambient);
+ glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+
+ /* setup spotlight */
+ glLightfv(GL_LIGHT2, GL_AMBIENT, spotlight_ambient);
+ glLightfv(GL_LIGHT2, GL_DIFFUSE, spotlight_diffuse);
+ glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 0.1);
+ glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.05);
+ glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.0);
+ glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 60.0);
+ glLightf(GL_LIGHT2, GL_SPOT_EXPONENT, 3.0);
+
+ glEnable(GL_NORMALIZE);
+ glFrontFace(GL_CCW);
+ glCullFace(GL_BACK);
+
+ /* setup material properties */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glShadeModel(GL_SMOOTH);
+/* glShadeModel(GL_FLAT); */
+ glEnable(GL_DEPTH_TEST);
+}
+
+#define MAX_MAGNIFICATION 10
+#define max(a, b) a < b ? b : a
+#define min(a, b) a < b ? a : b
+
+/* event handling */
+ENTRYPOINT Bool antspotlight_handle_event(ModeInfo *mi, XEvent *event)
+{
+ antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, mp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &mp->button_down_p))
+ return True;
+
+ if (event->xany.type == ButtonPress)
+ {
+ switch(event->xbutton.button) {
+
+ case Button1:
+ mp->button_down_p = True;
+ gltrackball_start(mp->trackball,
+ event->xbutton.x, event->xbutton.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+
+ case Button4:
+ mp->mag = max(mp->mag-1, 1);
+ return True;
+
+ case Button5:
+ mp->mag = min(mp->mag+1, MAX_MAGNIFICATION);
+ return True;
+ }
+ }
+
+ return False;
+}
+
+static void
+image_loaded_cb (const char *filename, XRectangle *geometry,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure)
+{
+ antspotlightstruct *mp = (antspotlightstruct *) closure;
+
+ mp->max_tx = (GLfloat) image_width / texture_width;
+ mp->max_ty = (GLfloat) image_height / texture_height;
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+ (mp->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR));
+
+ mp->waiting_for_image_p = False;
+}
+
+
+/* get screenshot */
+static void get_snapshot(ModeInfo *modeinfo)
+{
+ antspotlightstruct *mp = &antspotlight[MI_SCREEN(modeinfo)];
+
+ if (MI_IS_WIREFRAME(modeinfo))
+ return;
+
+ mp->waiting_for_image_p = True;
+ mp->mipmap_p = True;
+ load_texture_async (modeinfo->xgwa.screen, modeinfo->window,
+ *mp->glx_context, 0, 0, mp->mipmap_p,
+ mp->screentexture, image_loaded_cb, mp);
+}
+
+
+ENTRYPOINT void init_antspotlight(ModeInfo *mi)
+{
+ double rot_speed = 0.3;
+
+ antspotlightstruct *mp;
+
+ MI_INIT(mi, antspotlight);
+ mp = &antspotlight[MI_SCREEN(mi)];
+ mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True);
+ mp->trackball = gltrackball_init (False);
+
+ if((mp->glx_context = init_GL(mi)) != NULL) {
+ reshape_antspotlight(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ pinit();
+ }
+ else
+ MI_CLEARWINDOW(mi);
+
+ glGenTextures(1, &mp->screentexture);
+ glBindTexture(GL_TEXTURE_2D, mp->screentexture);
+ get_snapshot(mi);
+
+ build_ant(mp);
+ mp->mono = MI_IS_MONO(mi);
+ mp->wire = MI_IS_WIREFRAME(mi);
+ mp->boardsize = 8.0;
+ mp->mag = 1;
+}
+
+ENTRYPOINT void draw_antspotlight(ModeInfo * mi)
+{
+ antspotlightstruct *mp;
+
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if(!antspotlight)
+ return;
+ mp = &antspotlight[MI_SCREEN(mi)];
+
+ MI_IS_DRAWN(mi) = True;
+
+ if(!mp->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+
+ /* Just keep running before the texture has come in. */
+ /* if (mp->waiting_for_image_p) return; */
+
+ glXMakeCurrent(display, window, *(mp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ /* position camera */
+
+ /* follow focused ant */
+ glTranslatef(0.0, 0.0, -6.0 - mp->mag);
+ glRotatef(35.0, 1.0, 0.0, 0.0);
+ gltrackball_rotate(mp->trackball);
+ glTranslatef(-mp->ant->position[0], mp->ant->position[1], -mp->ant->position[2]);
+
+ /* stable position */
+/* glTranslatef(0.0, 0.0, -10.0 - mag); */
+/* gltrackball_rotate(mp->trackball); */
+/* glRotatef(40.0, 1.0, 0.0, 0.0); */
+/* glRotatef(20.0, 0.0, 1.0, 0.0); */
+
+ draw_antspotlight_strip(mi);
+
+ ++mp->ticks;
+
+ glPopMatrix();
+
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glFlush();
+
+ glXSwapBuffers(display, window);
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void change_antspotlight(ModeInfo * mi)
+{
+ antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)];
+
+ if (!mp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ pinit();
+}
+#endif /* !STANDALONE */
+
+XSCREENSAVER_MODULE ("AntSpotlight", antspotlight)
diff --git a/hacks/glx/antspotlight.man b/hacks/glx/antspotlight.man
new file mode 100644
index 0000000..c5f8ed7
--- /dev/null
+++ b/hacks/glx/antspotlight.man
@@ -0,0 +1,56 @@
+.TH XScreenSaver 1 "July 2003"
+.SH NAME
+antspotlight \- ant spotlight screenhack
+.SH SYNOPSIS
+.B antspotlight
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+.SH DESCRIPTION
+The \fIantspotlight\fP code displays a single ant spotting out a screenshot.
+.SH OPTIONS
+.I antspotlight
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-delay \fImicroseconds\fP
+Per-frame delay.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Blair Tennessy. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy , 20-July-2003.
+
diff --git a/hacks/glx/atlantis.c b/hacks/glx/atlantis.c
new file mode 100644
index 0000000..04bde12
--- /dev/null
+++ b/hacks/glx/atlantis.c
@@ -0,0 +1,577 @@
+/* atlantis --- Shows moving 3D sea animals */
+
+#if 0
+static const char sccsid[] = "@(#)atlantis.c 5.08 2003/04/09 xlockmore";
+#endif
+
+/* Copyright (c) E. Lassauge, 1998. */
+
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The original code for this mode was written by Mark J. Kilgard
+ * as a demo for openGL programming.
+ *
+ * Porting it to xlock was possible by comparing the original Mesa's morph3d
+ * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna
+ * (look at morph3d.c) for his indirect help.
+ *
+ * Thanks goes also to Brian Paul for making it possible and inexpensive
+ * to use OpenGL at home.
+ *
+ * My e-mail address is lassauge@users.sourceforge.net
+ *
+ * Eric Lassauge (May-13-1998)
+ *
+ * REVISION HISTORY:
+ *
+ * Jamie Zawinski, 2-Apr-01: - The fishies were inside out! The back faces
+ * were being drawn, not the front faces.
+ * - Added a texture to simulate light from the
+ * surface, like in the SGI version.
+ *
+ * David A. Bagley - 98/06/17 : Add whalespeed option. Global options to
+ * initialize local variables are now:
+ * XLock.atlantis.cycles: 100 ! SharkSpeed
+ * XLock.atlantis.batchcount: 4 ! SharkNum
+ * XLock.atlantis.whalespeed: 250 ! WhaleSpeed
+ * XLock.atlantis.size: 6000 ! SharkSize
+ * Add random direction for whales/dolphins
+ *
+ * E.Lassauge - 98/06/16: Use the following global options to initialize
+ * local variables :
+ * XLock.atlantis.delay: 100 ! SharkSpeed
+ * XLock.atlantis.batchcount: 4 ! SharkNum
+ * XLock.atlantis.cycles: 250 ! WhaleSpeed
+ * XLock.atlantis.size: 6000 ! SharkSize
+ * Add support for -/+ wireframe (t'was so easy to do!)
+ *
+ * TODO :
+ * - better handling of sizes and speeds
+ * - test standalone and module modes
+ * - purify it (!)
+ */
+
+/* Copyright (c) Mark J. Kilgard, 1994. */
+
+/**
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States. Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+#define DEF_TEXTURE "True"
+#define DEF_GRADIENT "True"
+#define DEF_WHALESPEED "250"
+
+#ifdef STANDALONE
+# define DEFAULTS "*delay: 25000 \n" \
+ "*count: 4 \n" \
+ "*showFPS: False \n" \
+ "*cycles: 100 \n" \
+ "*size: 6000 \n" \
+ "*wireframe: False \n"
+# define release_atlantis 0
+# define atlantis_handle_event xlockmore_no_events
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+# include "vis.h"
+#endif /* !STANDALONE */
+
+#ifdef USE_GL
+
+#include "atlantis.h"
+
+
+static int whalespeed;
+static int do_texture;
+static int do_gradient;
+static XrmOptionDescRec opts[] =
+{
+ {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, 0},
+ {"-texture", ".atlantis.texture", XrmoptionNoArg, "true"},
+ {"+texture", ".atlantis.texture", XrmoptionNoArg, "false"},
+ {"-gradient", ".atlantis.gradient", XrmoptionNoArg, "true"},
+ {"+gradient", ".atlantis.gradient", XrmoptionNoArg, "false"},
+};
+
+static argtype vars[] =
+{
+ {&whalespeed, "whalespeed", "WhaleSpeed", DEF_WHALESPEED, t_Int},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ {&do_gradient, "gradient", "Gradient", DEF_GRADIENT, t_Bool},
+};
+
+static OptionStruct desc[] =
+{
+ {"-whalespeed num", "speed of whales and the dolphin"},
+ {"-texture", "whether to introduce water-like distortion"},
+ {"-gradient", "whether to introduce gradient-filled background"},
+};
+
+ENTRYPOINT ModeSpecOpt atlantis_opts =
+{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
+
+#ifdef USE_MODULES
+ModStruct atlantis_description =
+{"atlantis", "init_atlantis", "draw_atlantis", NULL,
+ "refresh_atlantis", "change_atlantis", "free_atlantis", &atlantis_opts,
+ 1000, NUM_SHARKS, SHARKSPEED, SHARKSIZE, 64, 1.0, "",
+ "Shows moving sharks/whales/dolphin", 0, NULL};
+
+#endif
+
+static atlantisstruct *atlantis = NULL;
+
+#include "ximage-loader.h"
+
+#include "images/gen/sea-texture_png.h"
+
+
+static void
+parse_image_data(ModeInfo *mi)
+{
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+ ap->texture = image_data_to_ximage (mi->dpy, mi->xgwa.visual,
+ sea_texture_png,
+ sizeof(sea_texture_png));
+}
+
+static void
+InitFishs(atlantisstruct * ap)
+{
+ int i;
+
+ for (i = 0; i < ap->num_sharks; i++) {
+ ap->sharks[i].x = 70000.0 + NRAND(ap->sharksize);
+ ap->sharks[i].y = NRAND(ap->sharksize);
+ ap->sharks[i].z = NRAND(ap->sharksize);
+ ap->sharks[i].psi = NRAND(360) - 180.0;
+ ap->sharks[i].v = 1.0;
+ }
+
+ /* Random whale direction */
+ ap->whaledir = LRAND() & 1;
+
+ ap->dolph.x = 30000.0;
+ ap->dolph.y = 0.0;
+ ap->dolph.z = (float) (ap->sharksize);
+ ap->dolph.psi = (ap->whaledir) ? 90.0 : -90.0;
+ ap->dolph.theta = 0.0;
+ ap->dolph.v = 6.0;
+
+ ap->momWhale.x = 70000.0;
+ ap->momWhale.y = 0.0;
+ ap->momWhale.z = 0.0;
+ ap->momWhale.psi = (ap->whaledir) ? 90.0 : -90.0;
+ ap->momWhale.theta = 0.0;
+ ap->momWhale.v = 3.0;
+
+ ap->babyWhale.x = 60000.0;
+ ap->babyWhale.y = -2000.0;
+ ap->babyWhale.z = -2000.0;
+ ap->babyWhale.psi = (ap->whaledir) ? 90.0 : -90.0;
+ ap->babyWhale.theta = 0.0;
+ ap->babyWhale.v = 3.0;
+}
+
+static void
+Init(ModeInfo *mi)
+{
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+
+ static const float ambient[] = {0.1, 0.1, 0.1, 1.0};
+ static const float diffuse[] = {1.0, 1.0, 1.0, 1.0};
+ static const float position[] = {0.0, 1.0, 0.0, 0.0};
+ static const float mat_shininess[] = {90.0};
+ static const float mat_specular[] = {0.8, 0.8, 0.8, 1.0};
+ static const float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0};
+ static const float mat_ambient[] = {0.0, 0.1, 0.2, 1.0};
+ static const float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0};
+ static const float lmodel_localviewer[] = {0.0};
+
+ float fblue = 0.0, fgreen;
+
+ glFrontFace(GL_CCW);
+
+ if (ap->wire)
+ {
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_NORMALIZE);
+ }
+ else
+ {
+ glDepthFunc(GL_LEQUAL);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_NORMALIZE);
+ glShadeModel(GL_SMOOTH);
+
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position);
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+ glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
+ }
+
+ if (ap->wire || !do_texture)
+ {
+ glDisable(GL_TEXTURE_2D);
+ }
+ else
+ {
+ GLfloat scale = 0.0005;
+
+ if (!ap->texture)
+ parse_image_data (mi);
+
+ clear_gl_error();
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+ ap->texture->width, ap->texture->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ ap->texture->data);
+ check_gl_error("texture");
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+# ifndef HAVE_JWZGLES
+ {
+ GLfloat s_plane[] = { 1, 0, 0, 0 };
+ GLfloat t_plane[] = { 0, 0, 1, 0 };
+ glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+ glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+ glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+ glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ }
+# endif
+ glEnable(GL_TEXTURE_2D);
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glScalef(scale, scale, 1);
+ glMatrixMode(GL_MODELVIEW);
+ }
+
+ InitFishs(ap);
+
+ /* Add a little randomness */
+ fblue = ((float) (NRAND(30)) / 100.0) + 0.70;
+ fgreen = fblue * 0.56;
+ glClearColor(0.0, fgreen, fblue, 1.0);
+}
+
+ENTRYPOINT void
+reshape_atlantis(ModeInfo * mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, ap->WinW = (GLint) width, ap->WinH = (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(400.0, 1/h, 1.0, 2000000.0);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+/* Fill the background with a gradient -- thanks to
+ Phil Carrig for figuring out
+ how to do this more efficiently!
+ */
+static void
+clear_tank (atlantisstruct * ap)
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ if (do_gradient && !ap->wire)
+ {
+ GLfloat top[4] = { 0.00, 0.40, 0.70, };
+ GLfloat bot[4] = { 0.00, 0.05, 0.18, };
+
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ {
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ {
+ glLoadIdentity();
+ /* glRotatef(current_device_rotation(), 0, 0, 1); */
+
+# ifndef HAVE_JWZGLES
+ glShadeModel (GL_SMOOTH);
+# endif
+ glDisable (GL_LIGHTING);
+ glBegin (GL_QUADS);
+ glColor3fv (bot);
+ glVertex3f (-1, -1, 1); glVertex3f ( 1, -1, 1);
+ glColor3fv (top);
+ glVertex3f ( 1, 1, 1); glVertex3f (-1, 1, 1);
+ glEnd();
+ glEnable (GL_LIGHTING);
+
+ /* Need to reset this because jwzgles conflates color and material */
+ glColor3f (0.0, 0.1, 0.2);
+ }
+ glPopMatrix();
+ }
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+
+ glMatrixMode(GL_MODELVIEW);
+ }
+}
+
+
+static void
+Animate(atlantisstruct * ap)
+{
+ int i;
+
+ for (i = 0; i < ap->num_sharks; i++) {
+ SharkPilot(&(ap->sharks[i]), ap->sharkspeed);
+ SharkMiss(ap, i);
+ }
+ WhalePilot(&(ap->dolph), ap->whalespeed, ap->whaledir);
+ ap->dolph.phi++;
+ WhalePilot(&(ap->momWhale), ap->whalespeed, ap->whaledir);
+ ap->momWhale.phi++;
+ WhalePilot(&(ap->babyWhale), ap->whalespeed, ap->whaledir);
+ ap->babyWhale.phi++;
+}
+
+static void
+AllDisplay(atlantisstruct * ap)
+{
+ int i;
+
+ clear_tank(ap);
+
+ for (i = 0; i < ap->num_sharks; i++) {
+ glPushMatrix();
+ FishTransform(&(ap->sharks[i]));
+ DrawShark(&(ap->sharks[i]), ap->wire);
+ glPopMatrix();
+ }
+
+ glPushMatrix();
+ FishTransform(&(ap->dolph));
+ DrawDolphin(&(ap->dolph), ap->wire);
+ glPopMatrix();
+
+ glPushMatrix();
+ FishTransform(&(ap->momWhale));
+ DrawWhale(&(ap->momWhale), ap->wire);
+ glPopMatrix();
+
+ glPushMatrix();
+ FishTransform(&(ap->babyWhale));
+ glScalef(0.45, 0.45, 0.3);
+ DrawWhale(&(ap->babyWhale), ap->wire);
+ glPopMatrix();
+}
+
+/*
+ *-----------------------------------------------------------------------------
+ *-----------------------------------------------------------------------------
+ * Xlock hooks.
+ *-----------------------------------------------------------------------------
+ *-----------------------------------------------------------------------------
+ */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Initialize atlantis. Called each time the window changes.
+ *-----------------------------------------------------------------------------
+ */
+
+ENTRYPOINT void
+init_atlantis(ModeInfo * mi)
+{
+ int screen = MI_SCREEN(mi);
+ atlantisstruct *ap;
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ MI_INIT(mi, atlantis);
+ ap = &atlantis[screen];
+ ap->num_sharks = MI_COUNT(mi);
+ if (ap->sharks == NULL) {
+ if ((ap->sharks = (fishRec *) calloc(ap->num_sharks,
+ sizeof (fishRec))) == NULL) {
+ /* free everything up to now */
+ (void) free((void *) atlantis);
+ atlantis = NULL;
+ return;
+ }
+ }
+ ap->sharkspeed = MI_CYCLES(mi); /* has influence on the "width"
+ of the movement */
+ ap->sharksize = MI_SIZE(mi); /* has influence on the "distance"
+ of the sharks */
+ ap->whalespeed = whalespeed;
+ ap->wire = MI_IS_WIREFRAME(mi);
+
+ if (MI_IS_DEBUG(mi)) {
+ (void) fprintf(stderr,
+ "%s:\n\tnum_sharks=%d\n\tsharkspeed=%.1f\n\tsharksize=%d\n\twhalespeed=%.1f\n\twireframe=%s\n",
+ MI_NAME(mi),
+ ap->num_sharks,
+ ap->sharkspeed,
+ ap->sharksize,
+ ap->whalespeed,
+ ap->wire ? "yes" : "no"
+ );
+ }
+ if ((ap->glx_context = init_GL(mi)) != NULL) {
+
+ reshape_atlantis(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ Init(mi);
+ AllDisplay(ap);
+ glXSwapBuffers(display, window);
+
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+}
+
+/*
+ *-----------------------------------------------------------------------------
+ * Called by the mainline code periodically to update the display.
+ *-----------------------------------------------------------------------------
+ */
+ENTRYPOINT void
+draw_atlantis(ModeInfo * mi)
+{
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ MI_IS_DRAWN(mi) = True;
+
+ if (!ap->glx_context)
+ return;
+
+ glXMakeCurrent(display, window, *(ap->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ AllDisplay(ap);
+ Animate(ap);
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glXSwapBuffers(display, window);
+}
+
+
+/*
+ *-----------------------------------------------------------------------------
+ * The display is being taken away from us. Free up malloc'ed
+ * memory and X resources that we've alloc'ed.
+ *-----------------------------------------------------------------------------
+ */
+
+ENTRYPOINT void
+free_atlantis(ModeInfo * mi)
+{
+#if 0
+ atlantisstruct *ap = &atlantis[screen];
+
+ if (ap->sharks)
+ (void) free((void *) ap->sharks);
+#endif
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void
+refresh_atlantis(ModeInfo * mi)
+{
+}
+
+ENTRYPOINT void
+change_atlantis(ModeInfo * mi)
+{
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+
+ if (!ap->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context));
+ Init(mi);
+}
+#endif /* !STANDALONE */
+
+XSCREENSAVER_MODULE ("Atlantis", atlantis)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/atlantis.h b/hacks/glx/atlantis.h
new file mode 100644
index 0000000..3b24bfa
--- /dev/null
+++ b/hacks/glx/atlantis.h
@@ -0,0 +1,133 @@
+/* atlantis --- Shows moving 3D sea animals */
+
+/* Copyright (c) E. Lassauge, 1998. */
+
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The original code for this mode was written by Mark J. Kilgard
+ * as a demo for openGL programming.
+ *
+ * Porting it to xlock was possible by comparing the original Mesa's morph3d
+ * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna
+ * (look at morph3d.c) for his indirect help.
+ *
+ * Thanks goes also to Brian Paul for making it possible and inexpensive
+ * to use OpenGL at home.
+ *
+ * My e-mail address is lassauge@users.sourceforge.net
+ *
+ * Eric Lassauge (May-13-1998)
+ *
+ */
+
+/**
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States. Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef STANDALONE
+# include
+# include "screenhackI.h"
+# ifndef HAVE_JWXYZ
+# include
+# include
+# endif
+#else
+# include "xlock.h"
+#endif
+#ifdef HAVE_ANDROID
+#include
+#endif
+
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+#define RAD 57.295
+#define RRAD 0.01745
+
+/* default values */
+#define NUM_SHARKS 4
+#define SHARKSPEED 100
+#define SHARKSIZE 6000
+
+typedef struct _fishRec {
+ float x, y, z, phi, theta, psi, v;
+ float xt, yt, zt;
+ float htail, vtail;
+ float dtheta;
+ int spurt, attack;
+ int sign;
+} fishRec;
+
+typedef struct {
+ GLint WinH, WinW;
+ GLXContext *glx_context;
+ int num_sharks;
+ float sharkspeed, whalespeed;
+ int sharksize;
+ int wire;
+ Bool whaledir;
+ fishRec *sharks;
+ fishRec momWhale;
+ fishRec babyWhale;
+ fishRec dolph;
+
+ XImage *texture; /* water distortion overlay bits */
+} atlantisstruct;
+
+extern void FishTransform(fishRec *);
+extern void WhalePilot(fishRec *, float, Bool);
+extern void SharkPilot(fishRec *, float);
+extern void SharkMiss(atlantisstruct *, int);
+extern void DrawWhale(fishRec *, int);
+extern void DrawShark(fishRec *, int);
+extern void DrawDolphin(fishRec *, int);
diff --git a/hacks/glx/atlantis.man b/hacks/glx/atlantis.man
new file mode 100644
index 0000000..0c2df5a
--- /dev/null
+++ b/hacks/glx/atlantis.man
@@ -0,0 +1,78 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+atlantis - draw swimming sharks, whales, and dolphins.
+.SH SYNOPSIS
+.B atlantis
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-whalespeed \fInumber\fP]
+[\-delay \fInumber\fP]
+[\-size \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-texture]
+[\-gradient]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+This is xfishtank writ large: a GL animation of a number of sharks,
+dolphins, and whales. The swimming motions are great.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-whalespeed \fInumber\fP
+Whale Speed. 0 - 1000. Default: 250.
+.TP 8
+.B \-cycles \fInumber\fP
+Shark Speed. Default: 100.
+.TP 8
+.B \-size \fInumber\fP
+Shark Proximity. 100 - 10000. Default: 6000.
+.TP 8
+.B \-count \fInumber\fP
+Number of Sharks. 0 - 20. Default: 4.
+.TP 8
+.B \-texture | \-no-texture
+Whether to show shimmering water.
+.TP 8
+.B \-gradient
+Whether to draw a gradient on the background, making it darker at the bottom.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Mark Kilgard. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Mark Kilgard.
+
diff --git a/hacks/glx/atunnel.c b/hacks/glx/atunnel.c
new file mode 100644
index 0000000..f21d04f
--- /dev/null
+++ b/hacks/glx/atunnel.c
@@ -0,0 +1,317 @@
+/* -*- Mode: C; tab-width: 4 -*- */
+/* atunnel --- OpenGL Advanced Tunnel Screensaver */
+
+#if 0
+static const char sccsid[] = "@(#)atunnel.c 5.13 2004/05/25 xlockmore";
+#endif
+
+/* Copyright (c) E. Lassauge, 2003-2004. */
+
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The original code for this mode was written by Roman Podobedov
+ * Email: romka@ut.ee
+ * WEB: http://romka.demonews.com
+ *
+ * Eric Lassauge (May-25-2004)
+ * http://lassauge.free.fr/linux.html
+ *
+ * REVISION HISTORY:
+ *
+ * E.Lassauge - 25-May-2004:
+ * - added more texture !
+ * E.Lassauge - 16-Mar-2002:
+ * - created based on the Roman demo.
+ * - deleted all external file stuff to use xpm textures and
+ * hardcoded path point values.
+ *
+ */
+
+#ifdef STANDALONE /* xscreensaver mode */
+#define DEFAULTS "*delay: 10000 \n" \
+ "*showFPS: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define release_atunnel 0
+# define atunnel_handle_event 0
+#define MODE_atunnel
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef MODE_atunnel /* whole file */
+
+#include
+#include
+#include
+#include "tunnel_draw.h"
+
+#if defined( USE_XPM ) || defined( USE_XPMINC ) || defined(STANDALONE)
+/* USE_XPM & USE_XPMINC in xlock mode ; STANDALONE in xscreensaver mode */
+#include "ximage-loader.h"
+#define I_HAVE_XPM
+
+#include "images/gen/tunnel0_png.h"
+#include "images/gen/tunnel1_png.h"
+#include "images/gen/tunnel2_png.h"
+#include "images/gen/tunnel3_png.h"
+#include "images/gen/tunnel4_png.h"
+#include "images/gen/tunnel5_png.h"
+#endif /* HAVE_XPM */
+
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#define DEF_LIGHT "True"
+#define DEF_WIRE "False"
+#define DEF_TEXTURE "True"
+
+static Bool do_light;
+static Bool do_wire;
+static Bool do_texture;
+
+static XrmOptionDescRec opts[] = {
+ {"-light", ".atunnel.light", XrmoptionNoArg, "true" },
+ {"+light", ".atunnel.light", XrmoptionNoArg, "false" },
+ {"-wireframe",".atunnel.wire", XrmoptionNoArg, "true" },
+ {"+wireframe",".atunnel.wire", XrmoptionNoArg, "false" },
+ {"-texture", ".atunnel.texture", XrmoptionNoArg, "true" },
+ {"+texture", ".atunnel.texture", XrmoptionNoArg, "false" },
+};
+
+static argtype vars[] = {
+ {&do_light, "light", "Light", DEF_LIGHT, t_Bool},
+ {&do_wire, "wire", "Wire", DEF_WIRE, t_Bool},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+};
+
+static OptionStruct desc[] =
+{
+ {"-/+ light", "whether to do enable lighting (slower)"},
+ {"-/+ wire", "whether to do use wireframe instead of filled (faster)"},
+ {"-/+ texture", "whether to apply a texture (slower)"},
+};
+
+ENTRYPOINT ModeSpecOpt atunnel_opts = {countof(opts), opts, countof(vars), vars, desc};
+
+#ifdef USE_MODULES
+ModStruct atunnel_description =
+{"atunnel", "init_atunnel", "draw_atunnel", NULL,
+ "draw_atunnel", "init_atunnel", "free_atunnel", &atunnel_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "OpenGL advanced tunnel screensaver", 0, NULL};
+#endif
+
+/* structure for holding the screensaver data */
+typedef struct {
+ int screen_width, screen_height;
+ GLXContext *glx_context;
+ Window window;
+ struct tunnel_state *ts;
+ GLuint texture[MAX_TEXTURE]; /* texture id: GL world */
+} atunnelstruct;
+
+static atunnelstruct *Atunnel = NULL;
+
+/*=================== Load Texture =========================================*/
+static void LoadTexture(ModeInfo * mi,
+ const unsigned char *data, unsigned long size,
+ int t_num)
+{
+#if defined( I_HAVE_XPM )
+ atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
+ XImage *teximage; /* Texture data */
+
+ if ((teximage = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi),
+ data, size))
+ == None) {
+ (void) fprintf(stderr, "Error reading the texture.\n");
+ glDeleteTextures(1, &sa->texture[t_num]);
+ do_texture = False;
+#ifdef STANDALONE
+ exit(0);
+#else
+ return;
+#endif
+ }
+
+#ifdef HAVE_GLBINDTEXTURE
+ glBindTexture(GL_TEXTURE_2D, sa->texture[t_num]);
+#endif /* HAVE_GLBINDTEXTURE */
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+ clear_gl_error();
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, teximage->width, teximage->height,
+ 0, GL_RGBA, GL_UNSIGNED_BYTE, teximage->data);
+ check_gl_error("texture");
+
+ /* Texture parameters, LINEAR scaling for better texture quality */
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ XDestroyImage(teximage);
+#else /* !I_HAVE_XPM */
+ do_texture = False;
+#endif /* !I_HAVE_XPM */
+}
+
+/*=================== Main Initialization ==================================*/
+static void Init(ModeInfo * mi)
+{
+ atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
+ GLfloat light_ambient[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat light_position[] = {0.0, 0.0, 1.0, 0.0};
+ GLfloat fogColor[4] = {0.8, 0.8, 0.8, 1.0};
+
+ if (do_texture)
+ {
+ glGenTextures(MAX_TEXTURE, sa->texture);
+ LoadTexture(mi, tunnel0_png, sizeof(tunnel0_png),0);
+ LoadTexture(mi, tunnel1_png, sizeof(tunnel1_png),1);
+ LoadTexture(mi, tunnel2_png, sizeof(tunnel2_png),2);
+ LoadTexture(mi, tunnel3_png, sizeof(tunnel3_png),3);
+ LoadTexture(mi, tunnel4_png, sizeof(tunnel4_png),4);
+ LoadTexture(mi, tunnel5_png, sizeof(tunnel5_png),5);
+ glEnable(GL_TEXTURE_2D);
+ }
+ sa->ts = atunnel_InitTunnel();
+
+ /* Set lighting parameters */
+ if (do_light)
+ {
+ glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
+ glLightfv(GL_LIGHT0, GL_POSITION, light_position);
+
+ /* Enable light 0 */
+ glEnable(GL_LIGHT0);
+ glDepthFunc(GL_LESS);
+
+ glEnable(GL_LIGHTING);
+ }
+
+# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
+ do_wire = 0;
+# endif
+
+ if (do_wire) {
+ glDisable(GL_NORMALIZE);
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_TEXTURE_2D);
+ glPolygonMode(GL_FRONT,GL_LINE);
+ glPolygonMode(GL_BACK,GL_LINE);
+ }
+ else
+ {
+ glEnable(GL_DEPTH_TEST);
+ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+
+ /* Enable fog */
+ glFogi(GL_FOG_MODE, GL_EXP);
+ glFogfv(GL_FOG_COLOR, fogColor);
+ glFogf(GL_FOG_DENSITY, 0.3);
+ glEnable(GL_FOG);
+
+ /* Cull face */
+ glCullFace(GL_FRONT);
+ glEnable(GL_CULL_FACE);
+ }
+
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
+}
+
+
+/* Standard reshape function */
+ENTRYPOINT void
+reshape_atunnel(ModeInfo *mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 2) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-0.1*(1/h), 0.1*(1/h), -0.1, 0.1, 0.1, 10);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+/* draw the screensaver once */
+ENTRYPOINT void draw_atunnel(ModeInfo * mi)
+{
+ atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!sa->glx_context)
+ return;
+
+ glXMakeCurrent(display, window, *(sa->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glLoadIdentity();
+
+ atunnel_DrawTunnel(sa->ts, do_texture, do_light, sa->texture);
+ atunnel_SplashScreen(sa->ts, do_wire, do_texture, do_light);
+
+ glFlush();
+ /* manage framerate display */
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glXSwapBuffers(display, window);
+
+}
+
+
+/* xscreensaver initialization routine */
+ENTRYPOINT void init_atunnel(ModeInfo * mi)
+{
+ int screen = MI_SCREEN(mi);
+ atunnelstruct *sa;
+
+ MI_INIT(mi, Atunnel);
+ sa = &Atunnel[screen];
+
+ sa->window = MI_WINDOW(mi);
+ if ((sa->glx_context = init_GL(mi)) != NULL) {
+ reshape_atunnel(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ Init(mi);
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+
+}
+
+/* all sorts of nice cleanup code should go here! */
+ENTRYPOINT void free_atunnel(ModeInfo * mi)
+{
+#if 0
+ atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
+ FreeTunnel(sa->ts);
+#endif
+}
+
+XSCREENSAVER_MODULE ("Atunnel", atunnel)
+
+#endif
diff --git a/hacks/glx/atunnel.man b/hacks/glx/atunnel.man
new file mode 100644
index 0000000..dc19582
--- /dev/null
+++ b/hacks/glx/atunnel.man
@@ -0,0 +1,83 @@
+.de EX \"Begin example
+.ne 5
+.if n .sp 1
+.if t .sp .5
+.nf
+.in +.5i
+..
+.de EE
+.fi
+.in -.5i
+.if n .sp 1
+.if t .sp .5
+..
+.TH XScreenSaver 1 "12-Feb-03" "X Version 11"
+.SH NAME
+atunnel - hypnotic GL tunnel journey
+.SH SYNOPSIS
+.B sballs
+[\-display \fIhost:display.screen\fP] [\-window] [\-root]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
+[\-light] [\-no-light]
+[\-wire] [\-no-wire]
+[\-texture] [\-no-texture]
+[\-fps]
+.SH DESCRIPTION
+The \fIatunnel\fP program draws an animation of a journey in a GL tunnel.
+.SH OPTIONS
+.I sballs
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-texture
+Show a textured tunnel. This is the default.
+.TP 8
+.B \-no\-texture
+Disables texturing the animation.
+.TP 8
+.B \-wire
+Draw a wireframe rendition of the tunnel.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Eric Lassauge.
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+The original code for this mode was written by
+Roman Podobedov
+and can be found at http://romka.demonews.com
+
+.SH AUTHOR
+Roman Podobedov
+Eric Lassauge
diff --git a/hacks/glx/b_draw.c b/hacks/glx/b_draw.c
new file mode 100644
index 0000000..977efbe
--- /dev/null
+++ b/hacks/glx/b_draw.c
@@ -0,0 +1,239 @@
+#if 0
+static const char sccsid[] = "@(#)b_draw.c 4.11 98/06/16 xlockmore";
+#endif
+
+/*-
+ * BUBBLE3D (C) 1998 Richard W.M. Jones.
+ * b_draw.c: This code creates new bubbles, manages them and controls
+ * them as they are drawn on the screen.
+ */
+
+#include "bubble3d.h"
+
+typedef struct draw_context {
+ /* The list of bubbles currently on the screen. */
+ void **bubble_list;
+ int nr_bubbles;
+
+ /* When was the last time we created a new bubble? */
+ int bubble_count;
+
+ glb_data *d;
+
+} draw_context;
+
+void *
+glb_draw_init(void)
+{
+ draw_context *c;
+
+ GLfloat mat_specular[] =
+ {1, 1, 1, 1};
+ GLfloat mat_emission[] =
+ {0, 0, 0, 1};
+ GLfloat mat_shininess[] =
+ {100};
+ GLfloat ambient[] =
+ {0.5, 0.5, 0.5, 1.0};
+ GLfloat light_position[][4] =
+ {
+ {0, -1, 0, 0},
+ {1, 1, 0, 0},
+ {-1, 0, 1, 0}};
+ GLfloat light_diffuse[][4] =
+ {
+ {1, 1, 1, 1},
+ {1, 1, 1, 1},
+ {1, 1, 1, 1}};
+ GLfloat light_specular[][4] =
+ {
+ {1, 1, 1, 1},
+ {1, 1, 1, 1},
+ {1, 1, 1, 1}};
+
+ /* Initialize the context. */
+ c = (struct draw_context *) malloc(sizeof (struct draw_context));
+
+ if (c == 0)
+ return 0;
+ c->bubble_list = 0;
+ c->nr_bubbles = 0;
+ c->bubble_count = glb_config.create_bubbles_every;
+
+ /* Do some GL initialization. */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, glb_config.bubble_colour);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat_emission);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
+
+ if (glb_config.transparent_p)
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_LIGHT2);
+
+ if (glb_config.transparent_p)
+ glEnable(GL_BLEND);
+ else
+ glEnable(GL_DEPTH_TEST);
+
+ glEnable(GL_AUTO_NORMAL);
+ glEnable(GL_NORMALIZE);
+
+ if (glb_config.transparent_p)
+ glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
+
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_POSITION, light_position[0]);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse[0]);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular[0]);
+ glLightfv(GL_LIGHT1, GL_POSITION, light_position[1]);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse[1]);
+ glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular[1]);
+ glLightfv(GL_LIGHT2, GL_POSITION, light_position[2]);
+ glLightfv(GL_LIGHT2, GL_DIFFUSE, light_diffuse[2]);
+ glLightfv(GL_LIGHT2, GL_SPECULAR, light_specular[2]);
+
+ c->d = glb_sphere_init();
+
+ return c;
+}
+
+static void
+delete_bubble(draw_context * c, int j)
+{
+ int i;
+
+ glb_bubble_delete(c->bubble_list[j]);
+
+ for (i = j; i < c->nr_bubbles - 1; ++i)
+ c->bubble_list[i] = c->bubble_list[i + 1];
+
+ c->nr_bubbles--;
+}
+
+void
+glb_draw_end(void *cc)
+{
+ draw_context *c = (draw_context *) cc;
+ int i;
+
+ for (i = 0; i < c->nr_bubbles; ++i) {
+ delete_bubble(c, i);
+ i--;
+ }
+
+ glb_sphere_end (c->d);
+
+ (void) free((void *) c->bubble_list);
+ (void) free((void *) c);
+}
+
+static int
+create_new_bubbles(draw_context * c)
+{
+ int n, i;
+ double r = glb_drand();
+ GLfloat size, speed, scale_incr, x, y, z;
+ void *b[4];
+ void **old_bubble_list;
+
+ /* How many bubbles to make? */
+ if (r < glb_config.p_bubble_group[0])
+ n = 1;
+ else if (r < glb_config.p_bubble_group[1])
+ n = 2;
+ else if (r < glb_config.p_bubble_group[2])
+ n = 3;
+ else
+ n = 4;
+
+ /* Initial position of top-most bubble in group. */
+ x = glb_drand() * 4 - 2;
+ y = glb_config.screen_bottom;
+ z = glb_drand() * 2 - 2;
+
+ /* What size? */
+ size = glb_config.min_size
+ + glb_drand() * (glb_config.max_size - glb_config.min_size);
+
+ /* What speed? */
+ speed = glb_config.min_speed
+ + glb_drand() * (glb_config.max_speed - glb_config.min_speed);
+
+ /* Work out the scaling increment. Bubbles should increase by scale_factor
+ * as they go from bottom to top of screen.
+ */
+ scale_incr = (size * glb_config.scale_factor - size)
+ / ((glb_config.screen_top - glb_config.screen_bottom) / speed);
+
+ /* Create the bubble(s). */
+ for (i = 0; i < n; ++i) {
+ if ((b[i] = glb_bubble_new(c->d, x, y, z, size, speed, scale_incr)) == 0) {
+ /* Out of memory - recover. */
+ i--;
+ while (i >= 0)
+ glb_bubble_delete(b[i]);
+ return 0;
+ }
+ /* Create the next bubble below the last bubble. */
+ y -= size * 3;
+ }
+
+ /* Add the bubbles to the list. */
+ c->nr_bubbles += n;
+ old_bubble_list = c->bubble_list;
+ if (c->bubble_list == 0) {
+ c->bubble_list = (void **) malloc(c->nr_bubbles * sizeof (void *));
+ } else {
+ c->bubble_list = (void **) realloc(c->bubble_list,
+ c->nr_bubbles * sizeof (void *));
+ }
+
+ if (c->bubble_list == 0) {
+ /* Out of memory - recover. */
+ for (i = 0; i < n; ++i)
+ glb_bubble_delete(b[i]);
+ c->bubble_list = old_bubble_list;
+ c->nr_bubbles -= n;
+ return 0;
+ }
+ for (i = 0; i < n; ++i)
+ c->bubble_list[c->nr_bubbles - i - 1] = b[i];
+
+ return 1;
+}
+
+void
+glb_draw_step(void *cc)
+{
+ draw_context *c = (draw_context *) cc;
+ int i;
+
+ /* Consider creating a new bubble or bubbles. */
+ if (c->nr_bubbles < glb_config.max_bubbles &&
+ c->bubble_count++ > glb_config.create_bubbles_every) {
+ if (create_new_bubbles(c))
+ c->bubble_count = 0;
+ }
+ /* Clear the display. */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ /* XXX Draw the background here ... */
+
+ /* Draw all the bubbles on the display. */
+ for (i = 0; i < c->nr_bubbles; ++i) {
+ void *b = c->bubble_list[i];
+
+ glb_bubble_step(b);
+ glb_bubble_draw(c->d, b);
+
+ /* Has the bubble reached the top of the screen? */
+ if (glb_bubble_get_y(b) >= glb_config.screen_top) {
+ delete_bubble(c, i);
+ i--;
+ }
+ }
+}
diff --git a/hacks/glx/b_lockglue.c b/hacks/glx/b_lockglue.c
new file mode 100644
index 0000000..1bb1e67
--- /dev/null
+++ b/hacks/glx/b_lockglue.c
@@ -0,0 +1,240 @@
+#if 0
+static const char sccsid[] = "@(#)b_lockglue.c 4.11 98/06/16 xlockmore";
+#endif
+
+/*-
+ * BUBBLE3D (C) 1998 Richard W.M. Jones.
+ * b_lockglue.c: Glue to make this all work with xlockmore.
+ */
+
+#include "bubble3d.h"
+
+/* XXX This lot should eventually be made configurable using the
+ * options stuff below.
+ */
+struct glb_config glb_config =
+{
+ 0, /* transparent_p */
+#if GLB_SLOW_GL
+ 2, /* subdivision_depth */
+#else
+ 3, /* subdivision_depth */
+#endif
+ 5, /* nr_nudge_axes */
+ 0.01, /* nudge_angle_factor */
+ 0.20, /* nudge_factor */
+ 0.1, /* rotation_factor */
+ 8, /* create_bubbles_every */
+ 8, /* max_bubbles */
+ {0.7, 0.8, 0.9, 1.0}, /* p_bubble_group */
+ 0.5, /* max_size */
+ 0.1, /* min_size */
+ 0.03, /* max_speed */
+ 0.005, /* min_speed */
+ 1.5, /* scale_factor */
+ -4, /* screen_bottom */
+ 4, /* screen_top */
+ {0.0, 0.0, 0.7, 0.3} /* bubble_colour */
+};
+
+#ifdef STANDALONE
+# define DEFAULTS "*delay: 10000 \n" \
+ "*showFPS: False \n"
+
+# define release_bubble3d 0
+# define bubble3d_handle_event xlockmore_no_events
+#include "xlockmore.h"
+#else
+#include "xlock.h"
+#include "vis.h"
+#endif
+
+#ifdef USE_GL
+
+
+#define DEF_TRANSPARENT "True"
+#define DEF_BUBBLECOLOR "random"
+
+static Bool transparent_p;
+static char *bubble_color_str;
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static XrmOptionDescRec opts[] = {
+ { "-transparent", ".transparent", XrmoptionNoArg, "True" },
+ { "+transparent", ".transparent", XrmoptionNoArg, "False" },
+ { "-color", ".bubblecolor", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&transparent_p, "transparent", "Transparent", DEF_TRANSPARENT, t_Bool},
+ {&bubble_color_str, "bubblecolor", "BubbleColor", DEF_BUBBLECOLOR, t_String},
+};
+
+ENTRYPOINT ModeSpecOpt bubble3d_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct bubbles3d_description =
+{"bubbles3d",
+ "init_bubble3d",
+ "draw_bubble3d",
+ NULL,
+ "change_bubble3d",
+ "init_bubble3d",
+ "free_bubble3d",
+ &bubble3d_opts,
+ 1000, 1, 2, 1, 64, 1.0, "",
+ "Richard Jones's GL bubbles",
+ 0,
+ NULL
+};
+
+#endif /* USE_MODULES */
+
+struct context {
+ GLXContext *glx_context;
+ void *draw_context;
+};
+
+static struct context *contexts = 0;
+
+static void
+parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a)
+{
+ XColor c;
+
+ if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+ {
+ fprintf (stderr, "%s: can't parse %s color %s", progname, name, s);
+ exit (1);
+ }
+ a[0] = c.red / 65536.0;
+ a[1] = c.green / 65536.0;
+ a[2] = c.blue / 65536.0;
+}
+
+static void
+init_colors(ModeInfo *mi)
+{
+ if (strncasecmp(bubble_color_str, "auto", strlen("auto")) == 0) {
+ glb_config.bubble_colour[0] = ((float) (NRAND(100)) / 100.0);
+ glb_config.bubble_colour[1] = ((float) (NRAND(100)) / 100.0);
+ /* I keep more blue */
+ glb_config.bubble_colour[2] = ((float) (NRAND(50)) / 100.0) + 0.50;
+ } else if (strncasecmp(bubble_color_str, "random", strlen("random")) == 0) {
+ glb_config.bubble_colour[0] = -1.0;
+ } else {
+ parse_color(mi, "bubble", bubble_color_str, glb_config.bubble_colour);
+ }
+}
+
+static void
+init(struct context *c)
+{
+ glb_config.transparent_p = transparent_p;
+ glb_sphere_init();
+ c->draw_context = glb_draw_init();
+}
+
+ENTRYPOINT void
+reshape_bubble3d(ModeInfo *mi, int width, int height)
+{
+ double h = (GLfloat) height / (GLfloat) width;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ h = height / (GLfloat) width;
+ }
+ glViewport(0, 0, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1/h, 3, 8);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0, 0, -5);
+}
+
+static void
+do_display(struct context *c)
+{
+ glb_draw_step(c->draw_context);
+}
+
+ENTRYPOINT void
+init_bubble3d(ModeInfo * mi)
+{
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int screen = MI_SCREEN(mi);
+ struct context *c;
+
+ MI_INIT (mi, contexts);
+ c = &contexts[screen];
+ c->glx_context = init_GL(mi);
+ init_colors(mi);
+ if (c->glx_context != 0) {
+ init(c);
+ reshape_bubble3d(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ do_display(c);
+ glFinish();
+ glXSwapBuffers(display, window);
+ } else
+ MI_CLEARWINDOW(mi);
+}
+
+ENTRYPOINT void
+draw_bubble3d(ModeInfo * mi)
+{
+ struct context *c = &contexts[MI_SCREEN(mi)];
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ MI_IS_DRAWN(mi) = True;
+
+ if (!c->glx_context)
+ return;
+
+ glXMakeCurrent(display, window, *(c->glx_context));
+
+ glb_config.polygon_count = 0;
+ glPushMatrix();
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ glRotatef(o, 0, 0, 1);
+ }
+# endif
+
+ do_display(c);
+ glPopMatrix();
+ mi->polygon_count = glb_config.polygon_count;
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(display, window);
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void
+change_bubble3d(ModeInfo * mi)
+{
+ /* nothing */
+}
+#endif /* !STANDALONE */
+
+ENTRYPOINT void
+free_bubble3d(ModeInfo * mi)
+{
+ struct context *c = &contexts[MI_SCREEN(mi)];
+ if (c->draw_context)
+ glb_draw_end(c->draw_context);
+}
+
+XSCREENSAVER_MODULE ("Bubble3D", bubble3d)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/b_sphere.c b/hacks/glx/b_sphere.c
new file mode 100644
index 0000000..78be392
--- /dev/null
+++ b/hacks/glx/b_sphere.c
@@ -0,0 +1,219 @@
+#if 0
+static const char sccsid[] = "@(#)b_sphere.c 4.11 98/06/16 xlockmore";
+#endif
+
+/*-
+ * BUBBLE3D (C) 1998 Richard W.M. Jones.
+ * b_sphere.c: Create a list of vertices and triangles in a
+ * normalized sphere, which is then later used as the basic shape
+ * for all bubbles. This code is run once when the program starts
+ * up.
+ */
+
+#include "bubble3d.h"
+
+typedef glb_vertex vertex;
+typedef glb_triangle triangle;
+
+struct glb_data {
+
+ /* The list of vertices created. */
+ vertex *vertices;
+ int nr_vertices, nr_vertices_allocated;
+
+ /* The list of triangles created. */
+ triangle *triangles;
+ int nr_triangles, nr_triangles_allocated;
+};
+
+
+#define EPSILON GLB_VERTICES_EPSILON
+
+/* Should be taken care of already... but just in case */
+#if !defined( __GNUC__ ) && !defined(__cplusplus) && !defined(c_plusplus)
+#undef inline
+#define inline /* */
+#endif
+static inline int
+close_enough(const GLfloat * v1, const GLfloat * v2)
+{
+ return fabs((double) (v1[0] - v2[0])) <= EPSILON &&
+ fabs((double) (v1[1] - v2[1])) <= EPSILON &&
+ fabs((double) (v1[2] - v2[2])) <= EPSILON;
+}
+
+#define INCR(n) ((n == 0) ? (n = 1) : (n *= 2))
+#define INCR_ALLOCATION(a, n, t) (a = (t *) realloc (a, INCR (n) * sizeof (t)))
+
+static inline GLuint
+save_vertex(glb_data *d, const GLfloat * v)
+{
+ int i;
+
+ /* Inefficient, but we only do this a few times. Check to see if there's
+ * an existing vertex which is `close enough' to this one.
+ */
+ for (i = 0; i < d->nr_vertices; ++i)
+ if (close_enough(v, d->vertices[i]))
+ return i;
+
+ if (d->nr_vertices_allocated <= d->nr_vertices) {
+ if (d->vertices == 0) {
+ d->vertices = (vertex *) malloc(INCR(d->nr_vertices_allocated) * sizeof (vertex));
+ } else {
+ INCR_ALLOCATION(d->vertices, d->nr_vertices_allocated, vertex);
+ }
+ }
+ d->vertices[d->nr_vertices][0] = v[0];
+ d->vertices[d->nr_vertices][1] = v[1];
+ d->vertices[d->nr_vertices][2] = v[2];
+ return d->nr_vertices++;
+}
+
+static inline GLuint
+save_triangle(glb_data *d, GLuint v1, GLuint v2, GLuint v3)
+{
+ if (d->nr_triangles_allocated <= d->nr_triangles) {
+ if (d->triangles == 0) {
+ d->triangles = (triangle *) malloc(INCR(d->nr_triangles_allocated) * sizeof (triangle));
+ } else {
+ INCR_ALLOCATION(d->triangles, d->nr_triangles_allocated, triangle);
+ }
+ }
+ d->triangles[d->nr_triangles][0] = v1;
+ d->triangles[d->nr_triangles][1] = v2;
+ d->triangles[d->nr_triangles][2] = v3;
+ return d->nr_triangles++;
+}
+
+static inline void
+normalize(GLfloat v[3])
+{
+ GLfloat d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2]));
+
+ if (d != 0) {
+ v[0] /= d;
+ v[1] /= d;
+ v[2] /= d;
+ } else {
+ v[0] = v[1] = v[2] = 0;
+ }
+}
+
+static void
+subdivide(glb_data *d,
+ const GLfloat * v1, GLuint vi1,
+ const GLfloat * v2, GLuint vi2,
+ const GLfloat * v3, GLuint vi3,
+ int depth)
+{
+ int i;
+
+ if (depth == 0) {
+ save_triangle(d, vi1, vi2, vi3);
+ } else {
+ GLuint vi12, vi23, vi31;
+ GLfloat v12[3], v23[3], v31[3];
+
+ for (i = 0; i < 3; ++i) {
+ v12[i] = v1[i] + v2[i];
+ v23[i] = v2[i] + v3[i];
+ v31[i] = v3[i] + v1[i];
+ }
+ normalize(v12);
+ vi12 = save_vertex(d, v12);
+ normalize(v23);
+ vi23 = save_vertex(d, v23);
+ normalize(v31);
+ vi31 = save_vertex(d, v31);
+ subdivide(d, v1, vi1, v12, vi12, v31, vi31, depth - 1);
+ subdivide(d, v2, vi2, v23, vi23, v12, vi12, depth - 1);
+ subdivide(d, v3, vi3, v31, vi31, v23, vi23, depth - 1);
+ subdivide(d, v12, vi12, v23, vi23, v31, vi31, depth - 1);
+ }
+}
+
+#define ICO_X 0.525731112119133606
+#define ICO_Z 0.850650808352039932
+
+static const GLfloat vdata[12][3] =
+{
+ {-ICO_X, 0, ICO_Z},
+ {ICO_X, 0, ICO_Z},
+ {-ICO_X, 0, -ICO_Z},
+ {ICO_X, 0, -ICO_Z},
+ {0, ICO_Z, ICO_X},
+ {0, ICO_Z, -ICO_X},
+ {0, -ICO_Z, ICO_X},
+ {0, -ICO_Z, -ICO_X},
+ {ICO_Z, ICO_X, 0},
+ {-ICO_Z, ICO_X, 0},
+ {ICO_Z, -ICO_X, 0},
+ {-ICO_Z, -ICO_X, 0}
+};
+
+static const GLuint tindices[20][3] =
+{
+ {0, 4, 1},
+ {0, 9, 4},
+ {9, 5, 4},
+ {4, 5, 8},
+ {4, 8, 1},
+ {8, 10, 1},
+ {8, 3, 10},
+ {5, 3, 8},
+ {5, 2, 3},
+ {2, 7, 3},
+ {7, 10, 3},
+ {7, 6, 10},
+ {7, 11, 6},
+ {11, 0, 6},
+ {0, 1, 6},
+ {6, 1, 10},
+ {9, 0, 11},
+ {9, 11, 2},
+ {9, 2, 5},
+ {7, 2, 11}
+};
+
+/* Public interface: Create the sphere. */
+glb_data *
+glb_sphere_init(void)
+{
+ glb_data *d = (glb_data *) calloc (1, sizeof (*d));
+ int i;
+
+ for (i = 0; i < 20; ++i) {
+ subdivide(d, vdata[tindices[i][0]], save_vertex(d, vdata[tindices[i][0]]),
+ vdata[tindices[i][1]], save_vertex(d, vdata[tindices[i][1]]),
+ vdata[tindices[i][2]], save_vertex(d, vdata[tindices[i][2]]),
+ glb_config.subdivision_depth);
+ }
+
+ return d;
+}
+
+/* Return the vertices list. */
+glb_vertex *
+glb_sphere_get_vertices(glb_data *d, int *nr_vertices_ptr)
+{
+ *nr_vertices_ptr = d->nr_vertices;
+ return d->vertices;
+}
+
+/* Return the triangles list. */
+glb_triangle *
+glb_sphere_get_triangles(glb_data *d, int *nr_triangles_ptr)
+{
+ *nr_triangles_ptr = d->nr_triangles;
+ return d->triangles;
+}
+
+/* Free up memory. */
+void
+glb_sphere_end(glb_data *d)
+{
+ (void) free((void *) d->vertices);
+ (void) free((void *) d->triangles);
+ free (d);
+}
diff --git a/hacks/glx/blinkbox.c b/hacks/glx/blinkbox.c
new file mode 100644
index 0000000..f777371
--- /dev/null
+++ b/hacks/glx/blinkbox.c
@@ -0,0 +1,608 @@
+/* blinkbox, Copyright (c) 2003 Jeremy English
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* motion blur added March 2005 by John Boero
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_ball 0
+# define release_ball 0
+# define ball_handle_event xlockmore_no_events
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "sphere.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+#define MAX_COUNT 20
+#define ALPHA_AMT 0.05
+
+/* this should be between 1 and 8 */
+#define DEF_BOXSIZE "2"
+#define DEF_DISSOLVE "False"
+#define DEF_FADE "True"
+#define DEF_BLUR "True"
+
+
+typedef struct{
+ GLfloat x,y,z;
+} Tdpos;
+
+typedef struct{
+ int hit;
+ Tdpos pos;
+ int counter;
+ GLfloat color[3];
+ GLfloat rot[4];
+ int des_count;
+ int alpha_count;
+}Side;
+
+struct Bounding_box {
+ Tdpos top;
+ Tdpos bottom;
+};
+
+struct Ball {
+ GLfloat x;
+ GLfloat y;
+ GLfloat z;
+ int d;
+};
+
+struct bscale {
+ GLfloat wh; /*width Height*/
+ GLfloat d; /*depth*/
+};
+
+static const struct Bounding_box bbox = {{14,14,20},{-14,-14,-20}};
+
+typedef struct {
+ GLXContext *glx_context;
+
+ struct Ball ball;
+
+ struct bscale bscale;
+
+ Tdpos mo; /*motion*/
+ Tdpos moh; /*hold motion value*/
+
+ Tdpos bpos;
+
+ GLuint ballList;
+ GLuint boxList;
+ GLfloat des_amt;
+
+ /*sides*/
+ Side lside;/*Red*/
+ Side rside;/*Green*/
+ Side tside;/*Blue*/
+ Side bside;/*Orange*/
+ Side fside;/*Yellow*/
+ Side aside;/*Purple*/
+ Side *sp;
+
+} blinkboxstruct;
+
+static blinkboxstruct *blinkbox = (blinkboxstruct *) NULL;
+
+
+/* lights */
+static const float LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f };
+static const float LightPosition[]= { 20.0f, 100.0f, 20.0f, 1.0f };
+
+static Bool do_dissolve;
+static Bool do_fade;
+static Bool do_blur;
+static float bscale_wh;
+
+static XrmOptionDescRec opts[] = {
+ { "-boxsize", ".boxsize", XrmoptionSepArg, 0 },
+ { "-dissolve", ".dissolve", XrmoptionNoArg, "True" },
+ { "+dissolve", ".dissolve", XrmoptionNoArg, "False" },
+ { "-fade", ".fade", XrmoptionNoArg, "True" },
+ { "+fade", ".fade", XrmoptionNoArg, "False" },
+ { "-blur", ".blur", XrmoptionNoArg, "True" },
+ { "+blur", ".blur", XrmoptionNoArg, "False" }
+
+};
+
+static argtype vars[] = {
+ {&bscale_wh, "boxsize", "Boxsize", DEF_BOXSIZE, t_Float},
+ {&do_dissolve, "dissolve", "Dissolve", DEF_DISSOLVE, t_Bool},
+ {&do_fade, "fade", "Fade", DEF_FADE, t_Bool},
+ {&do_blur, "blur", "Blur", DEF_BLUR, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+static void
+swap(GLfloat *a, GLfloat *b)
+{
+ GLfloat t = *a;
+ *a = *b;
+ *b = t;
+}
+
+static float
+get_rand(void)
+{
+ GLfloat j = 1+(random() % 2);
+ return (j);
+}
+
+static void
+swap_mov(GLfloat *a, GLfloat *b)
+{
+ int j;
+ swap(a,b);
+ j = get_rand();
+ if (*a < 0)
+ *a = j * -1;
+ else
+ *a = j;
+}
+
+static void
+cp_b_pos(blinkboxstruct *bp, Tdpos *s_pos)
+{
+ s_pos->x = bp->ball.x;
+ s_pos->y = bp->ball.y;
+ s_pos->z = bp->ball.z;
+}
+
+static void
+hit_side(blinkboxstruct *bp)
+{
+ if ((bp->ball.x - bp->ball.d) <= bbox.bottom.x){
+ bp->lside.hit = 1;
+ bp->lside.counter = MAX_COUNT;
+ bp->lside.des_count = 1;
+ bp->lside.alpha_count = 0;
+ cp_b_pos(bp, &bp->lside.pos);
+ swap_mov(&bp->mo.x,&bp->moh.x);
+ }else
+ if ((bp->ball.x + bp->ball.d) >= bbox.top.x){
+ bp->rside.hit = 1;
+ bp->rside.counter = MAX_COUNT;
+ bp->rside.des_count = 1;
+ bp->rside.alpha_count = 0;
+ cp_b_pos(bp, &bp->rside.pos);
+ swap_mov(&bp->mo.x,&bp->moh.x);
+ }
+}
+
+static void
+hit_top_bottom(blinkboxstruct *bp)
+{
+ if ((bp->ball.y - bp->ball.d) <= bbox.bottom.y){
+ bp->bside.hit = 1;
+ bp->bside.counter = MAX_COUNT;
+ bp->bside.des_count = 1;
+ bp->bside.alpha_count = 0;
+ cp_b_pos(bp, &bp->bside.pos);
+ swap_mov(&bp->mo.y,&bp->moh.y);
+ }else
+ if ((bp->ball.y + bp->ball.d) >= bbox.top.y){
+ bp->tside.hit = 1;
+ bp->tside.counter = MAX_COUNT;
+ bp->tside.des_count = 1;
+ bp->tside.alpha_count = 0;
+ cp_b_pos(bp, &bp->tside.pos);
+ swap_mov(&bp->mo.y,&bp->moh.y);
+ }
+}
+
+static void
+hit_front_back(blinkboxstruct *bp)
+{
+ if ((bp->ball.z - bp->ball.d) <= bbox.bottom.z){
+ bp->aside.hit = 1;
+ bp->aside.counter = MAX_COUNT;
+ bp->aside.des_count = 1;
+ bp->aside.alpha_count = 0;
+ cp_b_pos(bp, &bp->aside.pos);
+ swap_mov(&bp->mo.z,&bp->moh.z);
+ }else
+ if((bp->ball.z + bp->ball.d) >= bbox.top.z){
+ bp->fside.hit = 1;
+ bp->fside.counter = MAX_COUNT;
+ bp->fside.des_count = 1;
+ bp->fside.alpha_count = 0;
+ cp_b_pos(bp, &bp->fside.pos);
+ swap_mov(&bp->mo.z,&bp->moh.z);
+ }
+}
+
+ENTRYPOINT void
+reshape_ball (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 40.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 2.0, 10.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+}
+
+static void
+unit_cube(int wire)
+{
+ glBegin((wire)?GL_LINE_LOOP:GL_QUADS);
+ glNormal3f( 0.0f, -1.0f, 0.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+ glNormal3f( 0.0f, 0.0f, 1.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+ glNormal3f( 0.0f, 0.0f, -1.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glNormal3f( 1.0f, 0.0f, 0.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+ glNormal3f( -1.0f, 0.0f, 0.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+ glNormal3f( 1.0f, 1.0f, 0.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glEnd();
+}
+
+ENTRYPOINT void
+init_ball (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ blinkboxstruct *bp;
+
+ MI_INIT (mi, blinkbox);
+ bp = &blinkbox[MI_SCREEN(mi)];
+
+ if ((bp->glx_context = init_GL(mi)) != NULL) {
+ reshape_ball(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ }
+ else
+ MI_CLEARWINDOW(mi);
+
+ bp->ball.d = 1;
+ bp->bscale.wh = bscale_wh;
+ bp->bscale.d = 0.25;
+
+ bp->mo.x = 1;
+ bp->mo.y = 1;
+ bp->mo.z = 1;
+
+ bp->moh.x = -1.0;
+ bp->moh.y = -1.5;
+ bp->moh.z = -1.5;
+
+ bp->bpos.x = 1;
+ bp->bpos.y = 1;
+ bp->bpos.z = 1;
+
+ bp->des_amt = 1;
+
+ bp->lside.counter = MAX_COUNT;
+ bp->rside.counter = MAX_COUNT;
+ bp->tside.counter = MAX_COUNT;
+ bp->bside.counter = MAX_COUNT;
+ bp->fside.counter = MAX_COUNT;
+ bp->aside.counter = MAX_COUNT;
+
+ bp->lside.color[0] = 1;
+ bp->rside.color[1] = 1;
+ bp->tside.color[2] = 1;
+
+ bp->bside.color[0] = 1;
+ bp->bside.color[1] = 0.5;
+
+ bp->fside.color[0] = 1;
+ bp->fside.color[1] = 1;
+
+ bp->aside.color[0] = 0.5;
+ bp->aside.color[2] = 1;
+
+ bp->lside.rot[0] = 90;
+ bp->rside.rot[0] = 90;
+ bp->tside.rot[0] = 90;
+ bp->bside.rot[0] = 90;
+ bp->fside.rot[0] = 90;
+ bp->aside.rot[0] = 90;
+
+ bp->lside.rot[2] = 1;
+ bp->rside.rot[2] = 1;
+ bp->tside.rot[1] = 1;
+ bp->bside.rot[1] = 1;
+ bp->fside.rot[3] = 1;
+ bp->aside.rot[3] = 1;
+
+ bp->lside.des_count = 1;
+ bp->rside.des_count = 1;
+ bp->tside.des_count = 1;
+ bp->bside.des_count = 1;
+ bp->fside.des_count = 1;
+ bp->aside.des_count = 1;
+
+ bp->lside.alpha_count = 1;
+ bp->rside.alpha_count = 1;
+ bp->tside.alpha_count = 1;
+ bp->bside.alpha_count = 1;
+ bp->fside.alpha_count = 1;
+ bp->aside.alpha_count = 1;
+
+
+#define SPHERE_SLICES 12 /* how densely to render spheres */
+#define SPHERE_STACKS 16
+
+ bp->sp = malloc(sizeof(*bp->sp));
+ if(bp->sp == NULL){
+ fprintf(stderr,"Could not allocate memory\n");
+ exit(1);
+ }
+ if( (bp->bscale.wh < 1) ||
+ (bp->bscale.wh > 8) ) {
+ fprintf(stderr,"Boxsize out of range. Using default\n");
+ bp->bscale.wh = 2;
+ }
+ if (do_dissolve){
+ bp->des_amt = bp->bscale.wh / MAX_COUNT;
+ }
+
+ reshape_ball(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ bp->ballList = glGenLists(1);
+ glNewList(bp->ballList, GL_COMPILE);
+ unit_sphere (SPHERE_STACKS, SPHERE_SLICES, wire);
+ glEndList ();
+
+ bp->boxList = glGenLists(1);
+ glNewList(bp->boxList, GL_COMPILE);
+ unit_cube(wire);
+ glEndList();
+
+ if (wire) return;
+
+ glEnable(GL_COLOR_MATERIAL);
+ glShadeModel(GL_SMOOTH);
+ glClearDepth(1.0f);
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_LEQUAL);
+ glEnable(GL_LIGHTING);
+ glClearDepth(1);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);
+ glEnable(GL_LIGHT1);
+ if (do_fade || do_blur) {
+ glEnable(GL_BLEND);
+ glDisable(GL_DEPTH_TEST);
+ }
+}
+
+static void
+CheckBoxPos(blinkboxstruct *bp,
+ GLfloat bot_x, GLfloat top_x, GLfloat bot_y, GLfloat top_y)
+{
+ /*Make sure it's inside of the bounding box*/
+ bp->bpos.x = ((bp->bpos.x - bp->bscale.wh) < bot_x) ? bot_x + bp->bscale.wh : bp->bpos.x;
+ bp->bpos.x = ((bp->bpos.x + bp->bscale.wh) > top_x) ? top_x - bp->bscale.wh : bp->bpos.x;
+ bp->bpos.y = ((bp->bpos.y - bp->bscale.wh) < bot_y) ? bot_y + bp->bscale.wh : bp->bpos.y;
+ bp->bpos.y = ((bp->bpos.y + bp->bscale.wh) > top_y) ? top_y - bp->bscale.wh : bp->bpos.y;
+}
+
+ENTRYPOINT void
+draw_ball (ModeInfo *mi)
+{
+ blinkboxstruct *bp = &blinkbox[MI_SCREEN(mi)];
+
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i = 0;
+
+ if (! bp->glx_context)
+ return;
+ mi->polygon_count = 0;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ hit_top_bottom(bp);
+ hit_front_back(bp);
+ hit_side(bp);
+
+ glRotated(0.25,0,0,1);
+ glRotated(0.25,0,1,0);
+ glRotated(0.25,1,0,0);
+
+
+ glPushMatrix();
+ glScalef(0.5,0.5,0.5);
+
+ glColor3f(1,1,1);
+ glPushMatrix();
+
+ if (!do_blur || MI_IS_WIREFRAME(mi)) {
+ glTranslatef(bp->ball.x += bp->mo.x,
+ bp->ball.y += bp->mo.y,
+ bp->ball.z += bp->mo.z);
+
+ glScalef(2,2,2);
+ glCallList(bp->ballList);
+ mi->polygon_count += SPHERE_SLICES*SPHERE_STACKS;
+
+ } else {
+
+# define blur_detail 24.0
+ float ball_alpha = 1 / blur_detail;
+
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE);
+ glTranslatef(bp->ball.x, bp->ball.y, bp->ball.z);
+
+ for (i = 0; i < blur_detail; ++i) {
+ glTranslatef(bp->mo.x / blur_detail,
+ bp->mo.y / blur_detail,
+ bp->mo.z / blur_detail);
+
+ /* comment the following line for quick but boring linear blur */
+ ball_alpha = sin((M_PI / blur_detail) * i) / blur_detail;
+
+ glColor4f(1, 1, 1, ball_alpha);
+
+ glScalef(2, 2, 2);
+ glCallList(bp->ballList);
+ mi->polygon_count += SPHERE_SLICES*SPHERE_STACKS;
+ glScalef(.5, .5, .5);
+ }
+ i = 0;
+
+ bp->ball.x += bp->mo.x;
+ bp->ball.y += bp->mo.y;
+ bp->ball.z += bp->mo.z;
+ }
+
+ glPopMatrix();
+
+ while(i < 6){
+ switch(i){
+ case 0:{
+ bp->sp = &bp->lside;
+ bp->bpos.x = bp->lside.pos.z*-1;
+ bp->bpos.y = bp->lside.pos.y;
+ bp->bpos.z = bbox.bottom.x - bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.z,bbox.top.z,bbox.bottom.y,bbox.top.y);
+ break;
+ }
+ case 1:{
+ bp->sp = &bp->rside;
+ bp->bpos.x = bp->rside.pos.z*-1;
+ bp->bpos.y = bp->rside.pos.y;
+ bp->bpos.z = bbox.top.x + bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.z,bbox.top.z,bbox.bottom.y,bbox.top.y);
+ break;
+ }
+ case 2:{
+ bp->sp = &bp->tside;
+ bp->bpos.x = bp->tside.pos.x;
+ bp->bpos.y = bp->tside.pos.z;
+ bp->bpos.z = bbox.bottom.y - bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.x,bbox.top.x,bbox.bottom.z,bbox.top.z);
+ break;
+ }
+ case 3:{
+ bp->sp = &bp->bside;
+ bp->bpos.x = bp->bside.pos.x;
+ bp->bpos.y = bp->bside.pos.z;
+ bp->bpos.z = bbox.top.y + bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.x,bbox.top.x,bbox.bottom.z,bbox.top.z);
+ break;
+ }
+ case 4:{
+ bp->sp = &bp->fside;
+ bp->bpos.x = bp->fside.pos.y;
+ bp->bpos.y = bp->fside.pos.x*-1;
+ bp->bpos.z = bbox.top.z + bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.y,bbox.top.y,bbox.bottom.x,bbox.top.x);
+ break;
+ }
+ case 5:{
+ bp->sp = &bp->aside;
+ bp->bpos.x = bp->aside.pos.y;
+ bp->bpos.y = bp->aside.pos.x*-1;
+ bp->bpos.z = bbox.bottom.z + bp->bscale.d;
+ if (bp->sp->hit)
+ CheckBoxPos(bp, bbox.bottom.y,bbox.top.y,bbox.bottom.x,bbox.top.x);
+ break;
+ }
+ }
+ if(bp->sp->hit){
+ if(do_fade){
+ glColor4f(bp->sp->color[0],bp->sp->color[1],bp->sp->color[2],1-(ALPHA_AMT * bp->sp->alpha_count));
+ }else{
+ glColor3fv(bp->sp->color);
+ }
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE);
+ glPushMatrix();
+ glRotatef(bp->sp->rot[0],bp->sp->rot[1],bp->sp->rot[2],bp->sp->rot[3]);
+ glTranslatef(bp->bpos.x,bp->bpos.y,bp->bpos.z);
+ if (do_dissolve) {
+ glScalef(bp->bscale.wh-(bp->des_amt*bp->sp->des_count),bp->bscale.wh-(bp->des_amt*bp->sp->des_count),bp->bscale.d);
+ }else{
+ glScalef(bp->bscale.wh,bp->bscale.wh,bp->bscale.d);
+ }
+ glCallList(bp->boxList);
+ mi->polygon_count += 6;
+ glPopMatrix();
+ bp->sp->counter--;
+ bp->sp->des_count++;
+ bp->sp->alpha_count++;
+ if(!bp->sp->counter)
+ {
+ bp->sp->hit = 0;
+ }
+ }
+ i++;
+ }
+
+
+ glPopMatrix();
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(dpy, window);
+
+}
+
+XSCREENSAVER_MODULE_2 ("BlinkBox", blinkbox, ball)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/blinkbox.man b/hacks/glx/blinkbox.man
new file mode 100644
index 0000000..0dc2a3f
--- /dev/null
+++ b/hacks/glx/blinkbox.man
@@ -0,0 +1,73 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+blinkbox \- shows a ball inside a box.
+.SH SYNOPSIS
+.B blinkbox
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-wireframe]
+[\-boxsize \fInumber\fP]
+[\-dissolve]
+[\-fade]
+[\-no\-blur]
+[\-fps]
+.SH DESCRIPTION
+Shows a ball contained inside of a bounding box. Colored blocks blink in
+when the ball hits the edges.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-boxsize
+Sets the size of the colored boxes. Should be between 1 and 8. Default: 2
+.TP 8
+.B \-dissolve | \-no-dissolve
+Boxes shrink instead of just vanishing.
+.TP 8
+.B \-fade | \-no-fade
+Boxes fade to transparency instead of just vanishing.
+.TP 8
+.B \-blur | \-no-blur
+Enable or disable motion blur on the ball. Default: blurry.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Jeremy English. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jeremy English. Motion blur by John Boero.
diff --git a/hacks/glx/blocktube.c b/hacks/glx/blocktube.c
new file mode 100644
index 0000000..d4a402e
--- /dev/null
+++ b/hacks/glx/blocktube.c
@@ -0,0 +1,457 @@
+/* blocktube, Copyright (c) 2003 Lars Damerow
+ *
+ * Based on Jamie Zawinski's original dangerball code.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEBUG 1
+
+#define DEFAULTS "*delay: 40000 \n" \
+ "*wireframe: False \n" \
+ "*showFPS: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define release_blocktube 0
+# define blocktube_handle_event xlockmore_no_events
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include
+#include
+
+#ifdef USE_GL /* whole file */
+
+#define DEF_HOLDTIME "1000"
+#define DEF_CHANGETIME "200"
+#define MAX_ENTITIES 1000
+#define DEF_TEXTURE "True"
+#define DEF_FOG "True"
+
+#if defined(USE_XPM) || defined(USE_XPMINC) || defined(STANDALONE)
+/* USE_XPM & USE_XPMINC in xlock mode ; HAVE_XPM in xscreensaver mode */
+#include "ximage-loader.h"
+#define I_HAVE_XPM
+
+#include "images/gen/blocktube_png.h"
+#endif /* HAVE_XPM */
+
+typedef struct {
+ int id, r, g, b;
+ GLfloat tVal;
+ int age;
+ int lifetime;
+ GLfloat position[3];
+ GLfloat angle;
+ GLfloat angularVelocity;
+} entity;
+
+typedef struct {
+ GLXContext *glx_context;
+ GLuint block_dlist;
+ int nextID;
+
+ entity entities[MAX_ENTITIES];
+ float targetR, targetG, targetB,
+ currentR, currentG, currentB,
+ deltaR, deltaG, deltaB;
+ int counter;
+ int changing;
+ GLfloat zoom;
+ GLfloat tilt;
+ GLuint envTexture;
+ XImage *texti;
+
+ GLfloat tunnelLength;
+ GLfloat tunnelWidth;
+ int polys;
+
+} blocktube_configuration;
+
+static blocktube_configuration *lps = NULL;
+
+static GLint holdtime;
+static GLint changetime;
+static int do_texture;
+static int do_fog;
+
+static XrmOptionDescRec opts[] = {
+ { "-holdtime", ".holdtime", XrmoptionSepArg, 0 },
+ { "-changetime", ".changetime", XrmoptionSepArg, 0 },
+ {"-texture", ".texture", XrmoptionNoArg, "True" },
+ {"+texture", ".texture", XrmoptionNoArg, "False" },
+ {"-fog", ".fog", XrmoptionNoArg, "True" },
+ {"+fog", ".fog", XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+ {&holdtime, "holdtime", "Hold Time", DEF_HOLDTIME, t_Int},
+ {&changetime, "changetime", "Change Time", DEF_CHANGETIME, \
+ t_Int},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ {&do_fog, "fog", "Fog", DEF_FOG, t_Bool},
+};
+
+static OptionStruct desc[] = {
+ {"-holdtime", "how long to stay on the same color"},
+ {"-changetime", "how long it takes to fade to a new color"},
+};
+
+ENTRYPOINT ModeSpecOpt blocktube_opts = {countof(opts), opts, countof(vars), vars, desc};
+
+#ifdef USE_MODULES
+ModStruct blocktube_description =
+ {"blocktube", "init_blocktube", "draw_blocktube", (char *)NULL,
+ "draw_blocktube", "init_blocktube", "free_blocktube", &blocktube_opts,
+ 40000, 30, 1, 1, 64, 1.0, "",
+ "A shifting tunnel of reflective blocks", 0, NULL};
+#endif /* USE_MODULES */
+
+#if defined( I_HAVE_XPM )
+static Bool LoadGLTextures(ModeInfo *mi)
+{
+ blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
+ Bool status;
+
+ status = True;
+ glGenTextures(1, &lp->envTexture);
+ glBindTexture(GL_TEXTURE_2D, lp->envTexture);
+ lp->texti = image_data_to_ximage(MI_DISPLAY(mi), MI_VISUAL(mi),
+ blocktube_png, sizeof(blocktube_png));
+ if (!lp->texti) {
+ status = False;
+ } else {
+ glPixelStorei(GL_UNPACK_ALIGNMENT,1);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, lp->texti->width, lp->texti->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, lp->texti->data);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+# ifndef HAVE_JWZGLES /* #### Sphere maps unimplemented */
+ glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
+ glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
+# endif
+ }
+ return status;
+}
+#endif
+
+static void newTargetColor(blocktube_configuration *lp)
+{
+ int luminance = 0;
+
+ while (luminance <= 150) {
+ lp->targetR = random() % 256;
+ lp->targetG = random() % 256;
+ lp->targetB = random() % 256;
+ lp->deltaR = (lp->targetR - lp->currentR) / changetime;
+ lp->deltaG = (lp->targetG - lp->currentG) / changetime;
+ lp->deltaB = (lp->targetB - lp->currentB) / changetime;
+ luminance = 0.3 * lp->targetR + 0.59 * lp->targetG + 0.11 * lp->targetB;
+ }
+}
+
+static void randomize_entity (blocktube_configuration *lp, entity *ent)
+{
+ ent->id = lp->nextID++;
+ ent->tVal = 1 - ((float)random() / RAND_MAX / 1.5);
+ ent->age = 0;
+ ent->lifetime = 100;
+ ent->angle = random() % 360;
+ ent->angularVelocity = 0.5-((float)(random()) / RAND_MAX);
+ ent->position[0] = (float)(random()) / RAND_MAX + lp->tunnelWidth;
+ ent->position[1] = (float)(random()) / RAND_MAX * 2;
+ ent->position[2] = -(float)(random()) / RAND_MAX * lp->tunnelLength;
+}
+
+static void entityTick(blocktube_configuration *lp, entity *ent)
+{
+ ent->angle += ent->angularVelocity;
+ ent->position[2] += 0.1;
+ if (ent->position[2] > lp->zoom) {
+ ent->position[2] = -lp->tunnelLength + ((float)(random()) / RAND_MAX) * 20;
+ }
+ ent->age += 0.1;
+}
+
+static void tick(blocktube_configuration *lp)
+{
+ lp->counter--;
+ if (!lp->counter) {
+ if (!lp->changing) {
+ newTargetColor(lp);
+ lp->counter = changetime;
+ } else {
+ lp->counter = holdtime;
+ }
+ lp->changing = (!lp->changing);
+ } else {
+ if (lp->changing) {
+ lp->currentR += lp->deltaR;
+ lp->currentG += lp->deltaG;
+ lp->currentB += lp->deltaB;
+ }
+ }
+}
+
+static int cube_vertices(float x, float y, float z, int wire);
+
+ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height);
+
+ENTRYPOINT void init_blocktube (ModeInfo *mi)
+{
+ int loop;
+ GLfloat fogColor[4] = {0,0,0,1};
+ blocktube_configuration *lp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT(mi, lps);
+
+ lp = &lps[MI_SCREEN(mi)];
+ lp->glx_context = init_GL(mi);
+
+ lp->zoom = 30;
+ lp->tilt = 4.5;
+ lp->tunnelLength = 200;
+ lp->tunnelWidth = 5;
+
+ if (wire) {
+ do_fog = False;
+ do_texture = False;
+ glLineWidth(2);
+ }
+
+ lp->block_dlist = glGenLists (1);
+ glNewList (lp->block_dlist, GL_COMPILE);
+ lp->polys = cube_vertices(0.15, 1.2, 5.25, wire);
+ glEndList ();
+
+#if defined( I_HAVE_XPM )
+ if (do_texture) {
+ if (!LoadGLTextures(mi)) {
+ fprintf(stderr, "%s: can't load textures!\n", progname);
+ exit(1);
+ }
+ glEnable(GL_TEXTURE_2D);
+ }
+#endif
+
+ /* kick on the fog machine */
+ if (do_fog) {
+ glEnable(GL_FOG);
+ glFogi(GL_FOG_MODE, GL_LINEAR);
+ glHint(GL_FOG_HINT, GL_NICEST);
+ glFogf(GL_FOG_START, 0);
+ glFogf(GL_FOG_END, lp->tunnelLength/1.8);
+ glFogfv(GL_FOG_COLOR, fogColor);
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
+ }
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glClearDepth(1.0f);
+
+ if (!do_texture && !wire) {
+ /* If there is no texture, the boxes don't show up without a light.
+ Though I don't understand why all the blocks come out gray.
+ */
+ GLfloat pos[4] = {0.0, 1.0, 1.0, 0.0};
+ GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ }
+
+ lp->counter = holdtime;
+ lp->currentR = random() % 256;
+ lp->currentG = random() % 256;
+ lp->currentB = random() % 256;
+ newTargetColor(lp);
+ for (loop = 0; loop < MAX_ENTITIES; loop++)
+ {
+ randomize_entity(lp, &lp->entities[loop]);
+ }
+ reshape_blocktube(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glFlush();
+}
+
+ENTRYPOINT void free_blocktube (ModeInfo *mi)
+{
+ blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
+# if defined ( I_HAVE_XPM )
+ if (lp->glx_context) {
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+
+ if (lp->envTexture)
+ glDeleteTextures(1, &lp->envTexture);
+ if (lp->texti)
+ XDestroyImage(lp->texti);
+ }
+# endif
+}
+
+ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height)
+{
+ blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45.0, 1/h, 1.0, 100.0);
+ glMatrixMode(GL_MODELVIEW);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+}
+
+static int cube_vertices(float x, float y, float z, int wire)
+{
+ int polygon_count = 0;
+ float x2, y2, z2, nv = 0.7;
+ x2 = x/2;
+ y2 = y/2;
+ z2 = z/2;
+
+ glFrontFace(GL_CW);
+
+ glNormal3f(0, 0, nv);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(0.0, 0.0); glVertex3f(-x2, y2, z2);
+ glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2);
+ glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2);
+ glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
+ polygon_count++;
+ glEnd();
+
+ glNormal3f(0, 0, -nv);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(1.0, 0.0); glVertex3f(-x2, -y2, -z2);
+ glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, -z2);
+ glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, -z2);
+ glTexCoord2f(0.0, 0.0); glVertex3f(-x2, y2, -z2);
+ polygon_count++;
+ glEnd();
+
+ glNormal3f(0, nv, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(0.0, 1.0); glVertex3f(-x2, y2, -z2);
+ glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2);
+ glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2);
+ glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2);
+ polygon_count++;
+ glEnd();
+
+ glNormal3f(0, -nv, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(1.0, 1.0); glVertex3f(-x2, -y2, -z2);
+ glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
+ glTexCoord2f(0.0, 0.0); glVertex3f( x2, -y2, z2);
+ glTexCoord2f(1.0, 0.0); glVertex3f( x2, -y2, -z2);
+ polygon_count++;
+ glEnd();
+
+ if (wire) return polygon_count;
+
+ glNormal3f(nv, 0, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(1.0, 0.0); glVertex3f( x2, -y2, -z2);
+ glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2);
+ glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, z2);
+ glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2);
+ polygon_count++;
+ glEnd();
+
+ glNormal3f(-nv, 0, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(0.0, 0.0); glVertex3f(-x2, -y2, -z2);
+ glTexCoord2f(1.0, 0.0); glVertex3f(-x2, y2, -z2);
+ glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2);
+ glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
+ polygon_count++;
+ glEnd();
+
+ return polygon_count;
+}
+
+static void draw_block(ModeInfo *mi, entity *ent)
+{
+ blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
+ glCallList (lp->block_dlist);
+ mi->polygon_count += lp->polys;
+}
+
+ENTRYPOINT void
+draw_blocktube (ModeInfo *mi)
+{
+ blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ entity *cEnt = NULL;
+ int loop = 0;
+
+ if (!lp->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ if (do_texture) {
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ glBindTexture(GL_TEXTURE_2D, lp->envTexture);
+ }
+
+ for (loop = 0; loop < MAX_ENTITIES; loop++) {
+ cEnt = &lp->entities[loop];
+
+ glLoadIdentity();
+ glTranslatef(0.0f, 0.0f, lp->zoom);
+ glRotatef(lp->tilt, 1.0f, 0.0f, 0.0f);
+ glRotatef(cEnt->angle, 0.0f, 0.0f, 1.0f);
+ glTranslatef(cEnt->position[0], cEnt->position[1], cEnt->position[2]);
+ glColor4ub((int)(lp->currentR * cEnt->tVal),
+ (int)(lp->currentG * cEnt->tVal),
+ (int)(lp->currentB * cEnt->tVal), 255);
+ draw_block(mi, cEnt);
+ entityTick(lp, cEnt);
+ }
+ tick(lp);
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE ("BlockTube", blocktube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/blocktube.man b/hacks/glx/blocktube.man
new file mode 100644
index 0000000..5d016e0
--- /dev/null
+++ b/hacks/glx/blocktube.man
@@ -0,0 +1,73 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+blocktube - draws a swirling, falling tunnel of reflective slabs
+.SH SYNOPSIS
+.B blocktube
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-holdtime \fInumber\fP]
+[\-changetime \fInumber\fP]
+[\-no-texture]
+[\-no-fog]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Blocktube draws a swirling, falling tunnel of reflective slabs. They fade
+from hue to hue.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
+.TP 8
+.B \-holdtime \fInumber\fP
+How long to stay on the same color. Default: 1000 frames.
+.TP 8
+.B \-changetime \fInumber\fP
+How long it takes to fade to a new color. Default: 200 frames.
+.TP 8
+.B \-no-texture
+Draw solid blocks intstead of reflective blocks.
+.TP 8
+.B \-no-fog
+Do not make blocks in the distance be darker.
+.TP 8
+.B \-wireframe
+Only draw outlines.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Lars Damerow. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Lars Damerow
diff --git a/hacks/glx/boing.c b/hacks/glx/boing.c
new file mode 100644
index 0000000..55a05f3
--- /dev/null
+++ b/hacks/glx/boing.c
@@ -0,0 +1,658 @@
+/* boing, Copyright (c) 2005-2014 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * A clone of the Amiga 1000 "Boing" demo. This was the first graphics demo
+ * for the Amiga, written by Dale Luck and RJ Mical during a break at the 1984
+ * Consumer Electronics Show (or so the legend goes.) The boing ball was
+ * briefly the official logo of Amiga Inc., until they were bought by
+ * Commodore later that year.
+ *
+ * With no arguments, this program looks a lot like the original Amiga demo.
+ * With "-smooth -lighting", it looks... less old.
+ *
+ * The amiga version made noise when the ball hit the walls. This version
+ * does not, obviously.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define free_boing 0
+# define release_boing 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "True"
+#define DEF_LIGHTING "False"
+#define DEF_SMOOTH "False"
+#define DEF_SCANLINES "True"
+#define DEF_SPEED "1.0"
+#define DEF_BALL_SIZE "0.5"
+#define DEF_ANGLE "15"
+#define DEF_MERIDIANS "16"
+#define DEF_PARALLELS "8"
+#define DEF_TILES "12"
+#define DEF_THICKNESS "0.05"
+
+#define DEF_BALL_COLOR1 "#CC1919"
+#define DEF_BALL_COLOR2 "#F2F2F2"
+#define DEF_GRID_COLOR "#991999"
+#define DEF_SHADOW_COLOR "#303030"
+#define DEF_BACKGROUND "#8C8C8C"
+
+typedef struct { GLfloat x, y, z; } XYZ;
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLfloat speed;
+
+ GLuint ball_list;
+ double ball_x, ball_y, ball_z, ball_th;
+ double ball_dx, ball_dy, ball_dz, ball_dth;
+ double ball_ddx, ball_ddy, ball_ddz;
+
+ GLfloat ball_color1[4], ball_color2[4], grid_color[4];
+ GLfloat bg_color[4], shadow_color[4];
+ GLfloat lightpos[4];
+
+} boing_configuration;
+
+static boing_configuration *bps = NULL;
+
+static Bool spin;
+static Bool lighting_p;
+static Bool smooth_p;
+static Bool scanlines_p;
+static GLfloat speed;
+static int angle;
+static GLfloat ball_size;
+static unsigned int meridians;
+static unsigned int parallels;
+static unsigned int tiles;
+static GLfloat thickness;
+static char *ball_color1_str, *ball_color2_str, *grid_color_str,
+ *shadow_str, *bg_str;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-lighting", ".lighting", XrmoptionNoArg, "True" },
+ { "+lighting", ".lighting", XrmoptionNoArg, "False" },
+ { "-smooth", ".smooth", XrmoptionNoArg, "True" },
+ { "+smooth", ".smooth", XrmoptionNoArg, "False" },
+ { "-scanlines", ".scanlines", XrmoptionNoArg, "True" },
+ { "+scanlines", ".scanlines", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-angle", ".angle", XrmoptionSepArg, 0 },
+ { "-size", ".ballSize", XrmoptionSepArg, 0 },
+ { "-meridians", ".meridians", XrmoptionSepArg, 0 },
+ { "-parallels", ".parallels", XrmoptionSepArg, 0 },
+ { "-tiles", ".tiles", XrmoptionSepArg, 0 },
+ { "-thickness", ".thickness", XrmoptionSepArg, 0 },
+ { "-ball-color1",".ballColor1",XrmoptionSepArg, 0 },
+ { "-ball-color2",".ballColor2",XrmoptionSepArg, 0 },
+ { "-grid-color", ".gridColor", XrmoptionSepArg, 0 },
+ { "-shadow-color",".shadowColor",XrmoptionSepArg, 0 },
+ { "-background", ".boingBackground",XrmoptionSepArg, 0 },
+ { "-bg", ".boingBackground",XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&lighting_p,"lighting", "Lighting", DEF_LIGHTING, t_Bool},
+ {&smooth_p, "smooth", "Smooth", DEF_SMOOTH, t_Bool},
+ {&scanlines_p,"scanlines","Scanlines", DEF_SCANLINES, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&angle, "angle", "Angle", DEF_ANGLE, t_Int},
+ {&ball_size, "ballSize", "BallSize", DEF_BALL_SIZE, t_Float},
+ {&meridians, "meridians", "meridians", DEF_MERIDIANS, t_Int},
+ {¶llels, "parallels", "parallels", DEF_PARALLELS, t_Int},
+ {&tiles, "tiles", "Tiles", DEF_TILES, t_Int},
+ {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float},
+ {&ball_color1_str, "ballColor1", "BallColor1", DEF_BALL_COLOR1, t_String},
+ {&ball_color2_str, "ballColor2", "BallColor2", DEF_BALL_COLOR2, t_String},
+ {&grid_color_str, "gridColor", "GridColor", DEF_GRID_COLOR, t_String},
+ {&shadow_str, "shadowColor","ShadowColor",DEF_SHADOW_COLOR,t_String},
+ /* dammit, -background is too magic... */
+ {&bg_str, "boingBackground", "Background", DEF_BACKGROUND, t_String},
+};
+
+ENTRYPOINT ModeSpecOpt boing_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+static void
+parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a)
+{
+ XColor c;
+ a[3] = 1.0; /* alpha */
+
+ if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+ {
+ fprintf (stderr, "%s: can't parse %s color %s", progname, name, s);
+ exit (1);
+ }
+ a[0] = c.red / 65536.0;
+ a[1] = c.green / 65536.0;
+ a[2] = c.blue / 65536.0;
+}
+
+
+static void
+draw_grid (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ int x, y;
+ GLfloat t2 = (GLfloat) tiles / 2;
+ GLfloat s = 1.0 / (tiles + thickness);
+ GLfloat z = 0;
+
+ GLfloat lw = MI_HEIGHT(mi) * 0.06 * thickness;
+
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->grid_color);
+ glColor3fv (bp->grid_color);
+
+ glPushMatrix();
+ glScalef(s, s, s);
+ glTranslatef (-t2, -t2, 0);
+
+ glLineWidth (lw);
+ glBegin (GL_LINES);
+ for (y = 0; y <= tiles; y++)
+ {
+ glVertex3f (0, y, z);
+ glVertex3f (tiles, y, z);
+ /*mi->polygon_count++;*/
+ }
+ for (x = 0; x <= tiles; x++)
+ {
+ glVertex3f (x, tiles, z);
+ glVertex3f (x, 0, z);
+ /*mi->polygon_count++;*/
+ }
+
+ glEnd();
+ glPopMatrix();
+}
+
+
+static void
+draw_box (ModeInfo *mi)
+{
+ /* boing_configuration *bp = &bps[MI_SCREEN(mi)]; */
+ glPushMatrix();
+ glTranslatef (0, 0, -0.5);
+/* glFrontFace (GL_CCW);*/
+ draw_grid (mi);
+ glPopMatrix();
+
+ glPushMatrix();
+ glRotatef (90, 1, 0, 0);
+ glTranslatef (0, 0, 0.5);
+/* glFrontFace (GL_CW);*/
+ draw_grid (mi);
+ glPopMatrix();
+}
+
+
+static void
+draw_ball (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int x, y;
+ int xx = meridians;
+ int yy = parallels;
+ int scale = (smooth_p ? 5 : 1);
+
+ if (lighting_p && !wire)
+ glEnable (GL_LIGHTING);
+
+ if (parallels < 3)
+ scale *= 2;
+
+ xx *= scale;
+ yy *= scale;
+
+ glFrontFace (GL_CW);
+
+ glPushMatrix();
+ glTranslatef (bp->ball_x, bp->ball_y, bp->ball_z);
+ glScalef (ball_size, ball_size, ball_size);
+ glRotatef (-angle, 0, 0, 1);
+ glRotatef (bp->ball_th, 0, 1, 0);
+
+ for (y = 0; y < yy; y++)
+ {
+ GLfloat thy0 = y * (M_PI * 2) / (yy * 2) + M_PI_2;
+ GLfloat thy1 = (y+1) * (M_PI * 2) / (yy * 2) + M_PI_2;
+
+ for (x = 0; x < xx; x++)
+ {
+ GLfloat thx0 = x * (M_PI * 2) / xx;
+ GLfloat thx1 = (x+1) * (M_PI * 2) / xx;
+ XYZ p;
+ Bool bgp = ((x/scale) & 1) ^ ((y/scale) & 1);
+
+ if (wire && bgp) continue;
+
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE,
+ (bgp ? bp->ball_color2 : bp->ball_color1));
+ glColor3fv (bgp ? bp->ball_color2 : bp->ball_color1);
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+
+ if (!smooth_p)
+ {
+ p.x = cos((thy0+thy1)/2) * cos((thx0+thx1)/2);
+ p.y = sin((thy0+thy1)/2);
+ p.z = cos((thy0+thy1)/2) * sin((thx0+thx1)/2);
+ glNormal3f (-p.x, -p.y, -p.z);
+ }
+
+ p.x = cos(thy0) * cos(thx0) / 2;
+ p.y = sin(thy0) / 2;
+ p.z = cos(thy0) * sin(thx0) / 2;
+ if (smooth_p)
+ glNormal3f (-p.x, -p.y, -p.z);
+ glVertex3f (p.x, p.y, p.z);
+
+ p.x = cos(thy1) * cos(thx0) / 2;
+ p.y = sin(thy1) / 2;
+ p.z = cos(thy1) * sin(thx0) / 2;
+ if (smooth_p)
+ glNormal3f (-p.x, -p.y, -p.z);
+ glVertex3f (p.x, p.y, p.z);
+
+ p.x = cos(thy1) * cos(thx1) / 2;
+ p.y = sin(thy1) / 2;
+ p.z = cos(thy1) * sin(thx1) / 2;
+ if (smooth_p)
+ glNormal3f (-p.x, -p.y, -p.z);
+ glVertex3f (p.x, p.y, p.z);
+
+ p.x = cos(thy0) * cos(thx1) / 2;
+ p.y = sin(thy0) / 2;
+ p.z = cos(thy0) * sin(thx1) / 2;
+ if (smooth_p)
+ glNormal3f (-p.x, -p.y, -p.z);
+ glVertex3f (p.x, p.y, p.z);
+
+ glEnd ();
+ mi->polygon_count++;
+ }
+ }
+
+ glPopMatrix();
+
+ if (lighting_p && !wire)
+ glDisable(GL_LIGHTING);
+}
+
+
+static void
+draw_shadow (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat xoff = 0.14;
+ GLfloat yoff = 0.07;
+ int y;
+ int yy = parallels;
+ int scale = (smooth_p ? 5 : 1);
+
+ if (lighting_p && !wire)
+ glEnable (GL_BLEND);
+
+ if (parallels < 3)
+ scale *= 2;
+
+ yy *= scale;
+
+ glPushMatrix();
+ glTranslatef (bp->ball_x + xoff, bp->ball_y + yoff, -0.49);
+ glScalef (ball_size, ball_size, ball_size);
+ glRotatef (-angle, 0, 0, 1);
+
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bp->shadow_color);
+ glColor4fv (bp->shadow_color);
+
+ glFrontFace (GL_CCW);
+ glNormal3f (0, 0, 1);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN);
+ if (!wire) glVertex3f (0, 0, 0);
+
+ for (y = 0; y < yy*2+1; y++)
+ {
+ GLfloat thy0 = y * (M_PI * 2) / (yy * 2) + M_PI_2;
+ glVertex3f (cos(thy0) / 2, sin(thy0) / 2, 0);
+ mi->polygon_count++;
+ }
+
+ glEnd ();
+
+ glPopMatrix();
+
+ if (lighting_p && !wire)
+ glDisable (GL_BLEND);
+}
+
+
+static void
+draw_scanlines (ModeInfo *mi)
+{
+ /* boing_configuration *bp = &bps[MI_SCREEN(mi)]; */
+ int wire = MI_IS_WIREFRAME(mi);
+ int w = MI_WIDTH(mi);
+ int h = MI_HEIGHT(mi);
+
+ if (h <= 300) return;
+
+ if (!wire)
+ {
+ glEnable (GL_BLEND);
+ glDisable (GL_DEPTH_TEST);
+ }
+
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ {
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ {
+ int lh, ls;
+ int y;
+ glLoadIdentity();
+ glOrtho (0, w, 0, h, -1, 1);
+
+ if (h > 500) lh = 4, ls = 4;
+ else if (h > 300) lh = 2, ls = 1;
+ else lh = 1, ls = 1;
+
+ if (lh == 1)
+ glDisable (GL_BLEND);
+
+ glLineWidth (lh);
+ glColor4f (0, 0, 0, 0.3);
+
+ glBegin(GL_LINES);
+ for (y = 0; y < h; y += lh + ls)
+ {
+ glVertex3f (0, y, 0);
+ glVertex3f (w, y, 0);
+ }
+ glEnd();
+ }
+ glPopMatrix();
+ }
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+
+ if (!wire)
+ {
+ glDisable (GL_BLEND);
+ glEnable (GL_DEPTH_TEST);
+ }
+}
+
+
+
+static void
+tick_physics (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat s2 = ball_size / 2;
+ GLfloat max = 0.5 - s2;
+ GLfloat min = -max;
+
+ bp->ball_th += bp->ball_dth;
+ while (bp->ball_th > 360) bp->ball_th -= 360;
+ while (bp->ball_th < 0) bp->ball_th += 360;
+
+ bp->ball_dx += bp->ball_ddx;
+ bp->ball_x += bp->ball_dx;
+ if (bp->ball_x < min) bp->ball_x = min, bp->ball_dx = -bp->ball_dx,
+ bp->ball_dth = -bp->ball_dth,
+ bp->ball_dx += (frand(bp->speed/2) - bp->speed);
+ else if (bp->ball_x > max) bp->ball_x = max, bp->ball_dx = -bp->ball_dx,
+ bp->ball_dth = -bp->ball_dth,
+ bp->ball_dx += (frand(bp->speed/2) - bp->speed);
+
+ bp->ball_dy += bp->ball_ddy;
+ bp->ball_y += bp->ball_dy;
+ if (bp->ball_y < min) bp->ball_y = min, bp->ball_dy = -bp->ball_dy;
+ else if (bp->ball_y > max) bp->ball_y = max, bp->ball_dy = -bp->ball_dy;
+
+ bp->ball_dz += bp->ball_ddz;
+ bp->ball_z += bp->ball_dz;
+ if (bp->ball_z < min) bp->ball_z = min, bp->ball_dz = -bp->ball_dz;
+ else if (bp->ball_z > max) bp->ball_z = max, bp->ball_dz = -bp->ball_dz;
+}
+
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_boing (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ h *= 4.0 / 3.0; /* Back in the caveman days we couldn't even afford
+ square pixels! */
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 3/4;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ if (height > width)
+ {
+ GLfloat s = width / (GLfloat) height;
+ glScalef (s, s, s);
+ }
+
+ gluPerspective (8.0, 1/h, 1.0, 10.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt (0.0, 0.0, 8.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+boing_handle_event (ModeInfo *mi, XEvent *event)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_boing (ModeInfo *mi)
+{
+ boing_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ if (tiles < 1) tiles = 1;
+
+ if (smooth_p)
+ {
+ if (meridians < 1) meridians = 1;
+ if (parallels < 1) parallels = 1;
+ }
+ else
+ {
+ if (meridians < 3) meridians = 3;
+ if (parallels < 2) parallels = 2;
+ }
+
+ if (meridians > 1 && meridians & 1) meridians++; /* odd numbers look bad */
+
+
+ if (thickness <= 0) thickness = 0.001;
+ else if (thickness > 1) thickness = 1;
+
+ reshape_boing (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ parse_color (mi, "ballColor1", ball_color1_str, bp->ball_color1);
+ parse_color (mi, "ballColor2", ball_color2_str, bp->ball_color2);
+ parse_color (mi, "gridColor", grid_color_str, bp->grid_color);
+ parse_color (mi, "shadowColor", shadow_str, bp->shadow_color);
+ parse_color (mi, "background", bg_str, bp->bg_color);
+
+ bp->shadow_color[3] = 0.9;
+
+ glClearColor (bp->bg_color[0], bp->bg_color[1], bp->bg_color[2], 1);
+
+ if (!wire)
+ {
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ }
+
+ bp->lightpos[0] = 0.5;
+ bp->lightpos[1] = 0.5;
+ bp->lightpos[2] = -1;
+ bp->lightpos[3] = 0;
+
+ if (lighting_p && !wire)
+ {
+ GLfloat amb[4] = {0, 0, 0, 1};
+ GLfloat dif[4] = {1, 1, 1, 1};
+ GLfloat spc[4] = {1, 1, 1, 1};
+ glEnable(GL_LIGHT0);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ bp->speed = speed / 800.0;
+
+ bp->ball_dth = (spin ? -bp->speed * 7 * 360 : 0);
+
+ bp->ball_x = 0.5 - ((ball_size/2) + frand(1-ball_size));
+ bp->ball_y = 0.2;
+ bp->ball_dx = bp->speed * 6 + frand(bp->speed);
+ bp->ball_ddy = -bp->speed;
+
+ bp->ball_dz = bp->speed * 6 + frand(bp->speed);
+
+ bp->trackball = gltrackball_init (False);
+}
+
+
+ENTRYPOINT void
+draw_boing (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ mi->polygon_count = 0;
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_NORMALIZE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ if (! bp->button_down_p)
+ tick_physics (mi);
+
+ glPushMatrix ();
+
+ {
+ double rot = current_device_rotation();
+ glRotatef(rot, 0, 0, 1);
+/*
+ if ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135))
+ {
+ GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+ glScalef (1/s, s, 1);
+ }
+*/
+ }
+
+ gltrackball_rotate (bp->trackball);
+
+ glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos);
+
+ glDisable (GL_CULL_FACE);
+ glDisable (GL_DEPTH_TEST);
+
+ glEnable (GL_LINE_SMOOTH);
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
+
+ draw_box (mi);
+ draw_shadow (mi);
+
+ glEnable (GL_CULL_FACE);
+ glEnable (GL_DEPTH_TEST);
+
+ draw_ball (mi);
+ if (scanlines_p)
+ draw_scanlines (mi);
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE ("Boing", boing)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/boing.man b/hacks/glx/boing.man
new file mode 100644
index 0000000..1f00d72
--- /dev/null
+++ b/hacks/glx/boing.man
@@ -0,0 +1,105 @@
+.TH XScreenSaver 1 "30-Oct-99" "X Version 11"
+.SH NAME
+boing - draws a bouncing ball like the ancient Amiga demo
+.SH SYNOPSIS
+.B boing
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fIusecs\fP]
+[\-smooth]
+[\-lighting]
+[\-scanlines]
+[\-speed]
+[\-no\-spin]
+[\-angle \fIdegrees\fP]
+[\-size \fIratio\fP]
+[\-parallels \fIn\fP]
+[\-meridians \fIn\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+The \fIboing\fP program draws a bouncing checkered ball on a grid.
+
+This is a clone of the first graphics demo for the Amiga 1000, which
+was written by Dale Luck and RJ Mical during a break at the 1984
+Consumer Electronics Show (or so the legend goes.) The boing ball was
+briefly the official logo of Amiga Inc., until they were bought by
+Commodore later that year.
+
+With no arguments, this program looks a lot like the original Amiga
+demo. With "-smooth -lighting", it looks... less old.
+.SH OPTIONS
+.I boing
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fIusecs\fP
+The delay between frames of the animation, in microseconds: default 15000.
+.TP 8
+.B \-smooth
+Draw a smooth sphere instead of a faceted polyhedron.
+.TP 8
+.B \-lighting
+Do shaded lighting instead of flat colors.
+.TP 8
+.B \-scanlines
+If the window is large enough, draw horizontal lines to simulate the
+scanlines on a low resolution monitor.
+.TP 8
+.B \-speed \fIratio\fP
+Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast.
+.TP 8
+.B \-no\-spin
+Don't rotate the ball.
+.TP 8
+.B \-angle \fIdegrees\fP
+The jaunty angle at which the ball sits. Default 15 degrees.
+.TP 8
+.B \-size \fIratio\fP
+How big the ball is; default 0.5 meaning about half the size of the window.
+.TP 8
+.B \-parallels \fIn\fP
+.B \-meridians \fIn\fP
+The pattern of rectangles on the ball. Default 8x16.
+.TP 8
+.B \-wireframe
+Look crummy.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR bsod (MANSUFFIX),
+.BR pong (MANSUFFIX),
+.BR xscreensaver (1),
+.BR X (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski , 19-Feb-2005.
diff --git a/hacks/glx/bouncingcow.c b/hacks/glx/bouncingcow.c
new file mode 100644
index 0000000..6f9b45d
--- /dev/null
+++ b/hacks/glx/bouncingcow.c
@@ -0,0 +1,519 @@
+/* bouncingcow, Copyright (c) 2003-2018 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Boing, boing, boing. Cow, cow, cow.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 1 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define free_cow 0
+# define release_cow 0
+#define DEF_SPEED "1.0"
+#define DEF_TEXTURE "(none)"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+#include "xlockmore.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "ximage-loader.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+#include "gllist.h"
+
+extern struct gllist
+ *cow_face, *cow_hide, *cow_hoofs, *cow_horns, *cow_tail, *cow_udder;
+
+static struct gllist **all_objs[] = {
+ &cow_face, &cow_hide, &cow_hoofs, &cow_horns, &cow_tail, &cow_udder
+};
+
+#define FACE 0
+#define HIDE 1
+#define HOOFS 2
+#define HORNS 3
+#define TAIL 4
+#define UDDER 5
+
+typedef struct {
+ GLfloat x, y, z;
+ GLfloat ix, iy, iz;
+ GLfloat dx, dy, dz;
+ GLfloat ddx, ddy, ddz;
+ rotator *rot;
+ Bool spinner_p;
+} floater;
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLuint *dlists;
+ GLuint texture;
+
+ int nfloaters;
+ floater *floaters;
+
+} cow_configuration;
+
+static cow_configuration *bps = NULL;
+
+static GLfloat speed;
+static const char *do_texture;
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ {"-texture", ".texture", XrmoptionSepArg, 0 },
+ {"+texture", ".texture", XrmoptionNoArg, "(none)" },
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_String},
+};
+
+ENTRYPOINT ModeSpecOpt cow_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+#define BOTTOM 28.0
+
+static void
+reset_floater (ModeInfo *mi, floater *f)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ f->y = -BOTTOM;
+ f->x = f->ix;
+ f->z = f->iz;
+
+ /* Yes, I know I'm varying the force of gravity instead of varying the
+ launch velocity. That's intentional: empirical studies indicate
+ that it's way, way funnier that way. */
+
+ f->dy = 5.0;
+ f->dx = 0;
+ f->dz = 0;
+
+ /* -0.18 max -0.3 top -0.4 middle -0.6 bottom */
+ f->ddy = speed * (-0.6 + BELLRAND(0.45));
+ f->ddx = 0;
+ f->ddz = 0;
+
+ f->spinner_p = !(random() % (12 * bp->nfloaters));
+
+ if (! (random() % (30 * bp->nfloaters)))
+ {
+ f->dx = BELLRAND(1.8) * RANDSIGN();
+ f->dz = BELLRAND(1.8) * RANDSIGN();
+ }
+}
+
+
+static void
+tick_floater (ModeInfo *mi, floater *f)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (bp->button_down_p) return;
+
+ f->dx += f->ddx;
+ f->dy += f->ddy;
+ f->dz += f->ddz;
+
+ f->x += f->dx * speed;
+ f->y += f->dy * speed;
+ f->z += f->dz * speed;
+
+ if (f->y < -BOTTOM ||
+ f->x < -BOTTOM*8 || f->x > BOTTOM*8 ||
+ f->z < -BOTTOM*8 || f->z > BOTTOM*8)
+ reset_floater (mi, f);
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cow (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+cow_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+/* Textures
+ */
+
+static Bool
+load_texture (ModeInfo *mi, const char *filename)
+{
+ Display *dpy = mi->dpy;
+ Visual *visual = mi->xgwa.visual;
+ char buf[1024];
+ XImage *image;
+
+ if (MI_IS_WIREFRAME(mi))
+ return False;
+
+ if (!filename ||
+ !*filename ||
+ !strcasecmp (filename, "(none)"))
+ {
+ glDisable (GL_TEXTURE_2D);
+ return False;
+ }
+
+ image = file_to_ximage (dpy, visual, filename);
+ if (!image) return False;
+
+ clear_gl_error();
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ image->width, image->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, image->data);
+ sprintf (buf, "texture: %.100s (%dx%d)",
+ filename, image->width, image->height);
+ check_gl_error(buf);
+
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 4);
+ glPixelStorei (GL_UNPACK_ROW_LENGTH, image->width);
+
+ return True;
+}
+
+
+ENTRYPOINT void
+init_cow (ModeInfo *mi)
+{
+ cow_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+ Bool tex_p = False;
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_cow (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0};
+/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/
+ GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ bp->trackball = gltrackball_init (False);
+
+ bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint));
+ for (i = 0; i < countof(all_objs); i++)
+ bp->dlists[i] = glGenLists (1);
+
+ tex_p = load_texture (mi, do_texture);
+ if (tex_p)
+ glBindTexture (GL_TEXTURE_2D, bp->texture);
+
+ for (i = 0; i < countof(all_objs); i++)
+ {
+ GLfloat black[4] = {0, 0, 0, 1};
+ const struct gllist *gll = *all_objs[i];
+
+ glNewList (bp->dlists[i], GL_COMPILE);
+
+ glDisable (GL_TEXTURE_2D);
+
+ if (i == HIDE)
+ {
+ GLfloat color[4] = {0.63, 0.43, 0.36, 1.00};
+ if (tex_p)
+ {
+ /* if we have a texture, make the base color be white. */
+ color[0] = color[1] = color[2] = 1.0;
+
+ glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ glEnable(GL_TEXTURE_2D);
+
+ /* approximately line it up with ../images/earth.png */
+ glMatrixMode (GL_TEXTURE);
+ glLoadIdentity();
+ glTranslatef (0.45, 0.58, 0);
+ glScalef (0.08, 0.16, 1);
+ glRotatef (-5, 0, 0, 1);
+ glMatrixMode (GL_MODELVIEW);
+ }
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128);
+ }
+ else if (i == TAIL)
+ {
+ GLfloat color[4] = {0.63, 0.43, 0.36, 1.00};
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128);
+ }
+ else if (i == UDDER)
+ {
+ GLfloat color[4] = {1.00, 0.53, 0.53, 1.00};
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, black);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 128);
+ }
+ else if (i == HOOFS || i == HORNS)
+ {
+ GLfloat color[4] = {0.20, 0.20, 0.20, 1.00};
+ GLfloat spec[4] = {0.30, 0.30, 0.30, 1.00};
+ GLfloat shiny = 8.0;
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny);
+ }
+ else if (i == FACE)
+ {
+ GLfloat color[4] = {0.10, 0.10, 0.10, 1.00};
+ GLfloat spec[4] = {0.10, 0.10, 0.10, 1.00};
+ GLfloat shiny = 8.0;
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny);
+ }
+ else
+ {
+ GLfloat color[4] = {1.00, 1.00, 1.00, 1.00};
+ GLfloat spec[4] = {1.00, 1.00, 1.00, 1.00};
+ GLfloat shiny = 128.0;
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shiny);
+ }
+
+ renderList (gll, wire);
+
+ glEndList ();
+ }
+
+ bp->nfloaters = MI_COUNT (mi);
+ bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater));
+
+ for (i = 0; i < bp->nfloaters; i++)
+ {
+ floater *f = &bp->floaters[i];
+ f->rot = make_rotator (10.0, 0, 0,
+ 4, 0.05 * speed,
+ True);
+ if (bp->nfloaters == 2)
+ {
+ f->x = (i ? 6 : -6);
+ }
+ else if (i != 0)
+ {
+ double th = (i - 1) * M_PI*2 / (bp->nfloaters-1);
+ double r = 10;
+ f->x = r * cos(th);
+ f->z = r * sin(th);
+ }
+
+ f->ix = f->x;
+ f->iy = f->y;
+ f->iz = f->z;
+ reset_floater (mi, f);
+ }
+}
+
+
+static void
+draw_floater (ModeInfo *mi, floater *f)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat n;
+ double x, y, z;
+
+ get_position (f->rot, &x, &y, &z, !bp->button_down_p);
+
+ glPushMatrix();
+ glTranslatef (f->x, f->y, f->z);
+
+ gltrackball_rotate (bp->trackball);
+
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ if (f->spinner_p)
+ {
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ n = 1.5;
+ if (bp->nfloaters > 99) n *= 0.05;
+ else if (bp->nfloaters > 25) n *= 0.18;
+ else if (bp->nfloaters > 9) n *= 0.3;
+ else if (bp->nfloaters > 1) n *= 0.7;
+ glScalef(n, n, n);
+
+ glCallList (bp->dlists[FACE]);
+ mi->polygon_count += (*all_objs[FACE])->points / 3;
+
+ glCallList (bp->dlists[HIDE]);
+ mi->polygon_count += (*all_objs[HIDE])->points / 3;
+
+ glCallList (bp->dlists[HOOFS]);
+ mi->polygon_count += (*all_objs[HOOFS])->points / 3;
+
+ glCallList (bp->dlists[HORNS]);
+ mi->polygon_count += (*all_objs[HORNS])->points / 3;
+
+ glCallList (bp->dlists[TAIL]);
+ mi->polygon_count += (*all_objs[TAIL])->points / 3;
+
+ glCallList (bp->dlists[UDDER]);
+ mi->polygon_count += (*all_objs[UDDER])->points / 3;
+
+ glPopMatrix();
+}
+
+
+
+ENTRYPOINT void
+draw_cow (ModeInfo *mi)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ glRotatef(o, 0, 0, 1);
+ }
+# endif
+
+ glScalef (0.5, 0.5, 0.5);
+
+ mi->polygon_count = 0;
+
+# if 0
+ {
+ floater F;
+ F.x = F.y = F.z = 0;
+ F.dx = F.dy = F.dz = 0;
+ F.ddx = F.ddy = F.ddz = 0;
+ F.rot = make_rotator (0, 0, 0, 1, 0, False);
+ glScalef(2,2,2);
+ draw_floater (mi, &F);
+ }
+# else
+ for (i = 0; i < bp->nfloaters; i++)
+ {
+ /* "Don't kid yourself, Jimmy. If a cow ever got the chance,
+ he'd eat you and everyone you care about!"
+ -- Troy McClure in "Meat and You: Partners in Freedom"
+ */
+ floater *f = &bp->floaters[i];
+ draw_floater (mi, f);
+ tick_floater (mi, f);
+ }
+# endif
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("BouncingCow", bouncingcow, cow)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/bouncingcow.man b/hacks/glx/bouncingcow.man
new file mode 100644
index 0000000..516d1de
--- /dev/null
+++ b/hacks/glx/bouncingcow.man
@@ -0,0 +1,73 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+bouncingcow - a happy cow on a trampoline in 3D. Moo.
+.SH SYNOPSIS
+.B bouncingcow
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-texture \fIfilename\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+It's very silly.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+How fast the cow bounces. Larger for faster. Default: 1.0.
+.TP 8
+.B \-count \fInumber\fP
+How many cows! Default 1.
+.TP 8
+.B \-texture \fIfilename\fP
+An image file to paint on the cow's hide.
+
+Note that on most systems, GL textures must have dimensions that are a
+power of two.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Jamie Zawinski. Moo. Permission to use, copy,
+modify, distribute, and sell this software and its documentation for
+any purpose is hereby granted without fee, provided that the above
+copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation.
+Moo. No representations are made about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty. Moo.
+.SH AUTHOR
+Jamie Zawinski
+
diff --git a/hacks/glx/boxed.c b/hacks/glx/boxed.c
new file mode 100644
index 0000000..136d468
--- /dev/null
+++ b/hacks/glx/boxed.c
@@ -0,0 +1,1370 @@
+/* boxed --- 3D bouncing balls that explode */
+
+#if 0
+static const char sccsid[] = "@(#)boxed.c 0.9 01/09/26 xlockmore";
+#endif
+
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Revision History:
+ *
+ * 2001: Written by Sander van Grieken
+ * as an OpenGL screensaver for the xscreensaver package.
+ * Lots of hardcoded values still in place. Also, there are some
+ * copy/paste leftovers from the gears hack. opts don't work.
+ *
+ * 2005: opts work. added options -balls, -ballsize, -explosion
+ *
+ * 2006: opts work. added option -decay
+ *
+ * 2008: opts work. added option -momentum
+ *
+ */
+
+#include "boxed.h"
+
+/*
+**----------------------------------------------------------------------------
+** Defines
+**----------------------------------------------------------------------------
+*/
+
+#ifdef STANDALONE
+# define DEFAULTS "*delay: 15000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n"
+
+# define release_boxed 0
+# define boxed_handle_event xlockmore_no_events
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef USE_GL
+
+# define DEF_SPEED "0.5"
+# define DEF_BALLS "20"
+# define DEF_BALLSIZE "3.0"
+# define DEF_EXPLOSION "15.0"
+# define DEF_DECAY "0.07"
+# define DEF_MOMENTUM "0.6"
+
+#undef countof
+#define countof(x) (int)(sizeof((x))/sizeof((*x)))
+#undef rnd
+#define rnd() (frand(1.0))
+
+static GLfloat speed; /* jwz -- overall speed factor applied to all motion */
+static int cfg_balls;
+static GLfloat cfg_ballsize;
+static GLfloat cfg_explosion;
+static GLfloat cfg_decay;
+static GLfloat cfg_momentum;
+
+
+static XrmOptionDescRec opts[] = {
+ {"-speed", ".boxed.speed", XrmoptionSepArg, 0},
+ {"-balls", ".boxed.balls", XrmoptionSepArg, 0},
+ {"-ballsize", ".boxed.ballsize", XrmoptionSepArg, 0},
+ {"-explosion", ".boxed.explosion", XrmoptionSepArg, 0},
+ {"-decay", ".boxed.decay", XrmoptionSepArg, 0},
+ {"-momentum", ".boxed.momentum", XrmoptionSepArg, 0},
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&cfg_balls, "balls", "Balls", DEF_BALLS, t_Int},
+ {&cfg_ballsize, "ballsize", "Ball Size", DEF_BALLSIZE, t_Float},
+ {&cfg_explosion, "explosion", "Explosion", DEF_EXPLOSION, t_Float},
+ {&cfg_decay, "decay", "Explosion Decay", DEF_DECAY, t_Float},
+ {&cfg_momentum, "momentum", "Explosion Momentum", DEF_MOMENTUM, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt boxed_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+
+ModStruct boxed_description = {
+ "boxed", "init_boxed", "draw_boxed", NULL,
+ "draw_boxed", "init_boxed", "free_boxed", &boxed_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Shows GL's boxed balls", 0, NULL};
+
+#endif
+
+#define BOOL int
+#define TRUE 1
+#define FALSE 0
+
+/* camera */
+#define CAM_HEIGHT 80.0f
+#define CAMDISTANCE_MIN 35.0
+#define CAMDISTANCE_MAX 150.0
+#define CAMDISTANCE_SPEED 1.5
+#define LOOKAT_R 30.0
+
+/* rendering the sphere */
+#define MESH_SIZE 10
+#define SPHERE_VERTICES (2+MESH_SIZE*MESH_SIZE*2)
+#define SPHERE_INDICES ((MESH_SIZE*4 + MESH_SIZE*4*(MESH_SIZE-1))*3)
+
+/*
+**-----------------------------------------------------------------------------
+** Typedefs
+**-----------------------------------------------------------------------------
+*/
+
+typedef struct {
+ GLfloat x;
+ GLfloat y;
+ GLfloat z;
+} vectorf;
+
+typedef struct {
+ vectorf loc;
+ vectorf dir;
+ vectorf color;
+ float radius;
+ BOOL bounced;
+ int offside;
+ BOOL justcreated;
+} ball;
+
+typedef struct {
+ int num_balls;
+ float ballsize;
+ float explosion;
+ ball *balls;
+} ballman;
+
+typedef struct {
+ vectorf loc;
+ vectorf dir;
+ BOOL far;
+ int gone;
+} tri;
+
+typedef struct {
+ int num_tri;
+ int lifetime;
+ float scalefac;
+ float explosion;
+ float decay;
+ float momentum;
+ vectorf color;
+ tri *tris;
+ GLint *indices;
+ vectorf *normals;
+ vectorf *vertices;
+} triman;
+
+typedef struct {
+ int numballs;
+ float ballsize;
+ float explosion;
+ float decay;
+ float momentum;
+ BOOL textures;
+ BOOL transparent;
+ float camspeed;
+} boxed_config;
+
+
+typedef struct {
+ float cam_x_speed, cam_z_speed, cam_y_speed;
+ boxed_config config;
+ float tic;
+ float camtic;
+ vectorf spherev[SPHERE_VERTICES];
+ GLint spherei[SPHERE_INDICES];
+ ballman bman;
+ triman *tman;
+ GLXContext *glx_context;
+ GLuint listobjects;
+ GLuint gllists[3];
+ int list_polys[3];
+ Window window;
+ BOOL stop;
+ char *tex1;
+} boxedstruct;
+
+#define GLL_PATTERN 0
+#define GLL_BALL 1
+#define GLL_BOX 2
+
+/*
+**----------------------------------------------------------------------------
+** Local Variables
+**----------------------------------------------------------------------------
+*/
+
+static boxedstruct *boxed = NULL;
+
+
+/*
+**----------------------------------------------------------------------------
+** Functions
+**----------------------------------------------------------------------------
+*/
+
+/*
+ * Add 2 vectors
+ */
+static inline void addvectors(vectorf *dest, vectorf *s1, vectorf *s2)
+{
+ dest->x = s1->x + s2->x;
+ dest->y = s1->y + s2->y;
+ dest->z = s1->z + s2->z;
+}
+
+/*
+ * Sub 2 vectors
+ */
+static inline void subvectors(vectorf *dest, vectorf* s1, vectorf *s2)
+{
+ dest->x = s1->x - s2->x;
+ dest->y = s1->y - s2->y;
+ dest->z = s1->z - s2->z;
+}
+
+/*
+ * Multiply vector with scalar (scale vector)
+ */
+static inline void scalevector(vectorf *dest, vectorf *source, GLfloat sc)
+{
+ dest->x = source->x * sc;
+ dest->y = source->y * sc;
+ dest->z = source->z * sc;
+}
+
+/*
+ * Copy vector
+ */
+static inline void copyvector(vectorf *dest, vectorf* source)
+{
+ dest->x = source->x;
+ dest->y = source->y;
+ dest->z = source->z;
+}
+
+
+static inline GLfloat
+dotproduct(vectorf * v1, vectorf * v2)
+{
+ return v1->x * v2->x + v1->y * v2->y + v1->z * v2->z;
+}
+
+static inline GLfloat
+squaremagnitude(vectorf * v)
+{
+ return v->x * v->x + v->y * v->y + v->z * v->z;
+}
+
+static inline GLfloat
+squaremagnitudehorz(vectorf * v)
+{
+ return v->x * v->x + v->z * v->z;
+}
+
+
+
+/*
+ * Generate the Sphere data
+ *
+ * Input:
+ */
+
+static void generatesphere(boxedstruct *gp)
+{
+ float dj = M_PI/(MESH_SIZE+1.0f);
+ float di = M_PI/MESH_SIZE;
+ int v; /* vertex offset */
+ int ind; /* indices offset */
+ int i,j,si;
+ GLfloat r_y_plane, h_y_plane;
+ vectorf *spherev;
+ GLint *spherei;
+
+ /*
+ * generate the sphere data
+ * vertices 0 and 1 are the north and south poles
+ */
+
+ spherei = gp->spherei;
+ spherev = gp->spherev;
+
+ spherev[0].x = 0.0f; spherev[0].y =1.0f; spherev[0].z = 0.0f;
+ spherev[1].x = 0.0f; spherev[1].y =-1.0f; spherev[1].z = 0.0f;
+
+ for (j=0; jloc.x = 5-10*rnd();
+ newball->loc.y = 35+20*rnd();
+ newball->loc.z = 5-10*rnd();
+ newball->dir.x = (0.5f-rnd()) * speed;
+ newball->dir.y = 0.0;
+ newball->dir.z = (0.5-rnd()) * speed;
+ newball->offside = 0;
+ newball->bounced = FALSE;
+ newball->radius = cfg_ballsize;
+ while (r+g+b < 1.8f ) {
+ newball->color.x = r=rnd();
+ newball->color.y = g=rnd();
+ newball->color.z = b=rnd();
+ }
+ newball->justcreated = TRUE;
+}
+
+/* Update position of each ball */
+
+static void updateballs(ballman *bman)
+{
+ register int b,j;
+ vectorf dvect,richting,relspeed,influence;
+ GLfloat squaredist;
+
+ for (b=0;bnum_balls;b++) {
+
+ GLfloat gravity = 0.30f * speed;
+
+ /* apply gravity */
+ bman->balls[b].dir.y -= gravity;
+ /* apply movement */
+ addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir);
+ /* boundary check */
+ if (bman->balls[b].loc.y < bman->balls[b].radius) { /* ball onder bodem? (bodem @ y=0) */
+ if ((bman->balls[b].loc.x < -95.0) ||
+ (bman->balls[b].loc.x > 95.0) ||
+ (bman->balls[b].loc.z < -95.0) ||
+ (bman->balls[b].loc.z > 95.0)) {
+ if (bman->balls[b].loc.y < -2000.0)
+ createball(&bman->balls[b]);
+ } else {
+ bman->balls[b].loc.y = bman->balls[b].radius + (bman->balls[b].radius - bman->balls[b].loc.y);
+ bman->balls[b].dir.y = -bman->balls[b].dir.y;
+ if (bman->balls[b].offside) {
+ bman->balls[b].bounced = TRUE; /* temporary disable painting ball */
+ scalevector(&bman->balls[b].dir,&bman->balls[b].dir,0.80f);
+ if (squaremagnitude(&bman->balls[b].dir) < 0.08f) {
+ createball(&bman->balls[b]);
+ }
+ if (squaremagnitudehorz(&bman->balls[b].dir) < 0.005f) {
+ createball(&bman->balls[b]);
+ }
+ }
+ }
+
+ }
+ if (!bman->balls[b].offside) {
+ if (bman->balls[b].loc.x - bman->balls[b].radius < -20.0f) { /* x ondergrens */
+ if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1;
+ else {
+ bman->balls[b].dir.x = -bman->balls[b].dir.x;
+ bman->balls[b].loc.x = -20.0f + bman->balls[b].radius;
+ }
+ }
+ if (bman->balls[b].loc.x + bman->balls[b].radius > 20.0f) { /* x bovengrens */
+ if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1;
+ else {
+ bman->balls[b].dir.x = -bman->balls[b].dir.x;
+ bman->balls[b].loc.x = 20.0f - bman->balls[b].radius;
+ }
+ }
+ if (bman->balls[b].loc.z - bman->balls[b].radius < -20.0f) { /* z ondergrens */
+ if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1;
+ else {
+ bman->balls[b].dir.z = -bman->balls[b].dir.z;
+ bman->balls[b].loc.z = -20.0f + bman->balls[b].radius;
+ }
+ }
+ if (bman->balls[b].loc.z + bman->balls[b].radius > 20.0f) { /* z bovengrens */
+ if (bman->balls[b].loc.y > 41+bman->balls[b].radius) bman->balls[b].offside=1;
+ else {
+ bman->balls[b].dir.z = -bman->balls[b].dir.z;
+ bman->balls[b].loc.z = 20.0f - bman->balls[b].radius;
+ }
+ }
+ } /* end if !offside */
+
+ /* check voor stuiteren */
+ for (j=b+1;jnum_balls;j++) {
+ squaredist = (bman->balls[b].radius * bman->balls[b].radius) + (bman->balls[j].radius * bman->balls[j].radius);
+ subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc);
+ if ( squaremagnitude(&dvect) < squaredist ) { /* balls b and j touch */
+ subvectors(&richting,&bman->balls[j].loc,&bman->balls[b].loc);
+ subvectors(&relspeed,&bman->balls[b].dir,&bman->balls[j].dir);
+ /* calc mutual influence direction and magnitude */
+ scalevector(&influence,&richting,(dotproduct(&richting,&relspeed)/squaremagnitude(&richting)));
+
+ subvectors(&bman->balls[b].dir,&bman->balls[b].dir,&influence);
+ addvectors(&bman->balls[j].dir,&bman->balls[j].dir,&influence);
+ addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir);
+ addvectors(&bman->balls[j].loc,&bman->balls[j].loc,&bman->balls[j].dir);
+
+ subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc);
+ while (squaremagnitude(&dvect) < squaredist) {
+ addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir);
+ addvectors(&bman->balls[j].loc,&bman->balls[j].loc,&bman->balls[j].dir);
+ subvectors(&dvect,&bman->balls[b].loc,&bman->balls[j].loc);
+ }
+ }
+ } /* end for j */
+ } /* end for b */
+}
+
+
+/*
+* explode ball into triangles
+*/
+
+static void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_num, ball *b)
+{
+ int pos;
+ float explosion;
+ float momentum;
+ float scale;
+ register int i;
+ vectorf avgdir,dvect,mvect;
+
+ tman->scalefac = b->radius;
+ copyvector(&tman->color,&b->color);
+ explosion = 1.0f + tman->explosion * 2.0 * rnd();
+ momentum = tman->momentum;
+
+ tman->num_tri = ind_num/3;
+
+ /* reserveer geheugen voor de poly's in een bal */
+
+ tman->tris = (tri *)malloc(tman->num_tri * sizeof(tri));
+ tman->vertices = (vectorf *)malloc(ind_num * sizeof(vectorf));
+ tman->normals = (vectorf *)malloc(ind_num/3 * sizeof(vectorf));
+
+ for (i=0; i<(tman->num_tri); i++) {
+ tman->tris[i].far = FALSE;
+ tman->tris[i].gone = 0;
+ pos = i * 3;
+ /* kopieer elke poly apart naar een tri structure */
+ copyvector(&tman->vertices[pos+0],&spherev[spherei[pos+0]]);
+ copyvector(&tman->vertices[pos+1],&spherev[spherei[pos+1]]);
+ copyvector(&tman->vertices[pos+2],&spherev[spherei[pos+2]]);
+ /* Calculate average direction of shrapnel */
+ addvectors(&avgdir,&tman->vertices[pos+0],&tman->vertices[pos+1]);
+ addvectors(&avgdir,&avgdir,&tman->vertices[pos+2]);
+ scalevector(&avgdir,&avgdir,0.33333);
+
+ /* should normalize first, NYI */
+ copyvector(&tman->normals[i],&avgdir);
+
+ /* copy de lokatie */
+ addvectors(&tman->tris[i].loc,&b->loc,&avgdir);
+ /* en translate alle triangles terug naar hun eigen oorsprong */
+ tman->vertices[pos+0].x -= avgdir.x;
+ tman->vertices[pos+0].y -= avgdir.y;
+ tman->vertices[pos+0].z -= avgdir.z;
+ tman->vertices[pos+1].x -= avgdir.x;
+ tman->vertices[pos+1].y -= avgdir.y;
+ tman->vertices[pos+1].z -= avgdir.z;
+ tman->vertices[pos+2].x -= avgdir.x;
+ tman->vertices[pos+2].y -= avgdir.y;
+ tman->vertices[pos+2].z -= avgdir.z;
+ /* alwaar opschaling plaatsvindt */
+ scale = b->radius * 2;
+ scalevector(&tman->vertices[pos+0],&tman->vertices[pos+0],scale);
+ scalevector(&tman->vertices[pos+1],&tman->vertices[pos+1],scale);
+ scalevector(&tman->vertices[pos+2],&tman->vertices[pos+2],scale);
+
+ tman->vertices[pos+0].x += avgdir.x;
+ tman->vertices[pos+0].y += avgdir.y;
+ tman->vertices[pos+0].z += avgdir.z;
+ tman->vertices[pos+1].x += avgdir.x;
+ tman->vertices[pos+1].y += avgdir.y;
+ tman->vertices[pos+1].z += avgdir.z;
+ tman->vertices[pos+2].x += avgdir.x;
+ tman->vertices[pos+2].y += avgdir.y;
+ tman->vertices[pos+2].z += avgdir.z;
+
+ /* bereken nieuwe richting */
+ scalevector(&tman->tris[i].dir,&avgdir,explosion);
+ dvect.x = (0.1f - 0.2f*rnd());
+ dvect.y = (0.15f - 0.3f*rnd());
+ dvect.z = (0.1f - 0.2f*rnd());
+ addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&dvect);
+
+ /* add ball's momentum to each piece of the exploded ball */
+ mvect.x = b->dir.x * momentum;
+ mvect.y = 0;
+ mvect.z = b->dir.z * momentum;
+ addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&mvect);
+ }
+}
+
+
+/*
+* update position of each tri
+*/
+
+static void updatetris(triman *t)
+{
+ int b;
+ GLfloat xd,zd;
+
+ for (b=0;bnum_tri;b++) {
+ /* the exploded triangles disappear over time */
+ if (rnd() < t->decay) {
+ if (t->tris[b].gone == 0)
+ t->tris[b].gone = 1;
+ }
+ /* apply gravity */
+ t->tris[b].dir.y -= (0.1f * speed);
+ /* apply movement */
+ addvectors(&t->tris[b].loc,&t->tris[b].loc,&t->tris[b].dir);
+ /* boundary check */
+ if (t->tris[b].far) continue;
+ if (t->tris[b].loc.y < 0) { /* onder bodem ? */
+ if ((t->tris[b].loc.x > -95.0f) &
+ (t->tris[b].loc.x < 95.0f) &
+ (t->tris[b].loc.z > -95.0f) &
+ (t->tris[b].loc.z < 95.0f)) { /* in veld */
+ t->tris[b].dir.y = -(t->tris[b].dir.y);
+ t->tris[b].loc.y = -t->tris[b].loc.y;
+ scalevector(&t->tris[b].dir,&t->tris[b].dir,0.80f); /* dampening */
+ }
+ else {
+ t->tris[b].far = TRUE;
+ continue;
+ }
+ }
+
+ if ((t->tris[b].loc.x > -21.0f) &
+ (t->tris[b].loc.x < 21.0f) &
+ (t->tris[b].loc.z > -21.0f) &
+ (t->tris[b].loc.z < 21.0f)) { /* in box? */
+
+ xd = zd = 999.0f; /* big */
+ if ((t->tris[b].loc.x > -21.0f) &
+ (t->tris[b].loc.x < 0)) {
+ xd = t->tris[b].loc.x + 21.0f;
+ }
+ if ((t->tris[b].loc.x < 21.0f) &
+ (t->tris[b].loc.x > 0)) {
+ xd = 21.0f - t->tris[b].loc.x;
+ }
+ if ((t->tris[b].loc.z > -21.0f) &
+ (t->tris[b].loc.z < 0)) {
+ zd = t->tris[b].loc.z + 21.0f;
+ }
+ if ((t->tris[b].loc.z < 21.0f) &
+ (t->tris[b].loc.z > 0)) {
+ zd = 21.0f - t->tris[b].loc.z;
+ }
+ if (xd < zd) {
+ /* bounce x */
+ if (t->tris[b].dir.x < 0)
+ t->tris[b].loc.x += (21.0f - t->tris[b].loc.x);
+ else
+ t->tris[b].loc.x += (-21.0f - t->tris[b].loc.x);
+ t->tris[b].dir.x = -t->tris[b].dir.x;
+ } else {
+ /* bounce z */
+ if (t->tris[b].dir.z < 0)
+ t->tris[b].loc.z += (21.0f - t->tris[b].loc.z);
+ else
+ t->tris[b].loc.z += (-21.0f - t->tris[b].loc.z);
+ t->tris[b].dir.z = -t->tris[b].dir.z;
+ }
+
+ }
+ } /* end for b */
+}
+
+
+/*
+ * free memory allocated by a tri manager
+ */
+static void freetris(triman *t)
+{
+ if (!t) return;
+ if (t->tris) free(t->tris);
+ if (t->vertices) free(t->vertices);
+ if (t->normals) free(t->normals);
+ t->tris = NULL;
+ t->vertices = NULL;
+ t->normals = NULL;
+ t->num_tri = 0;
+ t->lifetime = 0;
+}
+
+
+/*
+ *load defaults in config structure
+ */
+static void setdefaultconfig(boxed_config *config)
+{
+ cfg_balls = MAX(3,MIN(40,cfg_balls));
+ cfg_ballsize = MAX(1.0f,MIN(5.0f,cfg_ballsize));
+ cfg_explosion = MAX(0.0f,MIN(50.0f,cfg_explosion));
+ cfg_decay = MAX(0.02f,MIN(0.90f,cfg_decay));
+ cfg_momentum = MAX(0.0f,MIN(1.0f,cfg_momentum));
+
+ config->numballs = cfg_balls;
+ config->textures = TRUE;
+ config->transparent = FALSE;
+ config->explosion = cfg_explosion;
+ config->decay = cfg_decay;
+ config->momentum = cfg_momentum;
+ config->ballsize = cfg_ballsize;
+ config->camspeed = 35.0f;
+}
+
+
+/*
+ * draw bottom
+ */
+static int drawfilledbox(boxedstruct *boxed, int wire)
+{
+ /* draws texture filled box,
+ top is drawn using the entire texture,
+ the sides are drawn using the edge of the texture
+ */
+ int polys = 0;
+
+ /* front */
+ glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f(0,1);
+ glVertex3f(-1.0,1.0,1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(1.0,1.0,1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(1.0,-1.0,1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(-1.0,-1.0,1.0);
+ polys++;
+ /* rear */
+ glTexCoord2f(0,1);
+ glVertex3f(1.0,1.0,-1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(-1.0,1.0,-1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(-1.0,-1.0,-1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(1.0,-1.0,-1.0);
+ polys++;
+ /* left */
+ glTexCoord2f(1,1);
+ glVertex3f(-1.0,1.0,1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(-1.0,-1.0,1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(-1.0,-1.0,-1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(-1.0,1.0,-1.0);
+ polys++;
+ /* right */
+ glTexCoord2f(0,1);
+ glVertex3f(1.0,1.0,1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(1.0,1.0,-1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(1.0,-1.0,-1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(1.0,-1.0,1.0);
+ polys++;
+ /* top */
+ glTexCoord2f(0.0,0.0);
+ glVertex3f(-1.0,1.0,1.0);
+ glTexCoord2f(0.0,1.0);
+ glVertex3f(-1.0,1.0,-1.0);
+ glTexCoord2f(1.0,1.0);
+ glVertex3f(1.0,1.0,-1.0);
+ glTexCoord2f(1.0,0.0);
+ glVertex3f(1.0,1.0,1.0);
+ polys++;
+ /* bottom */
+ glTexCoord2f(0,0);
+ glVertex3f(-1.0,-1.0,1.0);
+ glTexCoord2f(0,1);
+ glVertex3f(-1.0,-1.0,-1.0);
+ glTexCoord2f(1,1);
+ glVertex3f(1.0,-1.0,-1.0);
+ glTexCoord2f(1,0);
+ glVertex3f(1.0,-1.0,1.0);
+ polys++;
+ glEnd();
+
+ return polys;
+}
+
+
+/*
+ * Draw a box made of lines
+ */
+static int drawbox(boxedstruct *boxed)
+{
+ int polys = 0;
+ /* top */
+ glBegin(GL_LINE_STRIP);
+ glVertex3f(-1.0,1.0,1.0);
+ glVertex3f(-1.0,1.0,-1.0); polys++;
+ glVertex3f(1.0,1.0,-1.0); polys++;
+ glVertex3f(1.0,1.0,1.0); polys++;
+ glVertex3f(-1.0,1.0,1.0); polys++;
+ glEnd();
+ /* bottom */
+ glBegin(GL_LINE_STRIP);
+ glVertex3f(-1.0,-1.0,1.0);
+ glVertex3f(1.0,-1.0,1.0); polys++;
+ glVertex3f(1.0,-1.0,-1.0); polys++;
+ glVertex3f(-1.0,-1.0,-1.0); polys++;
+ glVertex3f(-1.0,-1.0,1.0); polys++;
+ glEnd();
+ /* connect top & bottom */
+ glBegin(GL_LINES);
+ glVertex3f(-1.0,1.0,1.0);
+ glVertex3f(-1.0,-1.0,1.0); polys++;
+ glVertex3f(1.0,1.0,1.0);
+ glVertex3f(1.0,-1.0,1.0); polys++;
+ glVertex3f(1.0,1.0,-1.0);
+ glVertex3f(1.0,-1.0,-1.0); polys++;
+ glVertex3f(-1.0,1.0,-1.0);
+ glVertex3f(-1.0,-1.0,-1.0); polys++;
+ glEnd();
+ return polys;
+}
+
+
+
+/*
+ * Draw ball
+ */
+static int drawball(boxedstruct *gp, ball *b, int wire)
+{
+ int polys = 0;
+ int i,pos,cnt;
+ GLint *spherei = gp->spherei;
+ vectorf *spherev = gp->spherev;
+ GLfloat col[3];
+
+ glPushMatrix();
+
+ glTranslatef(b->loc.x,b->loc.y,b->loc.z);
+ glScalef(b->radius,b->radius,b->radius);
+ glColor3f(b->color.x,b->color.y,b->color.z);
+ col[0] = b->color.x;
+ col[1] = b->color.y;
+ col[2] = b->color.z;
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, col);
+ col[0] *= 0.5;
+ col[1] *= 0.5;
+ col[2] *= 0.5;
+ glMaterialfv(GL_FRONT, GL_EMISSION,col);
+
+ if (!gp->gllists[GLL_BALL]) {
+ glNewList(gp->listobjects + GLL_BALL,GL_COMPILE);
+ glBegin(wire ? GL_LINES : GL_TRIANGLES);
+ cnt = SPHERE_INDICES/3;
+ for (i=0; ilist_polys[GLL_BALL]++;
+ glVertex3f(spherev[spherei[pos+1]].x,spherev[spherei[pos+1]].y,spherev[spherei[pos+1]].z);
+ if (wire)
+ glVertex3f(spherev[spherei[pos+1]].x,spherev[spherei[pos+1]].y,spherev[spherei[pos+1]].z);
+ glNormal3f(spherev[spherei[pos+2]].x,spherev[spherei[pos+2]].y,spherev[spherei[pos+2]].z);
+ glVertex3f(spherev[spherei[pos+2]].x,spherev[spherei[pos+2]].y,spherev[spherei[pos+2]].z);
+ gp->list_polys[GLL_BALL]++;
+ }
+ glEnd();
+ glEndList();
+ gp->gllists[GLL_BALL] = 1;
+ } else {
+ glCallList(gp->listobjects + GLL_BALL);
+ polys += gp->list_polys[GLL_BALL];
+ }
+
+ glPopMatrix();
+ return polys;
+}
+
+
+/*
+ * Draw a single triangle
+ */
+static void drawtri(triman *t, int wire, int i)
+{
+ const vectorf *spherev = t->vertices + i*3;
+ const vectorf *loc = &t->tris[i].loc;
+
+ glNormal3f(t->normals[i].x,t->normals[i].y,t->normals[i].z);
+ glVertex3f(spherev[0].x+loc->x,spherev[0].y+loc->y,spherev[0].z+loc->z);
+ glVertex3f(spherev[1].x+loc->x,spherev[1].y+loc->y,spherev[1].z+loc->z);
+ if (wire)
+ glVertex3f(spherev[1].x+loc->x,spherev[1].y+loc->y,spherev[1].z+loc->z);
+ glVertex3f(spherev[2].x+loc->x,spherev[2].y+loc->y,spherev[2].z+loc->z);
+ if (wire) {
+ glVertex3f(spherev[2].x+loc->x,spherev[2].y+loc->y,spherev[2].z+loc->z);
+ glVertex3f(spherev[0].x+loc->x,spherev[0].y+loc->y,spherev[0].z+loc->z);
+ }
+}
+
+
+/*
+ * Draw all triangles in triman
+ */
+static int drawtriman(triman *t, int wire)
+{
+ int polys = 0;
+ int i;
+ GLfloat col[3];
+
+ glPushMatrix();
+ glColor3f(t->color.x,t->color.y,t->color.z);
+ col[0] = t->color.x;
+ col[1] = t->color.y;
+ col[2] = t->color.z;
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, col);
+ col[0] *= 0.3;
+ col[1] *= 0.3;
+ col[2] *= 0.3;
+ glMaterialfv(GL_FRONT, GL_EMISSION,col);
+ glBegin(wire ? GL_LINES : GL_TRIANGLES);
+
+ for (i=0; inum_tri; i++) {
+ if (t->tris[i].gone > 3) { continue; }
+ if (t->tris[i].gone > 0) {
+ glColor3f(t->color.x,t->color.y,t->color.z);
+ col[0] = 1.0f;
+ col[1] = 1.0f;
+ col[2] = 1.0f;
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, col);
+ col[0] *= 0.8;
+ col[1] *= 0.8;
+ col[2] *= 0.8;
+ glMaterialfv(GL_FRONT, GL_EMISSION,col);
+
+ drawtri(t, wire, i);
+ polys++;
+
+ glColor3f(t->color.x,t->color.y,t->color.z);
+ col[0] = t->color.x;
+ col[1] = t->color.y;
+ col[2] = t->color.z;
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, col);
+ col[0] *= 0.3;
+ col[1] *= 0.3;
+ col[2] *= 0.3;
+ glMaterialfv(GL_FRONT, GL_EMISSION,col);
+
+ t->tris[i].gone++;
+ continue;
+ }
+
+ drawtri(t, wire, i);
+ polys++;
+ }
+ glEnd();
+ glPopMatrix();
+ return polys;
+}
+
+/*
+ * draw floor pattern
+ */
+static int drawpattern(boxedstruct *gp)
+{
+ int polys = 0;
+ if (!gp->gllists[GLL_PATTERN]) {
+ glNewList(gp->listobjects + GLL_PATTERN, GL_COMPILE);
+
+ glBegin(GL_LINE_STRIP);
+ glVertex3f(-25.0f, 0.0f, 35.0f);
+ glVertex3f(-15.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-5.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(5.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(15.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(25.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(35.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(35.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(25.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(25.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(35.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(35.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(25.0f, 0.0f, -35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(15.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(5.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-5.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-15.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-25.0f, 0.0f,-35.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-35.0f, 0.0f, -25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-35.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-25.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-25.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-35.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-35.0f, 0.0f, 25.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-25.0f, 0.0f, 35.0f); gp->list_polys[GLL_PATTERN]++;
+ glEnd();
+
+ glBegin(GL_LINE_STRIP);
+ glVertex3f(-5.0f, 0.0f, 15.0f);
+ glVertex3f(5.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(15.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(15.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(5.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-5.0f, 0.0f, -15.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-15.0f, 0.0f, -5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-15.0f, 0.0f, 5.0f); gp->list_polys[GLL_PATTERN]++;
+ glVertex3f(-5.0f, 0.0f, 15.0f); gp->list_polys[GLL_PATTERN]++;
+ glEnd();
+
+ glEndList();
+ gp->gllists[GLL_PATTERN] = 1;
+ } else {
+ glCallList(gp->listobjects + GLL_PATTERN);
+ polys += gp->list_polys[GLL_PATTERN];
+ }
+
+ return polys;
+}
+
+
+/*
+ * main rendering loop
+ */
+static void draw(ModeInfo * mi)
+{
+ boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME (mi);
+ vectorf v1,v2;
+ GLfloat r;
+ int dx, dz;
+ int i;
+
+ GLfloat dgray[4] = {0.3f, 0.3f, 0.3f, 1.0f};
+ GLfloat black[4] = {0.0f, 0.0f, 0.0f, 1.0f};
+ GLfloat lblue[4] = {0.4f,0.6f,1.0f };
+
+ GLfloat l0_ambient[] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat l0_specular[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat l0_diffuse[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat l0_position[] = {0.0, 0.0, 0.0, 1.0}; /* w != 0 -> positional light */
+ GLfloat l1_ambient[] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat l1_specular[] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat l1_diffuse[] = {0.5, 0.5, 0.5, 1.0};
+ GLfloat l1_position[] = {0.0, 1.0, 0.0, 0.0}; /* w = 0 -> directional light */
+
+ mi->polygon_count = 0;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ glRotatef(o, 0, 0, 1);
+ }
+# endif
+
+ gp->tic += 0.01f;
+ gp->camtic += 0.01f + 0.01f * sin(gp->tic * speed);
+
+ /* rotate camera around (0,0,0), looking at (0,0,0), up is (0,1,0) */
+ r = CAMDISTANCE_MIN + (CAMDISTANCE_MAX - CAMDISTANCE_MIN) + (CAMDISTANCE_MAX - CAMDISTANCE_MIN)*cos((gp->camtic/CAMDISTANCE_SPEED) * speed);
+ v1.x = r * sin((gp->camtic/gp->cam_x_speed) * speed);
+ v1.z = r * cos((gp->camtic/gp->cam_x_speed) * speed);
+ v1.y = CAM_HEIGHT * sin((gp->camtic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT;
+
+ v2.x = LOOKAT_R * sin((gp->camtic/(gp->cam_x_speed * 5.0f)) * speed);
+ v2.z = LOOKAT_R * cos((gp->camtic/(gp->cam_x_speed * 5.0f)) * speed);
+ v2.y = (CAM_HEIGHT * sin((gp->camtic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT)/10.0;
+
+ gluLookAt(v1.x,v1.y,v1.z,v2.x,v2.y,v2.x,0.0,1.0,0.0);
+
+ if (!wire) {
+ glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, l0_diffuse);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, l0_specular);
+ glLightfv(GL_LIGHT0, GL_POSITION, l0_position);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, l1_ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diffuse);
+ glLightfv(GL_LIGHT1, GL_SPECULAR, l1_specular);
+ glLightfv(GL_LIGHT1, GL_POSITION, l1_position);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+
+ glFrontFace(GL_CW);
+
+ glMaterialfv(GL_FRONT, GL_SPECULAR, black);
+ glMaterialfv(GL_FRONT, GL_EMISSION, lblue);
+ glMaterialfv(GL_FRONT,GL_AMBIENT,black);
+ glMaterialf(GL_FRONT, GL_SHININESS, 5.0);
+ }
+
+
+ /* draw ground grid */
+ /* glDisable(GL_DEPTH_TEST); */
+ glDisable(GL_LIGHTING);
+
+ glColor3f(0.1,0.1,0.6);
+ for (dx= -2; dx<3; dx++) {
+ for (dz= -2; dz<3; dz++) {
+ glPushMatrix();
+ glTranslatef(dx*30.0f, 0.0f, dz*30.0f);
+ drawpattern(gp);
+ glPopMatrix();
+ }
+ }
+
+ /* Set drawing mode for the boxes */
+ glEnable(GL_DEPTH_TEST);
+ if (!wire) glEnable(GL_TEXTURE_2D);
+ glPushMatrix();
+ glColor3f(1.0,1.0,1.0);
+ glScalef(20.0,0.25,20.0);
+ glTranslatef(0.0,2.0,0.0);
+ mi->polygon_count += drawfilledbox(gp, wire);
+ glPopMatrix();
+ glDisable(GL_TEXTURE_2D);
+
+ glPushMatrix();
+ glColor3f(0.2,0.5,0.2);
+ glScalef(20.0,20.0,0.25);
+ glTranslatef(0.0,1.0,81.0);
+ mi->polygon_count += drawbox(gp);
+ glPopMatrix();
+
+ glPushMatrix();
+ glColor3f(0.2,0.5,0.2);
+ glScalef(20.0,20.0,0.25);
+ glTranslatef(0.0,1.0,-81.0);
+ mi->polygon_count += drawbox(gp);
+ glPopMatrix();
+
+ glPushMatrix();
+ glColor3f(0.2,0.5,0.2);
+ glScalef(.25,20.0,20.0);
+ glTranslatef(-81.0,1.0,0.0);
+ mi->polygon_count += drawbox(gp);
+ glPopMatrix();
+
+ glPushMatrix();
+ glColor3f(0.2,0.5,0.2);
+ glScalef(.25,20.0,20.0);
+ glTranslatef(81.0,1.0,0.0);
+ mi->polygon_count += drawbox(gp);
+ glPopMatrix();
+
+ if (!wire) {
+ glEnable(GL_LIGHTING);
+
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, dgray);
+ glMaterialfv(GL_FRONT, GL_EMISSION, black); /* turn it off before painting the balls */
+ }
+
+ /* move the balls and shrapnel */
+ updateballs(&gp->bman);
+
+ glFrontFace(GL_CCW);
+ for (i=0;ibman.num_balls;i++) {
+ if (gp->bman.balls[i].justcreated) {
+ gp->bman.balls[i].justcreated = FALSE;
+ freetris(&gp->tman[i]);
+ }
+ if (gp->bman.balls[i].bounced) {
+ if (gp->tman[i].vertices == NULL) {
+ createtrisfromball(&gp->tman[i],gp->spherev,gp->spherei,SPHERE_INDICES,&gp->bman.balls[i]);
+ } else {
+ updatetris(&gp->tman[i]);
+ }
+ glDisable(GL_CULL_FACE);
+ mi->polygon_count += drawtriman(&gp->tman[i], wire);
+ if (!wire) glEnable(GL_CULL_FACE);
+ } else {
+ mi->polygon_count += drawball(gp, &gp->bman.balls[i], wire);
+ }
+ }
+
+ glFlush();
+}
+
+
+
+/*
+ * new window size or exposure
+ */
+ENTRYPOINT void reshape_boxed(ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(50.0,1/h,2.0,1000.0);
+ glMatrixMode (GL_MODELVIEW);
+
+ glLineWidth(1);
+ glPointSize(1);
+}
+
+
+static void
+pinit(ModeInfo * mi)
+{
+ boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME (mi);
+ ballman *bman;
+ int i,texpixels;
+ char *texpixeldata;
+ char *texpixeltarget;
+
+ glShadeModel(GL_SMOOTH);
+ glClearDepth(1.0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ /* Load configuration */
+ setdefaultconfig(&gp->config);
+
+ /* give the decay parameter a better curve */
+ if (gp->config.decay <= 0.8182) { gp->config.decay = gp->config.decay / 3; }
+ else { gp->config.decay = (gp->config.decay - 0.75) * 4; }
+
+ bman = &gp->bman;
+
+ bman->balls = (ball *)malloc(gp->config.numballs * sizeof(ball));
+ bman->num_balls = gp->config.numballs;
+ bman->ballsize = gp->config.ballsize;
+ bman->explosion = gp->config.explosion;
+
+ gp->tman = (triman *)malloc(bman->num_balls * sizeof(triman));
+ memset(gp->tman,0,bman->num_balls * sizeof(triman));
+
+ for(i=0;inum_balls;i++) {
+ gp->tman[i].explosion = (float) (((int)gp->config.explosion) / 15.0f );
+ gp->tman[i].decay = gp->config.decay;
+ gp->tman[i].momentum = gp->config.momentum;
+ gp->tman[i].vertices = NULL;
+ gp->tman[i].normals = NULL;
+ gp->tman[i].tris = NULL;
+ createball(&bman->balls[i]);
+ bman->balls[i].loc.y *= rnd();
+ }
+
+ generatesphere(gp);
+
+ if (!wire) {
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_LIGHTING);
+ }
+
+ /* define cam path */
+ gp->cam_x_speed = 1.0f/((float)gp->config.camspeed/50.0 + rnd()*((float)gp->config.camspeed/50.0));
+ gp->cam_z_speed = 1.0f/((float)gp->config.camspeed/50.0 + rnd()*((float)gp->config.camspeed/50.0));
+ gp->cam_y_speed = 1.0f/((float)gp->config.camspeed/250.0 + rnd()*((float)gp->config.camspeed/250.0));
+ if (rnd() < 0.5f) gp->cam_x_speed = -gp->cam_x_speed;
+ if (rnd() < 0.5f) gp->cam_z_speed = -gp->cam_z_speed;
+
+ /* define initial cam position */
+ gp->tic = gp->camtic = rnd() * 100.0f;
+
+ /* define tex1 (bottom plate) */
+ gp->tex1 = (char *)malloc(3*width*height*sizeof(GLuint));
+ texpixels = 256*256; /*width*height;*/
+ texpixeldata = header_data;
+ texpixeltarget = gp->tex1;
+ for (i=0; i < texpixels; i++) {
+ HEADER_PIXEL(texpixeldata,texpixeltarget);
+ texpixeltarget += 3;
+ }
+
+
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+
+ clear_gl_error();
+#if 0
+ i = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 256, 256,
+ GL_RGB, GL_UNSIGNED_BYTE, gp->tex1);
+ if (i)
+ {
+ const char *s = (char *) gluErrorString (i);
+ fprintf (stderr, "%s: error mipmapping texture: %s\n",
+ progname, (s ? s : "(unknown)"));
+ exit (1);
+ }
+ check_gl_error("mipmapping");
+#else
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0,
+ GL_RGB, GL_UNSIGNED_BYTE,
+ gp->tex1);
+ check_gl_error("texture");
+#endif
+
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+}
+
+
+
+ENTRYPOINT void
+init_boxed(ModeInfo * mi)
+{
+ int screen = MI_SCREEN(mi);
+
+ /* Colormap cmap; */
+ /* Boolean rgba, doublebuffer, cmap_installed; */
+ boxedstruct *gp;
+
+ MI_INIT(mi, boxed);
+ gp = &boxed[screen];
+ gp->window = MI_WINDOW(mi);
+
+ if ((gp->glx_context = init_GL(mi)) != NULL) {
+ reshape_boxed(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ if (!glIsList(gp->listobjects)) {
+ gp->listobjects = glGenLists(3);
+ gp->gllists[0] = 0;
+ gp->gllists[1] = 0;
+ gp->gllists[2] = 0;
+ }
+ pinit(mi);
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+}
+
+
+ENTRYPOINT void
+draw_boxed(ModeInfo * mi)
+{
+ boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!gp->glx_context)
+ return;
+
+ glDrawBuffer(GL_BACK);
+
+ glXMakeCurrent(display, window, *(gp->glx_context));
+ draw(mi);
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(display, window);
+}
+
+ENTRYPOINT void
+free_boxed(ModeInfo * mi)
+{
+ boxedstruct *gp = &boxed[MI_SCREEN(mi)];
+ int i;
+
+ if (gp->glx_context) {
+ /* Display lists MUST be freed while their glXContext is current. */
+ glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+
+ if (glIsList(gp->listobjects))
+ glDeleteLists(gp->listobjects, 3);
+
+ for (i=0;ibman.num_balls;i++) {
+ if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]);
+ }
+ free (gp->bman.balls);
+ free (gp->tman);
+ free (gp->tex1);
+
+
+ }
+}
+
+
+XSCREENSAVER_MODULE ("Boxed", boxed)
+
+/*********************************************************/
+
+#endif
diff --git a/hacks/glx/boxed.h b/hacks/glx/boxed.h
new file mode 100644
index 0000000..fd9b5e1
--- /dev/null
+++ b/hacks/glx/boxed.h
@@ -0,0 +1,4116 @@
+/* GIMP header image file format (RGB-only): /home/shag/build/xscreensaver-3.33/hacks/glx/thebox.h */
+
+static unsigned int width = 256;
+static unsigned int height = 256;
+
+/* Call this macro repeatedly. After each use, the pixel data can be extracted */
+
+#define HEADER_PIXEL(data,pixel) \
+ pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
+ pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
+ pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
+ data += 4;
+
+# ifdef __GNUC__
+ __extension__ /* don't warn about "string length is greater than the length
+ ISO C89 compilers are required to support" when including
+ the following constant data... */
+# endif
+static char *header_data =
+ "!FY'\"&Q#!&M!!VM-!6Y(!&M##6Q&\"69%\"FU'!FE!!VM$!VI$!&M!!FM#!VU&!'!!"
+ "\"&M%#&M!\"6Q$\"')#!FY#\"FY%\"6Y\"\"&Y#\"6]$\"&U!\"G%!\"7%&!G)!!'-!!')!\"'=!"
+ "!G!##G5\"\"75$\"W9#!G5#!G9!!WA$#'=\"!GE#\"'A%#GI$!GI!#'A!!'E##GQ&%7Q#"
+ "#WU%#W=%\"W]#\"GY\"%WQ)%7Y\"\"H-!\"W]&\"8!$%8%#$8-&\"8%!#81%$85)#H!##H-&"
+ "$H1(#H)#\"X5#$XA%\"X9##H9#\"89#\"89!\"HA\"\"8A!\"8A!\"X=#$8E(I!\"8I&$HM!"
+ "#8I%\"8M!!HM#!HM!!HU!$(M($8Q)!H])!XQ!\"8Y!$(]'$(Y'$8Q(\"XY%#XQ#\"I!$"
+ "\"XY\"#Y)##)%#%(]%$Y!!#I%\"\")!%#Y!$#9%!#8]!#I%\"$)%$%HY%#HU\"$91($9-("
+ "$))$#95!%8]&!9-\"$X](\")!#!)%!%)-\"#9-$#)-I5\"$Y%!#)-)\"I-!#91!\"Y-\""
+ "\"(]\"$I-'#IA\"\"I-!#Y-)-##Y-##)1#!I-##)-#\"H]!#)5#\"Y-\"!)-!\"Y!&$)-!"
+ "#)1#\"Y%##(]!$9-)\"I)!#)1#$Y%'\"XY\"\"91#!)1!#I)\"$)%%%(]HY\"#(]!#I)\""
+ "&8]%!(]!\"Y!##H]%#X]!#)%##(Y&\"I)!$X]!#Y!#\"(Y\"\"HY!#Y%'\"8Y!%(]+#XQ&"
+ "\"8M#!XQ$\"Y%%\"8M!#XU!#HI\"$XQ$#XI&\"HI!#8A\"$8E\"#(5!#8A$$(A%\"8=#$(5("
+ "#X='$89##H=\"#(=!\"XA#\"(-#\"H1\"\"81!\"8-!!(5!\"X-##8!#\"H1%$(!&%X1$"
+ "#(%$\"G]\"!8%\"\"7M!\"7U!#'Y$\"7M!#7Y##GI$#WI%!'M#\"7A!\"GI\"!G9!!GI&!GE!"
+ "\"GE%!W=\"!'E#\"W!\"!G%%!W5&!G9!!W)\"\"'-#!7-'\"V]&!W1\"\"'%\"\"'%#\"&]\"!'1%"
+ "\"&Y##FQ%!&U!\"FU!\"&Q#!&I!!FU#!&Y!!6M\"!FM%!FI!!&M!!VM\"!VM\"!FI%\"6Q$"
+ "!&E#!VQ&!&E!\"FM!\"FM#!&Q!\"&I%#&I%\"&M*\"VM(!6U\"!6A\"!&I'!FM#!FM!\"6M\""
+ "!FE##FU%#V]$\"&Y#\"FY!\"F]%!F]!!V]\"!G1!\"7%\"#75(!G%!\"71$\"'-#\"'1!!G5&"
+ "!W5$!G=!\"7)\"\"G=%\"7M#\"GM'!WA\"!'A!#7A*\"7I!#7Q!*$'I!#'I\"$'U(\"7U!"
+ "#7Y%!GY!#GY&\"7]!!H)!$H!+\"WY##X!'#X%'\"H1!\"()#\"H=\"\"X1(%X-(!H1!#X5!"
+ "\"H5\"$8-&%X5'\"8-!#X-'\"XE%#H=
'#XA$\"XE#\"XE#\"H=!#HE%\"XI\"!HM##(I'"
+ "\"8A!#H=#\"H]!#(Q#\"8Q##(Y#!HE#\"HU!\"))%$(Y$#(Q#$H]]!#X]#\"HU!!)%!"
+ "\"Y!\"#I!&$)%%$)%$#Y-#$XQ*#95!#9)!&9%($)1'!Y)!\"Y-\"#9)$%I%'#)-#\"I-!"
+ "$9)(!YA'&)-*!I%#!Y5!#Y)#%I-$$I5#\"Y1%#I)%#YA&$I1)#))#!Y5!#9-$#)1#"
+ "\"I1!\"I1!!)1$\"I-!#I1%\"Y!#\"H]!#I)%#9)!#))#$9) -$$)='#Y1##I9\"!Y1$"
+ "$)-'#Y)##I-%#99$!)-!#)-&!)-'$Y-+!9-\"%9)#\"X]\"$))'\"9=#$Y)!#Y%#$Y%("
+ "!I%Y!##(]!$I!'#9!!%I)!!Y!\"$H]#\"9!##8I(#8]$$(Y'\"I-!$8U##(Q##8I$"
+ "$(U'!HU#$HU!#(Q!%(I)#H](#HU\"$(E(\"XM\"\"HI!\"XA#\"HE!\"(I%&(A(#HE%#XI!"
+ "#H9##8=!\"HA$$8=#!H1##(=!%(1&\"H1!#85%\"X1#\"8-!$(-#\"8-!\"X-\"\"X%#\"X%!"
+ "!H!#!H!!#8-%!'I!\"8%!\"GY%$7M)\"GM\"!'M!\"GU\"\"WU#\"WM!\"'I#\"8!!!75\"\"'I#"
+ "\"79+\"G5\"\"'5!!GA#\"'-\"#'=\"!G%!#')'\"'=,!W5$\"'-#\"G!#\"')#\"'%#\"6U#!W!\""
+ "\"6]#\"G!%#'!$!VU\"!&Q!\"&Q#\"6]$!FM!!&]##&Q'!&Q!!6M$!6M&!&I!!69\"!G!#"
+ "\"6I$!&E!!6Y\"!FI#!6M&!&M!!F='!&Q&!&M!!VE$!VI$\"&I'!6M\"\"&I#!FE!\"6E&"
+ "#&Y%\"W)(!VU\"\"G!)!FU!#V]&!G9!!79&\"G-\"\"7)$!G1!\"G-$!W5\"\"71$\"'5#\"'5!"
+ "!71\"\"'1\"!G9!!7A%\"'A#!G1&\"GI$\"'A!#7I%\"'E'#H!&\"WY#\"WM&$GU%\"']\"!GY!"
+ "!WY!$H!+#W]'\"8!!\"X!#\"'Y#\"W]!!H)##X1'#H-##(5##89\"#H-!\"81!\"89##H1&"
+ "%HE%\"8=!$(9%\"X9\"!X9!\"XA#\"HI$\"XE(#(I#$(Y*$8I(\"8I!#85!#XM!!HM!$8M&"
+ "#(Y##(Q!#XQ!#XY##8Q$#(Q#$9%%#HY%\"X]\"$H]&!H]!\"8Y!!Y5!$I!)'I!'$)!!"
+ "#9%!\"9!$%95#\"9%I1(#9)$\"9-#!Y%!\"Y!#\"))\"!HQ!\"I)!$91\"\"I-!#9!!$9))"
+ "!)-'\"I-!$I5##)9#\"I5$#8]!#Y)##)1##)1#\"I9!$I-##9=!\"YA%$9-%\")5%\"I)!"
+ "\"I5!$)-'$)1!\"9=#$Y5!\"Y)\"#Y5&!)A!\"Y-\"#I=!#91$#I%\"#)-#%I5!#)5##9)$"
+ "#)1&!9-\"#91$\"I1!\"I1$\"Y9\"#I)%!I-#!I-##)-#\"I-!\"Y5\"#I)\"!))$\"))\"!)%!"
+ "!X]!$)!(\"Y%#$9%\"#I%\"#I)\"$Y-'#I%#\"I!!#Y-##I%)!Y%!\"8]!#I-%#)%#$(Y'"
+ "$)%%#XY#\"I!!\"8]!#(U#\"HA$#HU\"&HQ)&(Q*\"HU!#8M$\"8M!#8Q$#8Q$$(E(\"8E#"
+ "#(A#\"HA!%85'#(=!%(=#\"H5\"#H9\"\"89!\"85!\"H-'!H5#\"8=!$85$\"8-!!X)!#'U$"
+ "\"8%!\"8!!$H!$#(1!\"(%#!GU#!WY!\"WU#\"7U!$GU#\"7Q!#GI$\"7M!\"7M#\"GI%\"GI\""
+ "#WE*\"'E#\"WA'A'\"'I\"!')!\"G9\"\"W5$#W-#\"'1#\"'-#!7-\"\"&Y%\"G5\"\"'!#!'%#"
+ "\"'%#\"F]'\"VY&!&Q!#&Y\"\"&U!\"&Q#!FQ!\"FQ%$VU*!&E!!FM%!VM&!VM$\"F9)\"&U)"
+ "!&M#!&Q!!&I!!&M!!6Q\"\"6]&!&A!!FQ#!VQ$!6=\"!6Y&!6M\"$6MFM)!FQ!\"&Q#"
+ "\"6M,\"6Y$#&]$\"V]*#FY)!F]!!G!!!&]!\"')\"!W)!\"7-&!G5!!'-!\"75#!G5!!G9!"
+ "\"'A#!G5!!GA#\"WA#\"GA)!'E!#'A\"#GU!#WM%#7M%\"7M!#WY'#7Y%\"7Y!\"GM\"#7]%"
+ "\"X)##']$\"8%!#8%$%(=&\"8%!\"8)$$X)#$()#$8%)\"8-!&X1(\"X=\"$H='$(=\"%H1&"
+ "!HE#\"X=#\"89!!X5'$8A##XI&\"8A(I!&(Y##HI(#(]#\"8M!#8Q$!HQ!\"HQ!$(Y'"
+ "\"XU\"#9!$$X](\"XM%#HU%\"XQ(#XU&\"8Y!#9-!#8Y$\"8Y!#I!\"\"9)#\"H]!\"8]!#8U!"
+ "$9%##X]!\"X]\"\"I%!$Y!*!I)##9-$$914\")1(#I-%#)-#!))$$)5$$Y1*#91$\"Y1%"
+ "$9=\"!Y9!\"9-#$9%)\"Y5\"&)-&$)5'\"Y%#\"I5!\"I='#)9##99$#)=##I9%\"YI!#)9#"
+ "#)9#%I9.\"II!#Y9#\")=\"\"I9!%)1($Y9$\")E\"#Y9#\"Y9\"!YA$$I9)\"I5!#95$\")5("
+ "$)1'#Y=##Y9&$I5##Y9&\")9\"#Y5##)9##9=$#9-$!Y9!$)A'\"Y-\"&9-+!)-!\"Y-\""
+ "\"I)!\"I-!#91'#))##9)$\"XY\"#9)$#9%!$H]#!I)#%I)!&I%&$9!%%I1!!X]!\"8]!"
+ "\"8]!\"I!\"$HU'!XY!\"XU\"#(Q##(U#%(U)$XE%#8I$!(U#\"8M#\"HU$#(Q!\"HM!#HU\""
+ "!XE$\"8M!\"85!!H9!\"XA\"#(=$\"X=##HI%$89##X5&\"89#!H=(1&\"85!\"(5\"#H-%"
+ "$(!H)%#(5#\"()#\"8)$!G]#\"']\"#W]'#8!##WY'$X!)#7U#\"WQ#\"7Q!\"WM##'Q!"
+ "\"7I!\"WI#\"G=\"$7E$#W5*\"'=#!G=!$75,#W='\"'5\"!79\"#71(!W%\"\"G%#\"')#\"'%#"
+ "#G%$\"7)$!'!!\"'!#\"G%\"\"&Y#!VU\"!6M\"!FQ!\"6]&!6=\"!F]#!VM$!&U#\"FQ#\"&E#"
+ "!&M#!VI$!VU*\"VU&!6M(!6Q\"\"FQ%#6M$!FQ#!FI#!VMM(\"&M#\"&U#\"&M#!F]&"
+ "!FY(\"6Y$!7)\"#6U\"\"W)&!G!!\"G%##G)'!W)\"!'9!\"7-$#W5#\"'-#\"'9%!W-\"\"'=\""
+ "!'=!\"G9%#7Q##'E$\"GI#%'I'!GE#\"WQ!\"'Q\"\"WM##GY$#WY)\"7Y##8!%#X%!\"X%#"
+ "#H)$\"H%\"%(5!#'Y!$8))#7]%#H-#$81$\"H5\"#89$#(=!#85!$(5($H-$#XMY\""
+ "$(E%!(M!#89\"$HM'\"(E\"\"HM!!(I!\"8I!!(I$#8]$#(E#%(Q)$HQ)#XQ'$(U'#8A$"
+ "\"HI!#XY#\"8Y!#(]##9!!#8]$$)!(#Y%$$9%%$9%#%(]\"#9!!\"Y%##Y)##I-\"#8Y-"
+ "\"I1!$9-\"$)5'\"I1!#))#\"I1!!))!#9%$!I)#\"I1!%)5\"\"95##91!$)5$$I5)#95!"
+ "$9=%\"I1!\"YI\"\"I9!#99$\"I9!\"Y5\"#I=%$)9!$I=#$)='!YI!\"I9!%I='!)5!#Y9#"
+ "$I=#!)A$\"I=!#I=%#9=$\"YQ!#)=##)A#\"YA\"\"I5!#I=(#Y9&\"II!!IA#\"9=##Y5#"
+ "#)9#\"I1!\"IE!#Y9&\"YI\"#Y-&\"Y=\"\"I=!#I9%#)9##I9\"$Y1'&9AI1%\"I!'#)1#"
+ "\"91#\"Y1\"#Y1&$))$$I5#!I%(\"I!$\"I)!#))#$Y)!#I1\"#I%##8]$#(]!$8Y\"#Y-#"
+ "#HQ(\"XY\"\"I!!#(Y#\"Y1\"#8Y$$(Y(\"HU!\"XM\"#8U$%(I#\"XQ\"\"XY\"#(M!!HI&\"(I\""
+ "#HE#!HI!#HM(#8=$\"X=\"#XE'!(9&\"XE#$X=(A'\"81!\"H1!#8=$\"81$$81(-$"
+ "#H-%\"8%!#H))$H)\"\"8%!\"X%!#8)%\"']%#(!!\"7U!\"'E#\"WU#!GM!\"GQ\"\"7Q!#WI%"
+ "!WM$\"GA$\"WA!\"WE#!'A!\"'A#!7A\"#GA$!G5!\"G5$\"W5#!G5!!'1!\"W)$\"G5\"#&Y#"
+ "\"'%#\"'%#\"F]##6M!!F]!#6](!G!!\"FU#\"6I$!VQ\"\"FM)!&Q!!&Y!!FM#!&=#\"FM%"
+ "!6U\"!6M$!6M\"!FQ##&E%\"&M*!VM$!6Q\"\"6U(\"6M$\"6Q$\"6E\"!VM\"!FY#!VU$\"&]\""
+ "\"FI%!&U&\"'%#\"'!\"!W!\"!G!!\"W%#\"71$\"'-#\"7%$!G-!!F]!!G=!\"'-\"#GI#\"7A#"
+ "\"7=$!WI\"\"GU\"!GE#\"GU\"#'Q$\"7Y&!'Q#\"W=$#7Y%$GY#\"GY%!G]#\"H)\"\"H!\"\"(!\""
+ "\"7Y!$(%%\"8)$$H-%\"X-\"\"X%#$(-(#H1##81%\"85!#(A#\"89!#(9##H=%#(=!!H=#"
+ "\"XA%\"HE$#H=%!HI!$XQ+#(I#\"8E!#(Q#\"8M#\"XQ\"\"HI$#I%%%9%*#8Y$#(U#%)%\""
+ "\"X]%\"Y-\"\"8Y!\"I!!!Y!$#(U!\"I!!$))!!Y-!%I-+%9%&\"I)!\"I!!\"I-!$)-$#I1\""
+ "\"Y!%#)1#!91\"\"I-!#HY%\"I1!$Y-+#95!$I5Y=IA%\"I9!#Y9I=%\"I9!\"I9!"
+ "#9E#$)M&\"I=!!9=\"$I=#\"Y9%#Y5)$)A!$)=$#I=\"%99\"%IIY9##YA#$IA##Y9&"
+ "!)E!\"I5!#9A$$Y=!$9A$\"YM!#IA\"$YI&$IA%#I9\"$YA'#Y=#$)9$#9E!$9=%\"IE!"
+ "\"Y5\"\"I9!\"IQ!#I=%%9I%\"I=!#)M#\"99&!)=!#YE%#99'$I9#$Y5'#)9##)9##)1#"
+ "$I=#\")-%\"Y)\"!I1)'))'\"I-!\"I)!$9-%$)-!#H]%#9)!$I)#\"Y)\"#I!#\"I-!$)!$"
+ "#I%\"#8Y$$8U##(Q#!X]!\"X]%%H]-\"(Y\"\"H]!\"XQ\"#XQ$#(Q&%(Q)#(Q#!HQ!\"8U#"
+ "\"HQ!#XY&\"8Y!!HI&\"X=##(M#!(=!#8E%\"H9\"!H9#$()##8I$%(5()!#H9&!(-!"
+ "#8-%#H-%#H9##']$\"8)!\"(%##X%!\"81!!(!$$H)(!(!$\"GY)#WQ'#7U#\"7Y#!GY#"
+ "!'Q!\"WM#!'Q!\"W9#\"'E#!WE!\"GA%\"G=%\"'=#\"G9$!G1!!W5\"!7-\"#71(!W1'\"'%#"
+ "\"F]%!7%'\"&]#!6Y$\"W-&]'!FY!\"&Q#\"&M#\"FI%$VY%!6M*\"VM&!&M!!&M#!FM#"
+ "!&Q!!&U%!FM#!6M\"\"6M$!&I!\"&M%!&M!#&U%#&M'!7%$!FQ!\"VY&U%\"6Y&!W!$"
+ "!6M$!FY!!&]#\"'%%\"'1\"!G1#\"V]\"\"W1&\"W5(!G9!!G9!!79\"!'5#!'=!\"GA\"!GA#"
+ "!GE!#79\"\"WI!\"'I!#WE#\"GQ\"$'Q##7U#!GQ!\"X)\"\"7Y!\"'Y\"$'Y%!H!!\"8)!#(%$"
+ "$H-%\"(%#%(!$#X-'\"X%#\"H%!#X1$#(5#\"89#\"X9\"#XQ&\"X=#\"89!#X=!#(E#\"HE$"
+ "#HA##(E(M#\"XM%$(M!\"HI!$XM(#HQ%#HY%$H])!#$9!+#H]\"%Y!#$(]$%I!+"
+ "\"8]!#9!!#9%!!Y)$#9-!#9-!\")%\"\"I!\"#9-$\"I-!\"I-!\"Y9\"&)9##8]!$91%#)1#"
+ "#9=$\"Y1\"#I9%#Y5##Y5&\"I5!$)='!Y1!#I1($9=(#)9#\"Y9\"\")=\"!YI!!Y=!!Y=!"
+ "#Y%$$YAYA\"%9E%#9=!#95!#YA##99!$)5$%Y9%$YA&%9I)$)E$%9E)#)5##9E$"
+ "#YM\"$IE%$YI$#9A!%)E!#9E!#9=!#Y=#$95%&)M\"$I5##I=!$)I$$YA&$IA%$9M!"
+ "#Y5##YA\"$9=\"#YI#$)A$#)A#$)5$&9A.$IA($)1$#9E#\"I=!!I9##)A#!95\"\"II!"
+ "\"99##Y1&!)9!\"Y!##Y=#$Y5.#))#\"(]\"\"I1!\"I5!\"9)#!Y-!$Y%*$))$\"I)$\"I)!"
+ "$)%!$I)##9!!#9!\"$HE!$(]$#8]$\"8Y!#(]##HY%\"8U#!HY!#XU&\"XU\"\"HY!\"89!"
+ "\"8M!#HI##XM'#XAQ$\"XI\"!H5##(9#\"XA#!H5#$X=%\"H9%$X9#%(=#$X5(5&"
+ "$H1*%X%'#(-!$(-%#8)%#H-&\"8%!#()$$(!#\"8%!#X%!$']&\"WU#\"W]#\"7U!$'U#"
+ "\"WQ!!GU!#'I$!'I#\"GI\"!GM!\"'I#!'E#\"WM#!W)!#'9&!G9!#'5\"!G5#!')!!7%&"
+ "\"G-%\"W)&!79%\"')#\"7)$\"7-$#&]&\"&U!$6Y%!FQ!!W%!\"FY%!VM\"#6E\"!V]\"\"6M&"
+ "!FU#!&M#!&Q!\"6M(!6M\"!&=#!VM$\"VE(\"VM$!V]\"\"&Q#\"&U#!6U$!FM!!&Y##'%%"
+ "!G%!!W%!\"7%$!')#!')!\"G-%#'1&$'I!!G9#\"79+!75\"\"W9&\"71$\"W-'U\"\"7E#"
+ "!WM$!'E#!GU##7I#\"WM(!G]!\"7U!#'A\"\"X!#$7]*#X!'\"8!!\"WI##(!$#H%&!H!#"
+ "$8)$\"X)%#8-'#(5#!H5!!(=!%XE)\"89#!X9$\"H=!\"X=%#H5&\"HE!#(M#%8I'#HE#"
+ "$HY)%(E+\"8]!\"8M!#(Q#\"XY\"!HI&!8I\"$8Y&\"8I!\"HI'\"XU\"#HY%#(])#8Y$#I!#"
+ "#9!!#H]\"#I%\"\"Y-\"!))!$))!$9=%$9-)#I)\"#9-$\"I1'\"I1!%Y=(#))&$95\"#)5#"
+ "$I9)#)5)$I9)&91'\"I5!%Y=$!)='\"Y-\"$Y-!#95!%9=)$IA\"$9=%%)A(#9A!#91!"
+ "$)E#\"IA$#9E!#IE\"\"II!$9E$%)A%%)E$&IE.#)=#$)='$IA\"$)A!#9E!%IM&$)E$"
+ "$)Q#$9I\"$)=!$IA#&9I'#9I$$9I$#9I!$9M!%)A+#IE$\"IE!$IA%%9=\"$9=%$Y=$"
+ "$)I#!)E!#YQ##9E!#YE#&)A(!YA$%)A(#YA#&)A\"&9IIE\"$Y=!$9=(\"IA!\"Y1\""
+ "$9)\"!YA!#I9%#)%$#Y%#%95\"\"I)!$)5'\"I1!\"9%$\"I1$#Y))-#$91(\"Y-%%)-%"
+ "\"8]!#99'#)%#%Y%,\"I-!$)!!#9-!#9!\"!Y!!$HY##(U#\"I!$#(Y##(Y#%(]%#XU#"
+ "#(Q#!XQ!#(Q##8I$#HQ%#8Q!#HQ\"\"XE#\"8I!#XE&\"XQ%#X9$\"XA0\"X5#$8-)!H9!"
+ "#(=!\"XE#\"X=#$(1#\"7]#!X1!#8%\"#H)$!(%!#H%&\"H!\"\"X%#$8-'\"H%\"\"7Y!$(!("
+ "\"GQ$\"7E!!H%!#WM'\"7M!#7M#!GI#!WY$\"GA#!WE!!GE!#7I(\"W=!\"G9%\"')(#71$"
+ "#G%\"!'%!\"'A'\"G1\"!G%#!'!!!G!#\"G1#!FU#!FY)#&U%!&U#!VY\"\"VQ$\"FQ%!FM*"
+ "!VM$\"FI'\"&Q#\"&M#$&M)\"6M$!VM$\"&M##&M!\"&U##VU,\"&U!\"&U#\"FU%\"&]#!FY&"
+ "#')%\"G)%!FY!$7-%\"')\"\"G1%!W1(!G5%\"G9$!'9!!G=!\"'=#!G1!!W=\"!GA!\"7I!"
+ "\"7M!$'M(\"7M!\"7I!#WQ%\"WY#$GY%$'U#!7Y\"#W]$\"X!#\"X%#$(%%\"8)!#()!!X-$"
+ "\"X-#&H9'\"H5'!H5!#H)&$8=##89$\"X9#\"X=#\"8A!%8A-#(9#\"HM!#XE##HA&\"(A\""
+ "\"8M!\"HA!!HI!#HQ%#HM&!XQ$$8U##XI#\"8Y!#XY##9%!#Y)HY%#9%!!X]$$9!&"
+ "$I%'#)%$%)9%$I!*$Y%!!)-!#Y1#$8](#)9#$I5,\"Y1%#I5%#95!\"I1$$95(%II&"
+ "$)A!\"I9!!)=!\"I=!\"Y5\"$9=%$IA#%9E\"#Y9#$9=+$)=$$)A$!Y=!$YIYA\"$Y=#"
+ "$IQ%%IE$&)I,$)I#%9I%#YM#\"II!#YI\"#)Q\"#9I!#YM\"$)I#%IQ)&)I,$9Y!%II#"
+ "#9M!#9M!%IA*%YA$%YQ!$)I#\"YM!#)=#\"IM!#9A!#YM#$9U$#IM\"%)I(%)M!#9E!"
+ "#)I)M##Y9#'YI*#II\"#9E!#Y=\"$)E#&9E#%YE+%YE+#9I!#9A!%IQ#%9A\"$)=!"
+ "#99!#Y1#!9=%#)9#%9=\"$)5!\"Y=\"\"Y=\"#I=%\"Y-\"!I%##)1#\"I1!%)=$#))&!(]#"
+ "\"Y1%!I-##9)$#Y-&$91(#Y))#Y)##H]\"$I)#%I!!$X]*#9)!\"X]\"!8U%$8Y\"$(Y$"
+ "\"8U!%HI%!XM!$(Q(\"8M##Y!'#(M(I'#(E$\"(U\"!(E!\"HE!!HI!$HA'!H=!\"8-!"
+ "$89#\"HA!#89%#(9#\"81!\"(1\"\"(-\"#(5#$8).$()(\"8%!#7U%\"8!!\"GY$\"7]!#GY&"
+ "\"GY\"\"WU##GQ&!GM#!GI#\"GM\"\"GI\"#7I%\"GE$!WA!\"'A%%'9#\"7=#$'A&\"'9#!W5\""
+ "\"79&!W-\"!G1!!W)!\"G)%!'%##G%\"\"&Y#!VY\"!&]!\"6Y$!FU!!VU\"\"&Q##6]#!FM%"
+ "!FQ!!6Q$!6M$!6Q\"!6E\"\"W!&\"VM$!&I!!VM\"\"VQ##FQ)\"6Y#!W%\"\"7!\"#7)##'!%"
+ "\"'%\"\"'1#\"G%##G-)\"71(\"W1!\"G-%\"79$!W9\"!G9!\"W=##7A#$'E(!'I!\"GU\"\"G=%"
+ "\"W=#\"7=$!GE(\"WU##'U$#'I!#8%%$W](%8)(#'Y&!(!!\"']#\"(-#%'Y$#H-##X-'"
+ "\"X9#\"(5\"#X=#\"8)(\"X=##X5'#X=!\"8=$\"8A!!HE!$XE%!HA!\"8I!$8I)$HE*#8M$"
+ "#8Q2#8Y$$XQ*$HU&\"HM!$(]'\"(U\"#(]#\"H]!\"8]!$Y!!#9%!\"I!!#)1#\"9%$$))%"
+ "#9-!#(]!#))#\"8Q!$9A(\"I5!$99($I-##)I##YE&!I1&$99(#IE$\"I9!$I9\"\"I5!"
+ "\"IQ!\"IE$#9=$#9A!%IE$!YA!$)-$$II%$IE&$YA&$IQ\"$)I!\"IM!#YI#\"II$#9A!"
+ "\"I9!#YM#%9M)#9I#\"II!#9I!#IM\"$I=##)Y#$9I!#IE\"#IM+#YU)#Y=##9Q!#9M!"
+ "#9M!#9I!\"9U#$)Q'%)U'%)Q*$)A!$YU#%9M)#9Q!%IE##9M!#9E$$IQ&$)M#%YE$"
+ "#)M%#IM!!YM$$II##YM#\"IU!$)E#%)A!$)Q$$)I'$II##9I!$IE#$9A!$II&$IE%"
+ "$9A%#YA##IE!$YE*#9=!!)A!#9A'#9=!\"I9!%99#\"95#\")1%\"I-!!Y5!#Y%'$I5)"
+ "$(Y'#91$#9)!$9-%!)!!\"95##9)!\"8Y&%9-#$)!%%)%&\"Y!\"#(]!#(]#\"9!#\"H]$"
+ "$(M%#8M$#(M#$(Q(!XQ!#(Q#\"8U!\"9!##8M$!(=!#8E%\"XI\"#(I##(='\"XA\"\"8=#"
+ "\"8A#!(=!$(9\"\"X=\"$(=\"$(1(\"X%#!8-(#H-&!H%%$8%$\"8-!\"W]#\"8%!#7Q&\"W]#"
+ "#7Y#\"WY!&'E$#7U##'Q$\"7M!\"WQ#\"'A!#7M%!WE\"!WQ\"\"79\"#G=$\"GA%\"G)!!W9\""
+ "\"GM$%7)'#'-&!'-!\"7!$!W-!\"'%#!FU!\"&U#!F]!!W!\"\"&U#\"&Q#!FU#\"FU!\"&I)"
+ "!FM!!6M\"!&]!!&=!!&M!#6M\"\"6]$$&Q'#6Y(!&U!\"&M#!F]!\"6Y#\"6Y$#'!'\"'1#"
+ "!G)!!')$!'-#\"G-%#G5'!G5#!GE!\"'=##G9\"\"W=%!GA%\"7A!!'M#\"WM!\"GA#\"GU\""
+ "$GY*\"7Y!\"WY!#7Q\"#8!%\"7]!#']!!WY&\"7U!\"7U!$(-%\"X!##H)#$(!*#H9&$X-\""
+ "#X-!#85\"#H)&\"X9#\"H5!#(='\"8E!!H9!$8A##(Q#$8M##XI&\"8=!!)!$#HI#!XQ!"
+ "$HU$\"(Y%\"XU\"!X]!#(U!$I1##I!)!&$))$#8]!$9%#'I%'\"I)$!I-##9)!$I9#"
+ "!Y)!!Y-!\"I1!\"I1!#))#$I5&\"I5!!I5#%I9#\"Y9%#)=Y9&\"II!\"I=!$I1&$YE#"
+ "$9I%')5*#9E!!YE!$IE&$IE%&YQ($IE#$YM#%)I/$9M!$YA$$IE##YM##YU\"%)U'"
+ "\"IM$$IQ)#II!%YM.#9Q!$)Y##IM!$IQ&$IU\"$)U##9Q!$IQYQ##9Q!$)U#$)Q#"
+ "\"IU!$YQ##YQ#$9Q!\"II!$)M$')Q*$9I!$)M#$II%#YQ#'9I(#IU!$YY&\"Z!\"#9U!"
+ "#YQ#!YE!$)U#\"IU##9I!$YI$$9M$#9M!%IQ'$IM\"#YI#%)5!#9M!#II\"#YI#%9E)"
+ "#YE#\"IE!%9M)%9=*$99%#YI#\"YA\"$Y1!#Y=##99!#9=$\"9I&$9=%$Y5*#)9#\"Y=\""
+ "%9E)#)1#&)5##I1%$)5*%Y)\"$9-(#X]&!Y)!#(YI!\"$I)'$))!$9!%#I%\"\"8]!"
+ "\"X]\"\"I%!$I!##(U&\"HU!#(U#!XY$#8U$#9!$\"8E!\"(Y.#XI'$(I!#(A!#(M!\"XE#"
+ "#(A##8=$%(=)\"X9##X9!$(1(5#\"89!#(1$$()%\"()%#8)%%8%#\"H!\"\"8!!$'Y%"
+ "#7]%$(-#\"7Y!#(%$#7U##WU\"#7M%#'E+\"GE\"\"GE\"!GE!\"'E#\"'9!$'=&\"'9\"#'9+"
+ "\"'E#\"W5#\"'1'\"71&!71$\"&U#\"'-!\"&Y#\"W%$\"G%!!F]!\"F]#!&]#!FU!\"&U#!6Q'"
+ "!VQ$!VM\"\"VQ*!&Q!\"6M$\"&U#\"&I!\"&U#!G!!\"&]'!V]\"\"W!&!G!!!71\"!')!!')!"
+ "\"'-\"\"'-!\"'-#!'!%\"W1##GI#!'5!!GI!!'E!\"G=%!WE)\"7=$#7I!!WM\"#'M$\"'M\""
+ "$7Y$\"GE#!X%$\"GY\"\"7]!\"8!!\"89!\"(!%#(%'\"H)\"\"8)#$X1%$\"X1#\"(-($(1#"
+ "#X5!\"89##89%#85%!8=\"\"H5\"$HA!#8=$%8]#\"XE\"\"XI\"\"(I\"#XE!#(Q##HI%!HU!"
+ "\"HQ!\"8Y)!HM#\"8]!\"8U!\"X]\"$9%%%Y9!\"Y!\"$)%%$Y!'\"Y=\"$))!#Y-#$I-)\"I-!"
+ "$Y1*\"Y1\"\"95#$)1'\"I5$#95$#95$\"I9!#)9#\"I=!%)=(\"I9$#IE\"!Y-$#9A!#9I!"
+ "#I9\"#IE%\"I5!#)I#\"IM$$II&$9U$#)A#$IQ&&IM(%)M!%9E Q!#YQ#$YQ'%)Q!"
+ "%9Q($YY#%9Y\"&)Q(&IM$%)Y'!YU$#YM#%)U($9U($9U$%9Q($9U!&YY%%)Y$$9U$"
+ "\"IU'\"9M#%YE!#)]#!YQ!$YM##I]!&Y]$#)Y&\"YU$$)Y##II\"#9Q!%IU&\"9Y##IY!"
+ "&9M-#YQ&$Y]&$YQ'$YQ##9Q!\"YQ!#9U!#9Q!\"YQ\"$IM&$)A-#YI\"#9Q!$II%#IM$"
+ "\")A%\"YM\"#9I!$Y=!$9E\"$)5$#YA#%)9%!YA!#9=!#9A!#99!#)A#%IY*\"I9!\"Y9\""
+ "!Y-!\"I9!&)=&!)1!!91+\"I1!#91$#I5\"#I-%$H]##9)!#))#\"I1!\"Y-\"$9%&\"I)!"
+ "$8U\"#(]#!(]!\"I%!#8U$\"8Y!#XUHE#$HQHQ%#(Q##(M#$HI'#(I##(U##(E$"
+ "\"X=#$XA(\"8=##(9#\"(9%\"X5\"!H5#\"X5\"#89%#85$$(!(#8-*!G]#!X!$\"X%\"#8)%"
+ "\"X!#\"GY'!'U!\"7U!\"7U!!']#\"WQ#!WQ!$'U##7I!\"7E!!GE!#WA%\"'A*\"'A#!79\""
+ "\"75(\"W9#\"G5%!W5$!G=%\"7-$#')'!G)!#7)&!G-%$7!#\"&Q#\"7%$\"FY%#FU\"#FA#"
+ "!&M!!&M!!VI$#&M#\"FQ!!&M!!G%!!6U$!FU!\"&Y#\"&]#\"'!\"!F]!!G!!!W)\"#W!!"
+ "\"'-##'1&!'1!!G9!!G5!\"7A!!GI!\"7A$\"7Q#\"7A$\"W9!#7Q%\"7Q!#'U$$'Q&\"GQ\""
+ "!'M!\"7Y!\"7Y!\"7]$\"7]!\"'Y##'Y$!X%!\"X)-%$(9(#8-%#H9#!(I$#85%#(E$"
+ "#89$#H=%!HA##(I#\"XA%#(A#$89!\"(I\"\"HI$!(I)\"Y!#$8Q(#HQ&&HM*#(Q#!HM!"
+ "$(Y!!Y!'#)!##X]&\"9)#$9)\"#XU#!Y%$!Y)!$)1'!X]'$91%\"I-!$Y1!\")-\"\"9%#"
+ "\")5\"$I1)#IE%#Y-&$I=)#)9#\"Y5%#Y9#\"IE$%)A%&91$#IA!#YE\"#9E!#)E##9M!"
+ "\"II!#)I#\"9E##IM\"$YE*\"9I#%YQ'#I]!$)U##9Q!#9I!#I]!#9U!%)Q$%IY)#Y=\""
+ "%IQ*%9Q($)Y#%I=#%)U'$)U#\"IY!$)Y##9U$#9U!%I]#'J!'$)Y#$9Y$$*%&$IY&"
+ "!YY!$)Q#$Z!##Z%)$I]%$YY##YY\"\"YM\"$IY&%YI!#IU\"\"IY!$)M$$9Y$\":!#'9]+"
+ "%9Y(&YU$#YI#')Q%$IU%$IU%$)U##J)!\"9E##9U#$J%%!YQ!$9E\"$IY\"$)I#\"9M#"
+ "\")I\"#9I!$YE U!$9A$$I]\"#99!#YI##9E!#IE!#YA#\"IE!#9A!#Y9##I9\"!)5!"
+ "\")E%#)9##Y=&$)1'#)5##)5##))#\"I1!\"Y1\"%)I!\"I-$\"I-$$)%'#9)$\"Y%#$))$"
+ "$Y%%$I)##X]!'I%*&(]&%HY$#8Y$#(Q#\"HM$#8U$#(]&\"H]!\"(=\"#XQ##(I#\"8Y#"
+ "$(A(!(A!#8A$\"H%!#X='#H=##(9!#X=$#H5&\"X-#!(9!\"H)\"$H-*\"8!!\"8A!\"8%!"
+ "!H!#\"(!#!GY#\"W]!#WY$\"7U#\"7Q!\"WU#\"7Q!\"WM#\"G9\"\"WY##7]%\"'I#!7A$!'9!"
+ "\"'=##'I$\"75$!G5!!71\"\"'-#\"'-#!'!!\"7-$!G!!#'!%\"VU#\"&]#!FE!!F]!\"&U!"
+ "!&I!!FM#!VE&\"6Y&\"&Q#\"6=(\"'!#!F]!\"&]##'%'#6]$!W%$!7)%!G)!\"G-%\"W1#"
+ "\"'1##'5\"\"75$!'9!!G1%!G=!\"'1#$79%!GE!\"WQ#!7E\"%GU&!GE&\"'=!#X)'\"7U#"
+ "\"GQ\"#'Y$\"WQ#\"8!!\"W]#\"X1#\"(%*\"()*\"8%!#81%$X-+#H!!%(=)!85\"#H=%#(=!"
+ "#XI'#8A$!HA#\"X=\"\"8E!\"XQ\"$HM*\"XQ%\"8A!#H]\"\"8Q##XQ#\"XE#\"8U!\"8Y!\"Y-\""
+ "$H]&\"I-!#(Y!\")!##9)!#9%$\"9)&\")1\"#I)&$9)(\"Y1(#)9##))##91!!Y5!#I5\""
+ "\"I9!!Y9!\"I9!!Y=!\"II!#Y=##YA##Y9#$IA#&I=(&IE$%)E(#IA!'9E+%II##99!"
+ "!)Q!#9M!#9=!'9M'$)M$#YQ#%II#$)Q$#IM\"#J!!%YE!$)Y##IY!#IQ!$9Y$$I]&"
+ "&IY.$:)!%YM.%)M($Z!&\"Z!\"%9])$:!$$I]&$J%&%)]($:-#&)Y!$:!$#I]!$:)!"
+ "#I]!$9]$%IY*#J)!#J)!%YU!$IQ%#IY!&*!$%*-'!I]#$9U$#Y]\"#YU\"\")M%\"I]'"
+ "$)Y##Y]\"#IY!#9U!#9Y#\"YY!$9]$')Y\"$)Y#\"YQ!#9I!#9U!\"IE$%)M!#IY!$IQ&"
+ "#9Q!#)YYQ#%)M($9Y$%9I%$9E%#YI#\"YM\"!9I\"#IA\"%9E\"#Y=\"$)A!\"9E[!"
+ "#9A!&9=&%Y=!\"I=!\"IE!#Y5##I9\"\"I9!#Y=\"#I-%\"Y-\"#91$#9%$!)5!!Y)!\"I)!"
+ "\"8U!$Y-(!Y%!$)!$\"I!!\"H]!!Y!!#XY!&HY)#)!##8U$#8Q$!(Q!#XI##HQ%#HY%"
+ "#8I$#8M(\"XI\"#XA!!8E\"#(A!#85%#X5'\"89&\"85#!(5#%(1$\"(1##H5&$8!)!(5!"
+ "#(%$#85\"\"8-!\"WQ#\"7Q!#GU$\"X%\"\"WU##WU%\"WY#$'M!#'Y$#WQ'\"WM#!G=!\"'A#"
+ "#'I'!W=\"#G1$\"79&!71\"!W%$!W1&!'-!#')\"!79\"!W%\"\"'5#!W)(#F]'\"&Y!!FU!"
+ "!7!%!FY#\"VI&!FU##&Q#!6U\"\"6Y#!F]!!F]!!6]\"\"&]\"!G%!\"'5\"#G-)!'9%\"'%#"
+ "\"G1#\"75,!W9\"!G1!!W5\"!W5\"!GQ!!GE!#7Q#\"'Q##8%*\"7U!\"WQ#\"WU#\"GY\"!WM)"
+ "\"W]#!G]!#()$\"'Q\"#(%&$(%(#H))\"(1\"\"H-!!X)!\"HA\"\"85!\"85!\"XA#\"X=##(E$"
+ "\"X=#!HA!\"8A!\"HE!\"(I%#HE%%8M'#HQM$#(U#!)!!$)%!#(I##XY(]#&)%*"
+ "#8]$#91!$Y%!$I!$$I%'$Y)(!Y%!#I-\"#I-%#)9##I%%#)-#%I9.#)9##)A&$I9#"
+ "\"I=!\"I9!!YE!!Y9!$YU'#9M!$IE##9=!!IAYM&$)I$%)E!%)A$$9A%$9M!%)Q$"
+ "%)M(%YQ$!YU!#YM)$YI*$)] Q!#IY!#IU!$Y]&$9U!$)]#%*%'#IY!$IY\"#:!#"
+ "#Z!\"#Y]\"#I]!$Z!\"%)]$$9Y$$*%##J%!$Y]'$:!$%J)*&*%!$J%&&*!($9U($I]%"
+ "$:%$%*-'#YY\"#J%!$*!#$9Q!#J%!\"YQ!\"J%!$:-$#IY!%*1##J!!!*!!\"J!!$J!%"
+ "%)](#9]$#I]!$9U$%)Q!!YQ!#J)$$YM#$)Y#$9U$$IY\"%)Y!#9M!&)](#9I!$)U#"
+ "$9M!&)U$#)U##9Q#$*%##J%!\")M,$IU%$)M##YM&$YI&\")E\"\"II$$YE##YE#%)-("
+ "%)E$#IA!&9M&\"I1!\"YM\"\"I=!\"99#!)9*#9-!\"I1!#95!\"I9!#))##I)_$\"I)*"
+ "#(Y!!Y-!!)-!#I%##I%##I!#%)1(\"I)!$8]\"#8Q!#(U#!(U!!8U(!XQ!\"8Q!!HE#"
+ "\"8E!$HI$\"8I!\"XE(#XY#!XA!#H5(I##(5$!(9!#(5$$85H)#$X1#$8-&\"X-\""
+ "#85'!WQ'\"8!!\"X!#\"WY!#GY!\"X!#\"(%%#']$#'U'\"WM##WA'\"WM!!GQ%#'I$!GE#"
+ "$'A&\"7A$\"'=!!W%\"!G=!!WA!#W=%!G1!\"7%$!'E%!G)!!FY!!F]!\"6Y$!F]!\"6Q$"
+ "!&M'!FM!!FY!\"&U#\"&U#\"&Y\"!FU!!V]$!'!!#&]'!'%##7-#\"75&!G-!#7)#!G1!"
+ "#'5&!G-!\"GE#!WA!#7A(!GM!\"7I##GM&$'Y(\"WA!\"WQ%!GQ!!WQ$#7Y%!W]!\"7]!"
+ "!'U!#W]%\"X-##85%#()$\"85!\"(%#\"8!!#(1!$(9(!H-!\"89!\"X)#$(E'\"(=\"#XA'"
+ "\"8A#\"X=#\"HE!#XY#\"XM\"\"H9!#(I#\"(I%\"8U!#9!!#8I\"$XU$\"(]\"\"Y%##XI!%)))"
+ "#9)!$)-$$Y-$\"I-!\"Y%##)1##Y5##9=!\"I5!\"Y1\"!Y-$\")5\"$I1Y)&$9I%\"I9$"
+ "#)5##YI##99!#)E##IE\"#IE%!YI!$9A$#9E!$9M!\"YM\"#9U!$)A$#YQ##9A!#9U!"
+ "$9I$#)U#$9]!#II\"$99%#9]##J!!%9Q)&9Y\"$Y]'$9]$\"I]#$:!$%YI!#9U!#Z)\""
+ "\"9]\"$J!%$JA!#J!!#YY\"#Z!%$:!!\"Z%$\"YY$!Z-!$Z)##J-!$IYJ!!%)]!%Y]'"
+ "$J!&$*%##J1!%*!#%J-%!*%!%)I%!*-$$I]\"#Y]\"#9U!$*-#\"J%!#J)!\"YY\"$*!#"
+ "$*!#$*%##J!!!YY!#J!!!YQ!$*%#$J!%$)]##J!$#J)!#)]#$)]#&:!IU!#YY\""
+ "%Z%+%9U\"$9U$#IU\"#IM%\"J%$#9Q#&II($9]'$9Q!$YM#$YU#$II%#9Q!#YE\"#9I!"
+ "$)=$$)A!$II)A&$YA$$IA\"\"I=!$YE&\"I1!#))##)9#\"))\"\"I5!\"Y-\"\"XY\"!Y-!"
+ "\"91##)-##))#\"Y-\"#)5##Y)##(Y!#9!!&Y!.\"X]\"\"I!!\"HY!#8]'$(Y'#XI'!8U%"
+ "#XQ&\"8Q!!H]!\"8Q!&(M!#H5#!HE!!8M%\"HA!#H9&\"H=\"#81%#X5'#(5!\"X-\"#8-\""
+ "$(-(\"8%!$(5H%&!H!#\"8!!$GY#$(!%#'U$\"WU#\"GA#\"GQ\"\"7M!#7M%\"7]!#7I%"
+ "!WU\"#'5'\"'E#!G=!\"'9\"#'9$\"'5#\"7-$#71%\"G5$\"'-!!G)!!G%!\"G%#\"FM#!FY!"
+ "\"'!##&Q$#&U'!FU!!&]!\"&Y\"!F]!!G!!\"'!#\"'-#!')#\"W)\"#7)#!G1#\"'1\"!G=!"
+ "!W9\"\"7M#\"'=#\"'Q#\"W=%#GM(\"GI#\"'E#\"WQ#!'Q!#'Q$!'E%\"7U!!'Y#\"W]#\"W]!"
+ "\"WU#!X%$\"8%!#X%'#81%%(-'#X1&\"81!$(5(%(=(=!\"H9!#(=##HA\"\"XQ\"%8=$"
+ "\"8E!!HM!\"8E!!89\"#(M#!XM!#(U##(Q#\"XU\"%8Y&%)!+!HY!#(E$$XU%%)!##Y1#"
+ "#)%#\"Y)\"\"X]\"!)1!#I5%$)9$\"Y1\"#Y9#!Y5!#YE%#Y5##I=%$9=%\"IM!#YQ)$)A#"
+ "#YE#%9Q)%9A\"!YA'#YI##YQ%$)U#$YA$#YM\"#YQ)%)=!'9M+$9Y!#9U!#IY!#)Y#"
+ "\"IM!!IY#%YU*#YY\"$*%'\"J!!#)]##I]!%9])#9Q!$*%#$Z!#$:!$'Z!%!J!##Z!\""
+ "#Z%J%!#Z%\"#J%!!Z%!%IM&$J1%#J!$\"J%!$*)#%:1!$J)\"#J1!$Z!\"#Z!\"$Z!#"
+ "#:1##I]!%Z)##J)!#Z)\"\"J!!%J)\"%Z-#$J%!#Z-\"$:-$#*5\"$:%$#J-!#I]!$*!'"
+ "%*%##J5!$:%$$:%$$*1#\"Z-!#)]##Z!\"$)]#$*%#$9U!$*5#$Z%&$)]#$)Y#$)]#"
+ "$I]%$)]#\"YU\"$9Y!$I]&%9Q(%*!!\"IQ!$IE%$9Q!%9Q($Z%#$9Q%%IQ##9I!#9I#"
+ "%II*#9=!$)I!$95%$9U!#Y5#$IA%%99##Y=#%9A#!9I)\"Y1\"$Y5*\"9M#\"I5!\")5%"
+ "#I5\"$I-'#)5#\"Y-\"#Y)&\"I%%%9!&$I) !!#Y!#&(Q'\"I!!#HU%#8U$#(M##8M$"
+ "\"8Q!#8U$#XI'\"XM\"#(I#!HI!\"XA#\"XE\"!HE!#(A$#(I#\"XA#!(9'#X5Q\"\"(1#"
+ "\"X1#!8-\"#H)%#H)%%'U\"!GI!#7Y\"\"G]\"\"W]#\"'Y%\"WU##7Q&!WE$\"7U#\"7E!$'M&"
+ "$7M&\"'M#\"'9\"!7A$#'5&\"G9\"\"71&\"W5+\"'1!!'-!\"G-\"!G-#!G)'\"'%!\"7%$#VY$"
+ "!&Q!\"W%#\"&U%\"F])!VU\"\"F]%!V]&$FU)!G%%#7)%!W1\"!G)!\"71#!G%'!W5\"\"G=#"
+ "\"G-$\"'E!!G9!\"'A#!WA\"\"'A!#GM$$'M!\"8%!#7Q(#GU&!GY!#'Y$!WU$\"7Q&$H!\""
+ "#(%$$X%#!X!!\"8)!!8-%#(5#\"89!!(5!\"X5##XI##(=#\"H=!#8A!$(=%\"XE#!(9#"
+ "\"XY%#(U##XM!\"X]\"$9!($(]!\"8M!\"HM!!HM#\")!##(]#\"I!!#Y%$$I!'!Y!!#I!%"
+ "\"I)!\"9-#$Y1!#I)\"\")=%$I1#\"Y5\"$)9!#95$%I-$#9A$#Y=#\"IE!$)I#\"I=!$9M$"
+ "\"Y=\"%)I%$9Q!#9Q!')I*\"YQ$\"9M&&)I\"#YQ\"\")Q\"$9I\"#I]!%)E$$YY#$)U#%)Y!"
+ "$)Y#%)I%#IY!$)]#%I]*$I]%$J%!$9]$#Z!\"#Y]\"#J)!$Z%Z%\"#Z)\"#YU\"%:)%"
+ "%*-#%:)($*-*#Z!\"#Z)\"$*)#!:)\"#J-!#Z-\"#Z-\"%*-'$:-!\"Z1!$:-!#Z1\"\"J-!"
+ "&*-'#*)\"%Z5-#J1!$:-#$:-!$*%##Z5\"$Z1J!!#J%!%Z-#!*-!\"*)%#Z1\"&:%%"
+ "%*)'!:-%#J)!&:5)!Z)!$Z%J)!#J!!%:%!#J%!#J=!#J%!$:!!#:5#$Z%&$:!$"
+ "$*%#$J!%#9U!#9]$$*!##IQ\"\"9I&$YU'%IY)A##IQ!$9]$%)U(#YM#&)]($)U#"
+ "#9U!%9=)\"I-!#YI#\"YQ\"$IE#!YE!#YI&\"9I#%YQ!#Y=#\")=\"\"Y=\"$)9!#)9#!)1!"
+ "#)-#$I9##I1%#)-##I-%#))#\"Y)\"\"I)!$9%%$I5I!%#(]##XQ'!Y%!!9-\"#X]&"
+ "\"XM\"#X]&$8I#%8M*#(M#\"HY!%(I#\"89#$8E(A#$(E$#H9#!H=+%HA##X1'$X5+"
+ "!H1#$(-%#GY#\"8)!#X-'\"8!!\"X!#\"7]!!G]!\"7Q!\"WU#\"GY\"\"7U$!'Q##7Q%%7I("
+ "!GM#\"WA#\"'Q\"\"7A##'9$\"7=!!GA!\"'9!\"'-!\"79$\"GA%\"71$\"6]$#&]\"#7!&\"&Y#"
+ "!FE!\"&M#!6Y\"#&Y#!F]!!F]!\"7!$!VQ\"!G!!#7)'\"'-#\"G1\"!'5$!G5#!G9!!WQ$"
+ "\"'=#\"GA##'9'\"GU\"\"GU$\"'I!!'M&\"'A!!WQ!#7U%\"W]##8!%!7U\"\"WU#\"X)#\"H-\""
+ "\"8!!!H-!\"(!##(5#\"X-##(5$#H5&\"HE!#(5&$HE*#8Q$#(I#\"8A!\"8E#!(A#$(U!"
+ "#HM&%(Q##(Q#\"8M##(U##(U#\"Y%#\"XE\"#XY&$))!#9%!#(U!!9)\"#XQ#$))$#9%$"
+ "\"I1!\"8]#$Y%'$)1$#95$#I5\"$I=Y9#\"IE!\"9A#%)M!$Y=#%)A(#9E!$9E%#9I!"
+ "!YE!#II!#9M!$YU M!$IQ\"$)U#$IQ%%*!$$IY%$IQ&$:!!%)Y'\"IY$#Y]\"!9]&"
+ "!9U\"$9U!#J!!%:!$$J!Z!\"%:%!\"IY$&J%&$J))%*5#$*%##Z1\"%Z)'$Z1&\"Z)\""
+ "#Z%\"!:-)#J-!')]&$:%$#J%!!:1\"#Z)\"#J-!!Z-!'J1*$*)#$Z1&$:!!$Z-#&:1%"
+ "$J5!$:1##J5!\"*5\"%Z1&$:1!#J1!#J-$&:--$:1$#J!!&*-!\"J!!!Z-!%J-\"#Z)\""
+ "%:%!#J9!%J-\"#Z-\"#Z!\"$:%$#Z)\"#YY\"$I]\"$:1##J)!$:)!#Z%\"!*!!#Z%\"$)U'"
+ "$YU#%)Q$#Z!\"#Z%&$J%%$)]##Y]\"$9Y$$)M##:!#$*!#%)Y+&)I\"#I]!%*)$#Y=\""
+ "%)Q!$9Y$$)A#$*)#$)Q##YI##IQ%#YE#$)E$%9M%$YE'#YE\"#9-!\"IA!$95(#Y5#"
+ "$)9!!Y1!\"I9!\"Y1\"#)=#!Y=!#)-##)%$$))$%9%*$)!!#Y-##I!%#)%##(]#$8U\""
+ "&)%*#XQ!\"8Y!\"(Q%#I)%!H]!#XE&\"I!!#XE&\"8E!#89!#(I$#89%#(A##(9!#XA!"
+ "#(5!\"X)#\"81!\"X-#!H1!#H%(\"X)#$X5%\"H%!$'U#\"8!!!GY!!X%'\"GY\"$'U#\"7U!"
+ "#WI%\"7I!\"GI#\"'9#\"GE%!G9!\"G=%\"'5\"\"W9(!G1!\"G1%\"7-$#'-%#'!'#W)##'!'"
+ "!G)!!&Q!\"F]#\"&U!\"7!\"\"6](\"'!#!W)\"!G1!\"'!!!'5#!71\"\"'5!!G9!\"G9\"#'-'"
+ "#G))!'=!\"GA$\"7QWE%\"WM#\"WQ##7E(\"WU!\"7U!#G]!!WQ$\"(!#\"H!!#(!$#G]!"
+ "\"8!!\"8M!\"X1#\"85+!X=&\"X=#\"X5\"$H9$\"XE\"\"XI\"#(5$#(E##XM$\"HI!$(I%#8M$"
+ "#8E$#)!#\"(I\"\"8Q#$(Y(!HY#\"HY$#X]##)!'$XU!$8]\"!Y)!#I%\"#I)%#)-#$)1!"
+ "#Y1##I5%$)5'\"I5$!9E\"#)5#\"Y-($)5!$9=\"#)M#\"9=#$YE&&9A-%YE!!IE)#9A!"
+ "#IM\"$9E\"#YA##YQ\"#YE#%YM$$)U#$)U#$9U!#IY!#YM%$:%$%Y]-#I]!%Y]#%YU("
+ "$)]#&*!!%:!!%:-(#J)!#I]!'*-!#Z9\"$:)$$J1%&J-'%J%&$9]!#J1!&*-+$*%#"
+ "#Z1%$:)$$:1##J1!$J1!\"Z1!$Z=:1##Z1\"%J1\"$J5%#J1!#J9!$:E##Z5\"%*5'"
+ "#J1!$*5\"%Z5&!:5\"#J5!#J5!#*9\"$:5#%*5##J-!!ZI!%:5(#J9!$Z1\"\"J1##Z-\""
+ "#J1!$Z1\"#J%!%*1##Z5\"\"J1!#Z-\"$:-!#J-!$*-'#Z5\"#Z-\"$*-#%:)!#I]!$Z%\""
+ "\"J)!#J-!$J5!&Z)+#:-#$J-\"\"J%!':-*$)]##YQ\"#J!!\"YY$$IY%$*!##9U!%IQ'"
+ "%9Q)#9Q!%I9!#YQ##IE(!YY$#9I!&)I,$9M!#YE\"!YI!#9E!%I1'&)EI=!#Y=#"
+ "!I9)#95$\")5\"%9-'#Y9#$9-%#)5#\"I-!#)-##))#!Y-$%)%)%I%!#I-\"\"I!!\"Y1%"
+ "\"XU\"\"HQ!$9!#\"HU!!8U\"#8U$#(U#\"XM\"!(E!#(I#$8E)#HE#\"HE!\"85!#H=\"\"X9#"
+ "!()!\"X5\"\"8)!!8-\"#H-#\"81!#8)%\"X%\"\"GY\"\"7]!\"8%##'Y$\"'Y#!W]!\"W]#\"WQ#"
+ "\"WQ##GQ!!GE#\"G=\"!7Y%\"GE%\"W=#\"'9\"#W1%!W9&\"G9%#'1&!W5\"\"7%\"#'!'\"G)%"
+ "!FI!!VY\"!G!!\"&Y!!W!$!G%!!G)!!'9#\"G-%\"G1#!W1\"!W5$!W9!\"'I!!G1!#79'"
+ "\"WA%\"'E##GI'A$\"7M!\"GQ\"#'Q$\"WU#\"WY##7],#(!$#X!!#8!\"#(!$\"8)!#(9!"
+ "\"8)!\"X-\"\"8-!\"(5%#X-$\"X-\"$HA$$H-$#8A%!8=\"\"(=(#HM)#8Q$\"X]\"#XU##(Q!"
+ "#(Q##(]##XY#\"8]!$XI%$(]'#H]%$X]$'9%/#I!#\"I)!\"I)!!95\"#9-!$)1'\"I5!"
+ "!Y9!#95$$9)%$99\"!Y1$\"YE\"$)I$$95\"$)A$$YA$$)E#&9E##9I$$9Q!#9M!%)E("
+ "#YQ\"&)Y,%)Q$$YY&$IU%%)I($IY%!YY!$IY(%I]*$IY)$I]\"$I]\"\"9Q#$*!#&*)!"
+ "%J%\"$:%$%J)\"$J)%%*5'%:%!#Z%\"#J)!#J5!$:-#!*-!#Z-\"$*5\"%:1)#JA!\"J1!"
+ "'J-'%J9\"#JA!#J9!$J)%$J5!#)]#%:5!$*A#%Z=#$J5!\"Z5!%J9)$JE%#JA!#J9!"
+ "$*=##*9\"\"Z%\"#Z9\"\"*1\"#J9!\"Z9!%*=#\"*1\"#JA!%:E(&*9+\"Z5!$:)!\"J%!%:1!"
+ "!:-\"#J1!!9Y%#J)!#Z5!#Z9!!Z!!#Z%\"$J1($*5##Z!\"\"Z1!!*-%%:)!#J-%!:-\""
+ "%Z5#%*)##J)!!Z)!#J-!#Z-\"#J%!$J%)#I]!#Z!\"':)&%J))$I]\"$Z!##9Y'$)Y#"
+ "#9M!#YM\"#9U!#I]!#IQ+$9M%#)Q\"%)Q!$)I##IE!$II##9Q!!IA)%IE$!)A!&)-#"
+ "#Y9#!)=!!)1$\"I-!!)1!#)-#\"Y5\"$Y5$\"Y1\"#)-#%)!\"#Y)&$Y%+$)9!\"I%!#9)!"
+ "\"I)!\"8Y!$(]$#8]!#(I$#8]$#HU%\"HQ!#(M!\"8M##HI%\"XE\"!HA!\"HE!#HE\"%8=%"
+ "\"85!!H=!!(5!#85\"$H1*#H-#$(-##81\"\"H!\"$H%(\"8)!#(!$\"7]!$H!*\"8!!\"7U!"
+ "#GMWU'#8%$!GI!\"GI\"\"'E!!7A\"\"GA.\"G-'\"'9\"\"G9\"$79$\"'=\"\"71$\"79#\"7!&"
+ "\"&Y!\"&Y#!&U!\"W!(\"&Y!\"'%#!'1!!W-!$'-(\"G)'\"G9$!79\"!W=\"\"7I$#'A%\"'A#"
+ "!GA!\"'9!#7I%\"7Q!\"GI#$GQ\"%'Y'$'Q!$7Y'\"GQ\"$7]$#W]%!H1!\"8%!#(%$\"(-\""
+ "#8-%#(5!\"X5#\"85!\"8=!\"X=##(9!\"XA#\"XE\"\"89!\"(I\"\"8A!#(I##HM%!XU$$(U%"
+ "\"8Q!$I!'#HU%#(U#\"I!!$(U'&)5&\"H]!$)!!!Y)!\"9-##I-%$9-+#9-!\"I-!!Y9$"
+ "#)5##99$$99%#)1##)A##9A!$IA&\")E\"%IE*#9M!$IU\"#YM#$YM&$YU'$9Q%#99!"
+ "$)Q$#9Q!$IE&%9U%#)Y\"%)U!%IY'!YM!$9]!$*!#%:)($*1#$*1#$*%#%:%(#J1!"
+ "$Z%##J)!#Z)&%:-!%YY$#Z-\"%:-!%*='!Z5!%*5'\":5\"%:5+(*9!#J5!#J)!#J1!"
+ "$*AJA!#J9!#Z9\"$JA!#Z5\"':1\"\"JI$$Z9\"!*9$$*M\"#ZA%\":E\"#ZA\"$J%&$J=%"
+ "$:=$&*E(#J=!\"Z=!#J9%\"Z=!&:=,#J9%$ZA\"\"ZU!#Z9\"%JM)\":5*$J9!%:=!$JA!"
+ "$J9!%:5(\":5\"!*%!%ZM\"#J5!$J5!#:5##J5!$Z5\"#Z-\"#J1!\"J1!!Z9!!*5!\"Z%!"
+ "#Z-\"#J1%\"Z-!#J-!#Z)\"&Z%!$IU\"$J)\"$J-!%*)'#Z%\"$J!*!&$)U#%9Y%#I]!"
+ "$)]#\"IY!!)Y!#9Q!$9]$%)U!%IQ##YE#$)E#$IM\"\"IM!#9M$$)9!$)E#\"9E#$IA#"
+ "#IA!#YE#$I=c$#9)$#)9)#I-(\"Y5\"%91&\"Y=+\"I-!\"I!!#9%%\"Y!#$Y%$#))#"
+ "$I)&\"H]!\"8]!$)%!!HQ!\"8Q!#(]##(Q#\"HQ!#(A!\"X=#\"8I!#HI%#8E%$(A($8A)"
+ "\"8A!\"X1#$H5*#(1$\"81!#81%#81\"\"H)%#H)##8%%$H%'#H!H!$#X%'\"GM\"\"WU!"
+ "#WQ'\"GQ\"\"WQ%#7E%!'Q#\"GI\"#7A%!'A!#'E'!G%!\"WM&\"'-\"\"W5%\"'1#\"'1'!W-!"
+ "\"'!#\"V]&\"G%\"!W)\"\"7)$\"7%(\"W-(\"71#!V]\"!G-#\"75(#W9\"#7=&\"7=$\"7A$!G9!"
+ "!GI!#7M%#WM'\"WU#\"WQ#\"7Y$#7Y%\"7Y!#'Q\"$WU!%!H!!\"8)!#85%$8-!\"85!"
+ "\"81!\"X5\"\"85!!(9!#81\"\"XA#$H9%!HA&\"8E!$XI%#(I!#(M&!Y!$!HQ&\"(Q%!HE&"
+ "!HY!$8Y\"\"8]!\"Y%#$)1!#9%%#I!#\"I%!#))#\")-(#Y1##)1##)-#$I5#\"Y1\"\"Y%\""
+ "%)9(\"Y=\"#9M$$)A$#I=!#9A!#YE##IE$$YI'%99)#IE!$9E$#9Q$%)Q!$)I!$YI#"
+ "%YU*#J!!$)Y##9]$$IY&!YM!%YU#\"Y]$%Z5\"\"Z!%\"J!!&J)*#Z)\"#J1!#Z)\"$*)#"
+ "$Z1J)!#J-!\"*-\"\"J)!%*1#$:!!#*9\"$*5#&:9($J5!$:E#$J5!#Z)\"$*9##ZA!"
+ "#*=\"#ZE\"$J9!#J=!#JA!#JA!$Z=%#ZI\"%*9'%:=$$:9#$J=!$*A#$ZA&&Z5#&:E!"
+ "%*A'!:A\"$JE$$JI$$*A#(:9.%ZQ%$JQ!&*=($JA$&Z=.\"Z9!#J9!#Z=\"#Z=\"#Z9\""
+ "#Z=\"%ZE\"#JA!$J-\"$*=#%:=($*5\"#J=!#J1(#JE!#J=!#*9\"#Z5!$:5$#ZA!\"Z-!"
+ "$:9#\"J1!#:-##JE!#J1!#*-\"%J))%:)!$IQ&$J1\"%*1+%J!\"#J%$%:!\"$9Y$$IY%"
+ "\")Q\"$9]!$Z%\"#)Y-$)Y#$YM'$)]#$9Q$$IU\"#YQ#$)Q$\"J)!#9Q!#9A!$)I$$IA&"
+ "$I9#$9=%$I=#$)9$!I5#$9=%#9-$%)A\"\"I5!#Y5&%)1(#9)$\"I-!\"9-##H]\"\"I!!"
+ "#9)!#)-##I!\"#XY!%(M)#8Y!!8U\"#(]#\"9!#\"XQ\"%XE##8M$#(M##XM!!HI&$8=("
+ "!HA!\"X=#\"8=##(5#!(9$#H5&$(%(\"WY!#X-$#(-$\"X)#!H%!!H!!$'Y!\"8!!\"7Y!"
+ "#'E$\"WU!#']$#7I##WM\"\"7Q!\"WI#\"'E#\"7I)!G=(\"W9!\"G5%\"79&\"WI#\"')\"!G1!"
+ "!6]\"\"6]&\"'%#!7!\"#'))\"W-%*\"'1!\"'5##W1*!W9!!W=!\"GA%\"'9\"\"GE\"!GM!"
+ "$'Y&\"WY#\"GI#$'M#\"7U!\"WY%$GM#\"'Y%#GY$\"WY#\"7]##X=$!(%!#()!\"81!#(1#"
+ "#H-##H5#!HA&\"8E!\"X=##(A##XE!%8E$!(E!\"XI\"!XI!#(I$\"HQ!#XU!#(I#%(Y\""
+ "!HU!#H]\"\"Y!##9-!\")!#&)%'#9)'!Y)$#9-!#9-!$9-%$Y=*#91$%I9$$95\"\"I9!"
+ "#9=$#Y=#%I9.$9E$\"IM!#YQ\"#YI##9=!$9M!#YM#%IQ*$YU##YI#$YY'$)U#$YY'"
+ "$)Y##YY\"#I]!#YE#&:!*\"J!$$Z!'$*%##J%!%J-\"$J-\"\"Z)%#*%#$J-%#*-\"$J-\""
+ "$*)#$:-#\"J1!#Z5\"$J9%#Z)\"%J5)#J5!#J9!&:9%#:5#\"*=\"%J1\"#J9!$JA!!:E\""
+ "$Z1Z=\"!Z%!#Z5\"$JE!&JA-#JA!\"ZI!#JA!#JA!$ZA\"$*=)#Z=\"%*I#$*Q\"%JE("
+ "!ZM$#ZI\"$ZI&\"ZE!#*A\"#ZQ!%ZE\"\"ZM!#ZI\"#*A\"#J=!$ZM!#ZA!#ZA!$JQ!$JQ%"
+ "#JA!#J=!$*A##ZA!#J5!&JE)#J=!$JA!#ZE\"#J1!#J9!$:!$%:E$#J9!\"Z9!#Z5!"
+ "#Z-\"!:%\"%:9!$J1\"\"Z1!$*!##Z-\"!:-%#Z-\"$:-!%Z-&&:))$:)$$:%$%*!($9]$"
+ "#)]\"&J!#%J!&$J-%$*)#$9Y!$9Y$%YM!$)U##YU\"\")Q\"!9M%#9M!$)]#%IA'#9M-"
+ "#YM\"\"9I#$YU#%)=(#9E!#Y=&\"9=##)A##9A!!9-\"#)5#\"I!!!91%\"I-!$9E%!Y)$"
+ "&)9\"#HQ\"#I!#$9!##)!##(M##9!*$(I'#I-%$(M%\"XU\"#(U&!(=!\"HQ!!8E%$(E%"
+ "!HM#!HI#\"X=\"\"X=\"\"(!##85%$8=##(=!#H-#!(9!\"H)\"\"X!!#(%$!X!$$H!%\"W]#"
+ "\"7U!\"WY!!GU!\"7Y!\"WU#!WE$\"'I!\"GE\"!GQ%\"G1$!GA!!'A$\"7M!!G)#\"W1(!G1!"
+ "\"'!%!6]%\"'%#!W)\"\"G5\"!G-#!W-!#75%#'5%\"G5%!W=$\"GA%\"'E#!'A$#'E$\"7]!"
+ "!GM#!W]\"#'E$\"WU##WY\"#W]'#7M#\"X%#$(%(#X1&!X)\"#H)#\"89!$H1'\"X)#!HA!"
+ "#(9$\"8=!$8=##8-%#H=%\"XE\"\"8E!#HI\"\"HI!$XM+$8Q)\"HI!#HU%#HU%$(Y'#I)%"
+ "\"I!!#I)\"#9)!\"I)!#9!!$9)+\"I1!#Y%$#Y)'#Y)#\"Y5\"#Y%'#Y5#\"I9!\")A%$9=!"
+ "$)E#$)I!\"9E#$)A#$)A!%IA*%YI!#9=!#IE\"#IY!!YU!$9M!$*!##YY\"#Z%\"#9Q!"
+ "\"IY!$YU#$:!$$*!##)U#\"Z%!%I]*$*)##J-!$J%!!J-#\"Z9!%JA%$9]!#Z!\"$J1!"
+ "#J1!#Z1\"&JE)%*9#%*I'#JA!$:9$!Z-!&J9\"#Z9\"#JI!#J=!$:E$#J5!\"ZA!#*A\""
+ "#ZA\"#ZQ!#JA!$:)$\"J1!#ZI\"#JE!$JE!$ZEJE!#JE$\"ZE!$JI$':E%$*I\"%:U'"
+ "$ZI&%*I#\"*Q\"#*]\"%:I$%*Q'$J=!#ZI\"#JM!%JE)$ZE\"#JE!\"ZE!$:Q##JA!\"ZI!"
+ "#*M\"#JE!$ZE\"%*M\"#J=!%:A(#JE!#*=\"&:E!$*=\"$:=##JA!#Z=\"%*9JE!#*9\""
+ "!Z9!!ZA!#J5!$Z-&\"ZE!&*)(\":1##J9!!:9\"%:1!#Z)\"$Z!\"#*-\"%:)!#J1!!YU!"
+ "#J%!#J%!\"J!!$Z!'$*%#%9U)$Y] ]##Y]\"#IY$\"IU#$IU%#IQ$#IU!#)Q#))U,"
+ "$9I\"%YI+$9A$\"I5!\"IA!#II!#9A!#)=##)A#\"YA\"\"I9!$9)(\"I5!\"Y1\"%Y=,!9-\""
+ "!Y9!#HQ%#91!#Y%##Y-&\"9%#$(U$#X]##X](Q#!8Q\"$8Q\"\"HQ!\"XQ\"$XI+\"HM!"
+ "\"XE%\"89!!8E%\"X1#$8EH9&\"HI!\"(5\"#X1'#(=!!X-!\"8)!$85)\"H%!\"H!'!()!"
+ "$7M$\"W]##7U%#(%&\"WQ!$WQ+#GM'E$#GE&\"'A#!7A$\"GA#!GA!!75'\"G1)\"'E%"
+ "!G)!#G%\"#W%#\"71#!G-!\"71$\"W5#\"'5\"\"'I)\"'E#\"WA!!G5!!GM!\"'E!#7A!!GQ!"
+ "\"WU!\"GU\"\"7U#!7]$!GM%\"8!$\"GU\"\"X)%#X%$!H)#$89(#HE\"\"X5\"#85'\"X5#\"89!"
+ "\"(1##8I$\"XA\"\"(I%$8M#\"(A\"#HM##(M#!XM$#(A$\"8U!#95!#I%%!HY!\"X]\"#XY&"
+ "$HQ##I!\"'9%%#I%\"#9-!#91!!Y)!$)1'!I=##)5##95!%9A)5#$Y9'%9E\"\"I=!"
+ "\"YU$\"IE$#)9#$9U$#Y9##9Q'$IM&$IQ\"#9Q!#9U!%IY##9U!$)Y#\"IY!$Y]'#*!#"
+ "\"J%!$*!#%)]!$:!'(:%+\"Z)!#J)!#J)!$9Y!$J-%$J-!%J%\"$J5%#J1!$:5##J5!"
+ "\"Z9%\"ZE!&:9,$J5%$J=!!Z9!$*9\"\"ZE!$*9\"$:I$#ZA\"#ZI\"#ZA\"$ZE%$ZE&$*E\""
+ "%:E!#J=!!:E&\"Z=!\"ZI!#JI!$ZI%$:I##ZM!#JE!\"Z]$&:Y,#:A#$ZI!$JI!#JA!"
+ "#JE!$Z9&!ZA!!*Q!!ZI!%*9ZU!#ZQ!#:A##ZE!&*E($*9##:U\"#ZM!%:I'&JI!"
+ "$JE!':E1#:U#$*E\"'*U#\"Z5%#JM!$J=!#JE!#J=!#J=!\"Z=!$ZI\"#JA!#:=&\"Z-!"
+ "\"ZE!$*I\"#JE!#J5!#Z9!#Z9\"$J5%#Z5\"#J!!$JI$#J1!\"*1%#J-!#J-!$*-#!:-\""
+ "#J1!#J%!#J%!&:-)#J!!$*!##J!!$9Q!$I]Y]\"\"IY!%)Y!#)]#$)Y##9Q!$YQ#"
+ "$)U#$)I#$9A$#IU\"#YE\"$9I!#Y=#&)A,$)A$#)M#\"IE!\")=\"!Y)!%Y1+\"I)!\")9\""
+ "\"I-!#Y5&$)-$\"8U!#9!!#(Q!%91)!)!!$(]$\"(M\"#I!)\"HU$$HM*#(E$\"8]!!8M\""
+ "!XI!\"8Q!%8E'#8I$%XE#\"81!\"85!\"89$\"X)\"!(1!$X5%#85%!H9(\"H-\"#X%'!G]!"
+ "%']'#W]'!GU#$'Y(#7Q%\"7Q!\"'Q#\"7M!#'I%#7I%\"GA$\"GE%!W=$!G=#!'-#\"G5%"
+ "!W%\"!W%\"!7)\"!G)#\"W5%#'5$#G5&!'=!!G9!\"'=#!GI!\"'E##'A$\"'E!\"7U!#7A#"
+ "\"7Q!!GU!\"7Y!$GE#\"WY##GU&!G]!\"G]\"#(%$\"8)#$7])#(I$\"81!#8A\"#(A#$H9*"
+ "#X-'!H=!#8A%#85\"!HA!!8I\"$8Q(\"(M\"\"8Q!$HM)\"XU\"#XY#\"XY\"#(]#\"8]!$I)'"
+ "%Y! %!\")!##))#\"I-!\"Y5\"$I)#\"I5!$I-)=##Y9IQ$$Y9$!YA!#9E!#YQ#"
+ "$IE&$)E$#IE\"#9U!#9M!&)Q(&9M.$)U#$IQ&$9Y$%)]!&9Y&%)]!$I]%%:!$%Z%*"
+ "$*)#$:1!#J1!#J)!&J-'\"I]!%J5%'Z-('*9%#J1!$:1#%:=!#Z=!\"J5##J9!#Z-\""
+ "\"*9\"#*5\"#ZE\"#*=\"%*9&%JA%&:A!#JI!#Z9!%:A!#JM!#ZE!%ZE*$ZE\"#ZE\"%*I#"
+ "#*I\"$:I#&:E$%JQ!':9\"#JM!$:E#%*MJM!#JA!%JI)#Z]!$J]$%*Q*$JM$#JA!"
+ "\"ZM!#ZM!(:M*#:M\"$:M$#:I#%JI!#ZY!#JM!#JM!'JIJM!$ZIZE\"$JI$#JM!"
+ "#JM!#JI!$JI!#JE!%JY(%*E'$ZA\"%ZM*#JE!\"*A!\"*I\"%*A+#J=!&*9+$:A##ZA!"
+ "#:A##JE!':Q(#J1!%:E!#Z-\"$Z9&&*1!#Z9\"\"Z5!%J1-#J1!\"J)!#I]!#J%!$J-%"
+ "!Z5!#*!##J)!%Z9*\"9]&$*!'#Z%%$*!#%IY'$)Q$$IY%&IY$$IY%!Z!!#YQ##YQ#"
+ "\"II$$9M!$9M(#9Q!$IM%#YE\"!9Q\"%9E%#9A!&IE($)1!#9I#\"IE!#)9#$)='#)5#"
+ "$I9)\"Y1\"&9-*#Y%$#9%%\"I%!$9%##(Y!!)%$#(Y##XU'#Y!&\"8Y!\"8M!#8U$!HM!"
+ "$(M'\"XA#\"XU\"\"8I#\"8A!\"(5\"\"XI\"\"H9\"\"X=\"\"H)\"\"(1\"!X%'\"8-!$()(\"7]!#7Y\""
+ "#H)%$(%##H%##()$#G]!\"7Y!\"G]\"\"7Q!\"'Q#\"WI!#7Q'\"'E#\"G=%\"'A#\"G9\"!'1%"
+ "\"G-%\"'%#\"G-$!G-!\"G1$\"WM&!GE!!7A\"#'5$!WE!!WM!!7I\"\"7I!#GY!$'I)\"GA\""
+ "\"H%\"\"G]%\"W]#\"G]\"#GY##H!&%8%#\"8%!\"(-#$(9%\"81!\"X%\"#(9##X='\"8)!\"8=!"
+ "!8A\"$8A(\"81!#(I#\"(M\"#HM\"\"XU\"%8U*#8]!$8U%\"8Y#%I%+\"8]#\"HY$#9-!\"8]!"
+ "$)%%$Y)+#99$#Y)'#91!#)9#!Y5!#99$#9Q#$)M&\"I5$#9E!&)A%$Y=!#9A!$YM#"
+ "%)9(#9M!\"YI!$IU%#YQ#%*!#!YU$$)Y##IY!#IU\"#YQ#%)]'$*%#%9U)&*%!&J%#"
+ "#J%!$:%$$Z9\"$:%$(Z-&$:-##J1!#*1\"$J5!#Z9\"$J9!#ZE\"#J5!#Z9!$*=&!*=!"
+ "#J9!&*-+#JA!%:1(%JU!$JA!#Z=\"#JE!#JE!$*5##JI!#JE!#ZI!$JM%$*U\"#JM!"
+ "$:E$$JM!\"ZM!\"ZM!#J=!#ZQ!%JQ(#ZQ!#ZQ!$JQ!#ZQ!$ZI%#JM!$:U##ZY!!ZQ!"
+ "#JM!&:Q($JE%\"ZQ!&JU%\"*Q\"\":Q\"%*I#&*Q#!Z]!$:Q#%JQ)$+)\"$*Q)#ZU!\"*Q\""
+ "$:Q#%JM)$JM!$*U\"$[!&':M!%JQ!&ZM+%ZM&&:I%#ZE\"$J5!#ZY!%:E!\"Z=!\"ZE!"
+ "$*M\"$ZA%\"*A!%:A($*9\"#J9!!:=%#J-!#JE!%:9%#Z-\"$J5!$J=!#Z)\"#J=!\"Z)\""
+ "%*1''*9)#Z9!$:-$\"Z!\"\"Z)!$*%#!Z)!%:)($*!#%Z!'#J!!$IU%$YU'!Z%!#9U!"
+ "\"IU!%)Q'\"9Q##YQ##9I!#9M!$IA##IQ!$)E&!)E!#Y9##Y=#\"IM!\"I-!!I5&$Y5$"
+ "#9A!#9=*%I1$#)-##91!#91!$9!%#9!!#9!!!Y!!#8]!\"(U\"\"I!!#(Y#\"8I#\"XQ\""
+ "!(9$\"HI!\"XM\"#(I#\"HE$#(M##(=$!HE!#X1%#89%#(=!!()!$HA*#()'\"81!$(%&"
+ "\"X%!#']&\"8!!#8!$#GY$#'Y$!GU#\"GQ%\"7Q!#7M#$7I'\"'E\"!'Q#!7A%\"75#\"'E#"
+ "#')%!'-!#'5'\"W5&!G5&\"75$\"7=$\"'=#!GM!\"WE%\"'E#\"WE##7Y%\"GI#\"GQ\"#7Y#"
+ "\"X%##GY!\"7]!\"H%$$8%%\"\"WY#\"H)!!X-!#H1&\"H1\"\"89!%89%\"85!\"HQ$#H=\""
+ "\"8E!!HE&$HI'\"XE#!(A!\"XE#\"HQ'\"8U!#XUY$#HI#\")!(%9%,$8]%#9%!!)-!"
+ "#))&!Y9!\"I-!$Y)(\"I!!$I5#\")5\"\"I9!!9I%$Y=!#I9\"$)I$#YE%&)E)$9I%#9I!"
+ "$IM%$*)##J!!%YQ'#*!&$IU%%9Y(%IY\"\"I]!#I]!#J%!$I]\"#J)!%:1($Z!&%:%!"
+ "%)]!#J-%%J-\"%:1(%*=+#J1!#Z)\"#Z5!$J9!#JA!#J5!#J5!#*5\"&*A+#ZA%%*A&"
+ "$Z-\"$Z9JA!$JI(%:E!#JE!#Z9!#ZI\"$JM!\"ZI!!*M!#JI!\"ZM!#ZU!\"*M\"%Z])"
+ "&:I!$JM!%JM!$*Q\"#JA!%*U\"#ZQ!!ZM!#Z]!#ZU!#ZU!\"ZU!**U)$*]ZY!\"[!!"
+ "%JQ!$[!!#ZU!#JI!%ZU)#JI!$J]!$ZQ%#ZU!#[)!'*U#$JI!$*]\"$Z]%%+)\"\"[!!"
+ "$JU!#JM!%*M\"%:Q$!*Q$%JQ!#ZU!#Z]!#:M##JM!#JM$&ZU\"$ZM\"!:Q\"#ZE!#JI!"
+ "%*I\"&:A,$J9!#JI!$Z=\"$*=#$JQ!\"ZA!#J5!#*=\"%Z1J9!$J9!#Z9%!*5!#J5!"
+ "#J%!#J=!#*9\"#JA!#J-!%*1'%Z)+#Z-\"\"J!!%:%(#:%##Y]\"$*!#!)]!%:%!%9Y,"
+ "#IU!#IU\"$)]#%9U%#9U!&IM$\"YM\"$9I$$YI&&Y9/#IE(#9A!$IA%%9=%\"I=!!I=#"
+ "\"I1!\"(]%$9-(#9A$#9)!\"I-!$))%#))#%I%$%)!%\"8]#$X]$\"Y%##)%##))##8Y$"
+ "$(]$%(M##8M$\"H-*!HQ!\"XI\"#(A##8A%%H=(E!\"8M#\"8=!\"X1\"\"X9#\"8)!\"8)!"
+ "\"X=%$()(\"X!#$8%)#']$\"H!!\"WQ#!'M!\"7Q!\"GM\"\"GY\"#7I%#7I%!W1\"!GE%!WA&"
+ "!G-!\"7=#\"G1$#'9'#'5\"\"'5#!W9&\"79#\"W1&$7E$\"GM\"#']$#WA#!GU##7Y#$8)&"
+ "$'Y#\"G]!\"W]##(!$\"(!#\"8)!\"H)!\"X-#\"X-#$(9%#(9!#H1!#X5&&(=%%(E##(A$"
+ "!HE#!XI$#(M!#8M!\"XE#$(Q!#(U#%8Q$#(Y!#(]##HU\"#XU(]!#I5\"\"I1!\"I5!"
+ "\"I)!#))##9-$$Y1'!)1$#I=%\"I9!#9A!%Y=(%)E!#)A#\"IE!$)E#\"IA!$9U!#YM\""
+ "%YM$#YM#$IU\"!9Q\"$)U#$*!#$:!!&)]$#Z!\"\"J%!\"Z%\"%Z%'%*%'$J-\"#Z!\"#J-!"
+ "!Z-!#*9\"'*1%#J1!#J5!$J5!!Z1!$Z9\"$:9##J=!$Z5\"#Z=!#J=!%:E!#JA!#Z=\""
+ "&:I,\"JM#\"ZE!$JM$!ZY!%*I\"$:Y#%ZQ&$ZM\"$*U\"#:Q##;%ZQ!#ZQ!$J]!$*Y\""
+ "%*I\"#:U#$JU$#*]\"%:U$$J]!#ZU!\"ZU%#[)!#[%!$*U\"$ZY%$*Y\"$*Y\"#[)!$JU$"
+ "$;%\"\"Z]!&[%\"\"JY#\"[!!$ZU%(J].#ZU!#*]\"%JY)\"*Y\"\"ZM!$ZY)\"ZQ!$ZY%$:Q#"
+ "#ZU!$JQ!#ZI!$+!\"$*U\"#JM!$*U\"\":]\"#*Q\"$*M\"!ZM!#ZQ!#:]\"%ZE*$JA%%ZU)"
+ "$:I#$*I\"$J9%(JI#\"*E!#ZA\"#JE!$JM!$*A\"\"JM#%JA)#ZA%#ZQ!\"*9!#:5##Z=\""
+ "\"Z5!&:5!#J9!$*%##J)!%J-\"%J5\"\"J%!%:-!$:1!$:)!#*%#%J!*$:!!#J%!&9Y&"
+ "%YY$$)Y#$)Y##IU!#YU\"#YQ#%9U%#9U!#9A!#YI##)M#$IU%$YI'$)A!$)=$#)5#"
+ "#I=!#9=$\"Y=\"!Y5$%Y5%\"9-##9!*\"H]!#Y9##)%##Y-#%Y1($)%%$(]'!HY!#(E!"
+ "#XU##8Q$\"8Q+#8M$#HQ\"#(I#\"HU$%(E#\"XA\"!(I!\"85!\"8=#\"H=!\"8=#\"8-!\"X%#"
+ "!H)!\"(!%#8%$#(!$\"8)!\"(%%#WY$!7U\"!GQ#$7M'\"7Q$\"GM%#7M&!GE!\"'9##GI$"
+ "\"7=$#'-'!W1!!79\"\"G1'\"7=#!WA$#7A##'A'#'E$\"WQ##'E'\"WQ&\"GU\"#GU!\"W]#"
+ "#']$!GU!#H!&$(%(#H)!$8%)\"X)##(A$#(1 $\"(9\"$(=!$XA(I##(A$#XI!"
+ "!XI$#HI#\"8Y!\"8M##XQ(U##(U!\"XY\"#H]%$I)##9!!!8Y\"%I!(\"I)!\"I)!$Y1$"
+ "$H]#$)5'\"I1$#I1%$I9 I##I1%#IA%#)A##IA\"#9E!$)Y##)U\"\"IU!#YQ#$9Q!"
+ "#YE%$)U#$IQ\"$J! Q!#9]'%:!\"\"IU!#J)!$J%)$*%#%9])$J)%&*-($Z-&\"J-!"
+ "#Z-\"'Z1)$J5!$J9!%*A#$J9!$J9!#J)!#J5$#J=!%:5(#JA!%J9\"%JE(#JM!#ZA!"
+ "#J9!&ZM\"\"ZI!%*Q\"#JE!#JM!&ZI\"$JQ$!K!#'+!#![!$$JU$#ZQ!#[%!#[)!#JI!"
+ "%:M(#[)!$[%%#[-!#ZY!#[!!$*Y\"$[)!$ZU%$J]$#Z]!\"*]!$:]*$[%!#[-!#ZQ!"
+ "\"ZM!$:M$%J]%&;!#$[%!#;!#&ZY.#JM!#*]\"';!,$*]\"#Z]$#Z]!\"+!\"#ZY!%Z]\""
+ "%ZU\"$*U\"'*Q+#*Q\"#JE!%K)(#*Y\"$J]!%*U'$JE$$JM!&J]!#ZQ!#J9!!ZY!$JQ$"
+ "%ZM\"$:M$\"JM$%ZE\"$:I$$:I$#J=!#J=!\"*E%$:E##JM!$JM!$*I\"#*AJ1!$:=$"
+ "#*9\"#J9!\"J9#%:5!$JA$$J!\"%J1\"#Z-\"%J5)$:-!#J)!#J-!#Z%\"#J!!'*!0&J-\""
+ "#IU\"#J)%#IY+$IY%#YQ##J)!$9Y!#9Q!#9M!#)M#%YI(%I5!#YA#$9E(#9I!$)A#"
+ "#)A#!Y9!&99*%)5%!Y5$$Y-'\"I5!#)%#!Y1!\"I1!$9%&$(]$\"8Y!\"Y)\"\"8U##(I'"
+ "!8M($(U$#(=$\"HQ!$(E(\"8I#\"8I!#HE##(=$\"HE$\"8E!$X5,#8=%$H5\"\"8-!$(-#"
+ "#8-%!(-!\"(5'#X%'\"8!!\"8-!\"H!!\"WY!$'Y)#7]%\"7Q!\"7M!\"7M!\"7I##'E+!G=!"
+ "\"7)$\"G-$\"'1\"!'1$\"'5%#79!\"'I##'E'!7U\"$7E*\"WM##7Q#\"GY\"!7Q\"!GM!\"X!#"
+ "$H!'$X!)#(%!\"8-!\"8%!#85\"\"H1!\"81$\"(9\"$81!#(1!#8=$!HI!$8I&\"(E\"\"8I!"
+ "!HE!$8M&\"(Q\"\"XE\"#)!$\"X]\"$(Y!#H]%$(]*#H]\"#Y)#$))$#I-\"\"9-##I)&$)!("
+ "!)1$#)5#$95%!Y=!!Y=!\"I=!$YAIA\"$IA A!#YI\"#YY\"%IQ'%)Q$#IU\"%)Y$"
+ "$YU'#IM\"#J!!\"I]$$Y]&$*!#$9]$!J%#$)Y#$:)!&*!(#Z-\"\"J!!\"Z9!$:%$$:5$"
+ "#J1!#J9!%J-\"#J=!#J9!\"J=##JE!#J5!%ZE)&:M(\"ZM!$ZM%#ZE\"$JQ(#ZI!#ZU!"
+ "%JM!&:A$&*=+%*M&&*I'$ZQ%#ZY!#[!!$JU!$+%\"$:U$#ZU!$ZM\"$:Y'#Z]!&*Y*"
+ "$Z]%$K%(\"ZY!!Z]!#;%#%K!)#*]!#Z]!%;)+#[!!#[%!$Z]%#[%!$*U\"$ZY%%;!'"
+ "&K%!!+!$$K!$#*Y%\"[!!\"[1!#[!!#+)&$:Y*$+-\"$+!\"#ZY!#[9!$;!##[!!#[)!"
+ "%K)$$ZU%\"*]!$JY!#ZU!%J],$:Y#![!!\"JQ$$*U\"':I%#ZU!\"ZU!%*I'%:]#%K!)"
+ "$ZQ%!ZU!$*Q\"&JY!%JQ$$*M\"#*M\"$JI!#JE!%*E'\"*Q!#JE!$*E\"$Z=\"\"*I\"\"ZA%"
+ "#J=$#J5!$:9##Z9\"$*1J1!$J5!\"J1!$*-##J=!\":-\"$:)!#*1\"$:!$$J5%$:)$"
+ "\"J!!#Z!&\"IU!$:%!#)M%&)Y%!IQ##YQ&$)Q$#)Q#$YU#\"IM$$YI&%Y1%#9E!%)5\""
+ "&)I\"!95\"#9=$#I5%#99$#)9##I9\"#Y9#!Y-!\"Y-\"$I-)#9%!#Y%$$9!&\"I1$\"8]!"
+ "\"(Y\"\"8Y!\"(]%\"HQ$#(]#!XU!#XI!#(I#\"8A!$XE\"\"8A!\"X=#%(1'\"X9\"#()!\"85!"
+ "\"89&!()#\"X!#\"G]\"\"X%#$WY!\"(%#!']!#X!\"#7Q#$'M##GQ&\"GM\"$'E!\"'E\"!W=\""
+ "!71'\"'%#!'=#!W5!\"G=\"!WQ\"!WE\"$'U($GI&\"GM'\"7M!#7M&\"GQ\"\"WY##7Q%!WY$"
+ "!(!#$8%$\"X%##(!$&(-+\"8-!$(A\"\"(%#\"HE$#85$\"X-#!HA!#8A$\"(5%#89$#8]$"
+ "\"8I!\"8A!!HQ!#(Q#\"XY\"$8M#\"X]\"\"I!!%Y!#%XY\"!Y!!#Y%&$))$#Y-&!Y1!\"91#"
+ "#9I$$I9)5Y5 =!#)=#!YE!\"II!#)A##9I!!YM!#9Q!%9Y%$9U$#)]##IM\""
+ "#)Y#&)Y!#Y]\"$YY&$)Q$%:%+!Z)!$J!%&*-!&J-\"$:-#&*-+$:1!$Z1&$Z5\"#*5%"
+ "%:1%#J9!#J=!#J=!#Z=\"#JA!$*A\"%*M&%*E\"&:Q,&*E$!*I$#JE!%*M*#JM!$:E#"
+ "!ZM!#Z]!$*M\"\"*Q!#ZU!$*M\"$:]##[!!$*I\"'JY*\"ZU$$*Y[%!&+)\"&:M!%:U$"
+ "$[!!#[!!$;%\"%[!)#;!\"$+!\"%[!&%[%)$[!&$[%!%+%&$K%$#[%!\"ZU!$+!\"$*U\""
+ "#[%)#[%!$;%\"$+)\"#[%!!ZY!$K%$$[%!$[1!%+%[%!$+%\"#ZU!$K1$#*]!$K%$"
+ "\";5&%;%'%JY!#[!!![!!&:]+#[!!#:]\"%;!$%ZY\"$[!&%*Y*%:Y#$*M\"%JY($K!$"
+ "&;)'&JU)&JQ%$*U\"$:M$$*M\"$:Q$$*M\"%*M&%JM!%*I'$:M'%JI!\"ZM!#ZA\"#JA!"
+ "#JA!#JA!$:=$$*9)%*='$J%&$Z-&$JI!#J9!#J1$$:1!#Z-\"%:-%!Z%!$Z)\"#J=!"
+ "%9]!#J%!#YQ##Z!(#9Q!#J1!$)]#$)]#$)U#$)Q$$IQ&\"IQ!#IQ\"#YE%#Y]\"&9=$"
+ "#9A!#9E!#I5\"%Y=,#YA\"\"Y9\"\"I5!\"I=!\")9%$)5'#Y%'$I% %!$I%'#XU##(Q!"
+ "\"X]\"\"XI\"\"8Y##9!!#(E!\"HM!#XA#\"8I!\"8E#\"X=#!X=!\"8A!\"81!\"89!\"H9!#HM&"
+ "#']$#85%$X1#\"X)##(!'#8-%\"G]\"\"WY#&(%)#'Q$!GU!#7]%\"GE\"\"7Y!#7=%#'I\""
+ "$'5G1$!G=%!G=!!W1&\"'E#!WE\"\"GA\"\"WM#\"7=!\"'Q#\"8%!$GY*!G]%#W]'\"7]!"
+ "\"X)##8!\"!(%!$H1%#(1!\"81!\"X5%\"W]##8=$%(5#\"XE#\"H-$#8E%#(I#\"XU\"\"8Q!"
+ "\"HU!\"I!\"\"XU\"\"XE\"!X]$!XY$\"I!!$Y!'%I-!\"XY\"\"8Y!$)5!\"I)!$Y1*\"IA!#)1#"
+ "#)-#!YA!\"IE!$)-$$)I$$YE$#IE!\"9I##9Q'#)]##9I!#99!\"YU!#IY!#YU\"$)Y#"
+ "#Z!\"$)Y#%*%'\":!\"!Z!!$9Y!%Y]'#Z%\"$Z1&&*%(#J-!$:1!#J5!#JI!\":A#%*9'"
+ "#JE!%:=(%:=$$ZE&%*=&$J5!&:I,$:Q#%:M$#JI!#*E\"$JY!$*M\"#ZI!#Z]!$:I#"
+ "#ZQ!\"*Q\"%:Q$%*Q##[!!%ZY\"%*Y\"#ZQ!$+!\"$;!#$[!!$*]\"&:],%K!)%;!#\"[)!"
+ "&;)#![%!#[%!\"K!$#JY$$[)!\"+!\"&+%\"$[%!\"ZQ!$[)%\"K)#'[)\"$+1\"#[1!#[)!"
+ "\"Z]$#+)\"%;)+$+)!$+!\"$+)\"%+).#+!\"#;)\"$[)!#[%!#[)!%+-&$[%!![1!\"[%!"
+ "$+!\"$;)\"#Z]!#[%!#[%!#[1!$;)'#ZY!%K!!'K%,%Z])!*]!#JI!#Z]!#Z]!%:M'"
+ "$:]##+%!$JU!$:Q#&:Q$$ZU\"#ZE\"$JQ!$JQ($ZE%$ZM%#ZY!$JQ!#JI!#Z5\"&:E%"
+ "\"ZM!#JE!%*=*$*A#$Z=\"#Z=!#JE!#ZA\"#Z5!#*5\"&*1!!*5$%Z1#$Z9J-!\"J)!"
+ "#J1!#J-!#I]!$:!$#IU\"$Y]#$)U##IY!#IU!$:!!#9]$#)Y#\"I]!#9I$$)U##)9#"
+ "!YE!#YE\"#9A!#II\"!I1#\"I9!#)-#\"Y5\"\"IE!#Y!'#9-$!Y5!\"(Y($HY$#I%\"#I%\""
+ "!Y1!\"XM\"\"HY!#HM%\"8Y!!I%##XA$#(M!#8M$$8M\"#XE&\"XA\"#(A$#(A!!H9##H9#"
+ "$81)!H=!#(-!#(!$\"85!\"H)!\"W]#%8%%!7]\"\"7]#\"X!#!WQ$#WQ'\"WU#\"7]!#7I\""
+ "\"'=##79!#7=(\"'=%\"W=%\"75&\"7I!\"7M!#'Q$#WQ'\"7U!\"7U!#']$#7Y%!']!!X)$"
+ "!H)!#H)#$H-*!XA!#X-'!H5!#X!(!H9!!X1!#(I!\"HI'\"8=!\"HA!#8Q!\"8M!$(Q("
+ "%(U,#I!%#XYU(]##9%!$9!&$X](#9%!\"I)!!)9!\"9%#!Y=!#)=Y-#\"I=!"
+ "#I9%\"I=$$9=%$Y9'$9E%$)E#$9I\"#9M!%)I!$IQ&&)]($)]##YY\"$IY&%9Y!$9U$"
+ "$Z!##9U$#I]!&*!!#Z1\"&J)*#Z1\"#J-$$*9\"#J1!$Z5\"#Z5\"#ZE\"#J9!#J5!%:=!"
+ "%*=##Z9\"$*A##ZE\"!ZI!!ZQ!#ZQ!#JI!#J=!\"ZU!!ZI$!ZQ!%*Q'':Q!\"ZU!':U%"
+ "!:U\"\"ZU!#ZY!#ZY!&*Y#%ZY\"(*](\";%\"%ZU)%K%!\"[!!\"[!!#[!!#[!!!:Q\"#*M\""
+ "$[)!$+-\"#K)$$K9#$[)!$;!#%+)\"$+-\"$+)\"&[-.\";-&\"+1%$+-\"%+!\"$K5$$;1#"
+ "$[-$&;-+$;-\"%[)!$+5\"%+9&$+-!$+1\"$+)\"$*Y\"$[)!#[I!%;-'$+)\"%+)&\"[1$"
+ "\"[!!$+1\"#K)#%[)%\"[5!#[!!#[!$#:]\"$*]\"$+)\"#JM!%[-&$JU!%K%!#JM!$+-&"
+ "\":]&$Z]!$J]!%:Y$\"ZY!#Z]!&ZU*%ZU\"#;%'$:I$#ZQ!$*M\"%:M$#ZY!$J]!#JM!"
+ "#ZU!#JM!$ZA%%ZA&$ZE)#:=##J9!%:=(%:=($J=!$J5!$JE%$J!%$Z1Z9\"$J%&"
+ "\":)#%JA)\":%#$*%#$:-#&*!!#Y]&%*%+$9Y!'YQ*#IU!$)U##)Q##IY!\"9Q##IQ!"
+ "#9Q!#YE%$IE#$YA!#)9##)A#\"IA!\"95##95$\"I5!#)5##)9##I5\"#I)Y-##Y!$"
+ "#9%$\"Y!#\"X]\"#8Y$#XY!!XU'#(Q#$XQ*$(Q!\"8I!#XM#$X=+\"(E\"$8A&$H=!\"85!"
+ "#85!\"X5##(1&!H%#\"(-#&()(#(%&\"X%\"\"']#\"8!!#'Y$#'Y$#7U\"\"WM#\"WQ&\"WE!"
+ "!79%\"'9!\"'E\"\"7I!#GM!\"W=(\"WM#$'Q!\"7Q!!GU!\"7Y!\"7Y!\"G]\"#7Q##W]'#GU#"
+ "#(!$#H)&\"(9\"\"X5##X5(5)%(=##8I%$8A
'\"HE!\"8Q!!(=!\"8M#\"XM\"\"XM\""
+ "#HQ&\"Y%#\"I!$#(]##9-$#Y!$$I!&$))!#)1#$)A!#)1##Y1&!Y=!#)5##Y-##9=$"
+ "\"I=!#IA%')I\"$)E#!)U!$)I$$9M!$YM#!IQ#$YU&$IQ&$)U##II\"#Y]\"#9Q!%YU("
+ "#Z!\"!*%!$J)\"!Z1!\"J1!#J-!\"*1\"#J!$#J5!#J5!$*5#$J=!'*5(#J1!%Z9##JA!"
+ "%Z1#\"*A\"%JE(!:E\"#*I\"$JI%$*Y\"$*M\"!ZM!#JA!#Z]!#Z]!#ZQ!&*U*#ZU!$;!\""
+ "$*Y\"'JQ%$JY!#[%!#[)$#ZQ!%[!!#%+!\"%Z]*#JY(&+%*%;!'#[=!&;)'#[-!"
+ "%JY%#[%!#[)!%+-&%K-$$+)!#[-!#ZY!#[-!$+-!#[-!$[-!%;E\"%+5!#[=!#+1!"
+ "#[1!\"K)#$+M!#[5!$+1\"#+1\"#[-!%K1($+1\"#[-!!;=\"$J]!'[1-%+1&%+-\"$;-&"
+ "$[5$#[%!$[)%\"[1!$K)$%;-\"&K)!&+)\"$+)!$[)%%[%&\"ZU!%:Y$#;%*$[!!%ZY\""
+ "\"Z]!%Z])'*]+$:Q#$:]#$:Q$#ZY!%;%'#*U\"$*Q\"#*Y\"#ZQ!$*Q\"$*Y\"\"ZM!!ZY!"
+ "%:I'!:I%#JI!'JA\"#JE$%:M$$*A\"!*9!#J9!#Z%Z5\"$J1%\"Z5+#J5$#Z-\"$:9#"
+ "#Z%\"%:1!#J9!#Z5\"\"J%!$J!\"$YY#&J!#$)]&$*%#$Y]&$9M!#IU$$9M%%YI!$)A#"
+ "$9M!#YE\"#YI\"$9E\"$)A#$)=!!YA!#9Q#$)=!\"I5$$91(#I1%\"Y1\"\"I-$\"I-!\"Y)\""
+ "\"Y)%#I-\"#)%#\"I-!#(Y##(A$$8Y%\"HU!\"8Q!!HM!#(9##(Y!\"8M!\"X=#\"81!\"8-!"
+ "#89%#X5$\"81!#()$$(9(\"7]!$X)&$8%)\"8%!\"WY%\"WI#\"WY#\"X-##WU!\"WU%\"WQ!"
+ "!W5\"\"W=*#'9$\"'A\"#'E$#G9$!GM!\"WQ##'I$#7U%#7Y%#H!$$(!+\"7]!\"W]#\"8!$"
+ "#()$$(-(#(5##(=!#H-%%H9,#85$\"H=\"#(A#\"H=!$(Q'\"8M!\"(M\"!(Q!!HQ#\"8Q!"
+ "#(Y#$(Q%!H]!\"8]!#9!!%I%'\"Y)\"$)%!#I)%\"I%!\"I-!\"99&\"I9$#99$#)I##Y=#"
+ "$)=$$)A#%)9($9Q!#YQ\"$9U$$)M##YQ#\"IU!#J%!%)E%#IY!$*!#$9]$&:)-!Z%!"
+ "$Z)#$*)*1\"%J-\"&*5,$:A#$ZI!$:5##J=!#J9!#JI!#Z5\"&:9!$J5!%JA)&:A!"
+ "#ZE!&JE)':I!!*A$$*M\"!*U!#JM!$*Q\"$:M#\":A\"$ZU\"#ZU!%[!&$*Y\"\"ZE!$J]!"
+ "#ZY!#Z]!#[%!$J]!\"K!'#[)!$+%\"#[%!%K%)#[)!#[-!$[5!$;-\"$+!\"#+-\"$;-\""
+ "!+)!&+1\"#;)\"&[1[1!\"[1!#[1!$;1\"%+9\"#K1$$[9!#[1!$+9\"#[1!&K5$\"[%!"
+ "$;A\"\";5&$;5\"$;5\"#[5!$K9#\";5\"%+5!$;-\"%+9&$[5!\"[1!#[1!$[-!$+1\"$+1\""
+ "#[1!$[%!$;9\"#[)!#[%!#[-!$[!!$;)\"'K-!#[5!$+)\"#[9!&K5,#[)!$+)+)\""
+ "$K9'\"ZQ$#ZY!![%!$JU!#Z]!#Z]!#[!!%*M'$*]\"#[%!$ZU%%*U&$JY!%*U'$:Q$"
+ "$*M\"\"ZM!#ZM!#JM!%ZI'%:I$&:E!%:A(%ZA\"$JE$!Z5!#JA!$*9#\"Z=!&*=+#J9!"
+ "$Z1\"$*-'#Z-\"$:-!#:)'$J)%#J%!$*%#$J%%&J%&$)]##9U!\"J%!#I]!#9U!#YQ%"
+ "$9I$%)A'%)I!#YI&$YAIA\"\"IA!\"9A&$91\"$)5'#Y5&\"I=!$Y1*!)-$#I!##))#"
+ "$9)%#8]'#H]\"%)!)\"I!!\"I!!%(U##(U#!(Y!#8M$\"XM\"#(I##(E#\"8=!\"H9\"\"8A#"
+ "!81\"#X=)$85)#HA+\"(5#\"8)$\"(%\"#(9!\"()\"\"8!!!X!!\"']#\"WU##WY\"\"(!%\"7Q#"
+ "#'A$!G9#\"'I!%WM+#GI'#'I%#'I&\"7E#\"'E!\"7Q$\"GQ\"#']$\"X%#\"X!#\"(%\"$()#"
+ "\"89##(1#$H9'#H1(9!!H=##HA='\"8M!#81\"#8I%$XU+\"HQ!$HM!\"XU\"%(M#"
+ "#8U!\"9!$%9!*$))!$9!&\"I)!\"Y-($I-)#)1##I9+#I1\"#Y=\"%)Q*$)9'#YE#$)A!"
+ "#9M!#YE##9A!%)=$%)Q!#IQ!#9Q!$)Y##YI\"$)Y##9Q!%*!!$:!!#IY!&Z%$%:%!"
+ "$J)%$I]*)\"\"J)!$J5!#J1!#Z=!'*5%%J9)%:5!\":=\"&*=+#JA!#:A'#*A\"#JM!"
+ "\"ZE!$JQ$$:M$$JM(#ZM!#ZQ!#JQ$$*U\"\"Z]!$JU!'[-)%*YZ]!#;5\"%*]&$[%%"
+ "$;-##ZU!$:U#$[)!#[)!$J]!#[)!$+5!%:]+%[))\"[1!#K5$$;)#$[-$%JY)&;)+"
+ "%[-)%+)&$+!\"$+1\"\"[%!$+9\"%;1+$+%&$[5!&[5!![1!$;)\"$+-\"#[=!%+=!%+)\""
+ "%[A%%+=%%;9\"%[9!#K5'$[-!%+9\"&;9\"%K9$$[9!'+1+'[1!&[1)%;5\"&[9!$[=$"
+ "#[5!\"[5!#[-!$[5$\";1\"#[-!#[-!$;1\"#+1\"\";-\"$K-(![-$#+-\"$[)!%K)(%Z]%"
+ "$[1$$[%!$*]\"#[%!%K!$%;-\"%K!)%K!$#Z]!$*]\"$*]\"#ZY!$ZY%$ZU%%*U\"$*U\""
+ "&:Q$#JM$&JE-$*M\"#ZI!\"ZM!#JI!%:E!#Z9\"%ZE\"#J=!\"JE$%J5)#J9!#Z5!#J1!"
+ "#*9\"%J5%#J1!#J-!\"J-!\"Z)%#J)!$:%!$*!##I]!%IQ)$)]&%I]&$:!!\")Y\"$)Q$"
+ "\"J!!#IY!#YM#\"YI\"!Y=!$Y9'#95!#)E##95!#95$\"I9!!IA#\"I9!\"91#!8]%#9%!"
+ "$I%)#I%#$HY(Q!!I%(U##XY##(Y##XU!\"HU!#XQ!!HQ!!HI!#HI&&H9*\"HA%"
+ "\"81$$(A(#(9##89%\"XE(!H=!\"X)##H!H))\"8%!\"X!#\"7]!!W]!\"WY#\"7U!#H!$"
+ "\"'E#%WI(!GM##'I$#GM$\"WQ&\"GQ\"#'I$!(!#%H1&\"7]!\"()##8%$#8)%\"85!$H9!"
+ "$X1(#XE!#(5$#X=!#H=#\"89!#8A!$(M'$HQ'\"8I!%HIA%%HQ!!HU!%)!($HE!"
+ "\"H]!#Y)'!H]!\"Y%##))#$)-'#Y-##I)%\"9A#\"I=!\"I9!\"IA!\"I='%YE!$)M'\")E\""
+ "#YE#$IA%&9A M!\"IU$#YQ\"%)U'$YYJ5$$I]&$Z)&\")]\"\"J!!#*%#%J)\"$*)#"
+ "$*-##J)!%*%'\"J1!#*5\"#Z9\"$9]$%*='#ZI\"#Z5\"!:=\"$Z=)#JE!#*E\"#JI!#JI!"
+ "#ZE\"$K!$%*M'$:Q$$*Q\"!ZQ!$ZU\"\"Z]!!*U(#ZY!$;!#\";-\"$JY$#[!!%+!\"#[)!"
+ "$*Y\"#[!!\"+)%#[-!$+)\"#[-!#+)\"\"[-!#[!!$[)!$+1\"#[)!#[%!\";1\"%K=##+5\""
+ "$+9\"%;9''+5\"#[5!%+=\"#[9!$[9!%K9$%;=\"\"[9!$[9!$[9!%;-\"&;I&$[9!&[5*"
+ "%+=!'[E!'+1&$[A!%+5\"%+=%$[I!%+M!#[5!%;5#&[=!#[9!%;9\"$[1%$[9!%+1\""
+ "$[A!%+1!$[E!&[=)#[9!'[5&\"[5!&K1$%;%#%+9!$+-!\"[5!#[%!\";)\"$+9!&+-&"
+ "!;5)$+5\"$K-$$K!$%;%'#[!!$+-\"$[!!%J](%;!#$*Y\"#Z]!#[%!%JY!':U)#Z]!"
+ "\"ZU!#ZQ!#ZU!$*I\"#JM!#JM!$*M\"#JM!$ZI%%JI(\"ZE!$ZI\"$ZA&\"Z)!$J-)#J9!"
+ "#*9\"#J1!#:1'\"Z9!%ZE)#Z)\"&*)!#Z-\"%:5(%Z5#$9]$%9Y(%)U+$YM'$)Y##Z!&"
+ "#9Q!#)YYQ)$IM%')M)#YQ##I9\"#YE\"'Y=#$Y=$\"I=!#)9##YE#\"I5!!)1!$Y1'"
+ "#)-##Y%'$I)##9%!\"Y%\"\"9%##8]$#(]##(I$#8U!#(Y!#8M!#(E$#8=%\"X=#!8E\""
+ "#(A#\"85#$(=(\"X=##85%\"X1##X-$!H1##X-'!8%\"!W]\"#8%(\"W]##7Y%\"WQ#!GU#"
+ "!7M%!WE\"\"7M!#WM'$WQ)$X%&\"7U!#'Q!\"G]$\"'I!\"GU\"\"8%&!(!$!H)!\"X-#\"8!!"
+ "!(%!!H9!#(1$\"H-\"\"H9!!HM!\"8M!\"8I!!8M\"$(E(#(Y!!HM!\"8U#\"HU!#(U#\"8]!"
+ "!Y%!#9-!$9-%$I%'#HY%\"I1!%)1(%91I5%\"I9!!99\"#I=%#9=!#9=!#YE#$YI'"
+ "$YY##9U!$)U#&IE+\")M\"$IU(#J%!$)U#%Z!+\"YY!#Z%\"$:%!%Z%'#Z%\"$J%%\":)\""
+ "$J5%\"*1\"!Z5!%Z9&$J9!$:-#$ZE\"$J=!%JA%#Z9\"$ZE%!ZI!!:E\"#JM!$:M##JM$"
+ "\"*M!#ZU!$:]##ZY!#ZU!$*Y\"#[!!#ZY!#:]\"%J]!&ZQ*#[!$%+!\"%[!\"#K%$#[1!"
+ "#[1!'+)+#ZY!#[)!$+-&$+-\"&;A&\"[1!%+9&$KE##[1!$+1\"#[=!$K=$#[5!%+M!"
+ "$[E!$[=!%[=!#[9!%[9%%[E!$[=!%[5%'KI$%[9%%;9\"![=!%;E\"%[=!\"[=!$[5!"
+ "%;5#%K1$&KA$$[A!#+1\"$[=!!+E!\"[9!&KA(&[=!%;I\"%+=\"![I!&K9((+1\"%[-%"
+ "$[A!$[=!'+9\"'+9&%KE$%+=\"&[5!#[9!%+5\"$[1!$+E!#[5!#+1%$K1(%[1!$;%#"
+ "#;!'%+)[-!\"K!#$+)\"\"[)!!*]!#ZQ!\"[%!$+)\"&+!+$JU!$J]$\";)ZY!(ZY+"
+ "\"ZY!%ZY\"&:Q$#ZY!&:M+$:Y##ZU!!ZM!#*=%#JE$$JI!$JA$\"Z=!\"*A\"&:A%%*='"
+ "$J-%&:5%$:9##J5!$*5\"$:=$%J-\"#J%$$Z)#$J!)$Z%#\"YY\"\"YY!#J!!\"IY!#9M!"
+ "$YQ##YU\"&)Y)$)M$%IM##YM##9I!$9M!#9I!#Y=\"#9A!#)1##99!\"I5!\"I5!\"Y1\""
+ "!)1!#I)\"#I!#\"Y%\"$9%#!(U!\"(Y%$(]'$8M#\"8M!$HU-#XQ#$(9'#HA\"\"HI!\"89!"
+ "#HM%\"HA\"\"8=!$(9'\"(9\"!H5!#H1U$$X-%\"X-##H-H-&\"7U!$W](!GQ!\"7Y!"
+ "#G1'#'E\"\"WQ#\"'M\"#7M%\"7U!#7E#$'Y(#(!$#8!$#(!M#!X)\"#X)\"#H-!\"85!"
+ "%HE\"#(=$\"(5%$(A%$8A(%HA\"$(E'#(I!\"(M\"#(I#\"(M\"$)%'\"8U#$8Y)#(]#$(]'"
+ "#I!#$)%$!Y)!%9))\"9%#\"9-##)%$\"9A#\"I9!\"I-!$)5$$)E$#IA!$)E!#9Q!\")E\""
+ "#9M!#YM#$)U##IU\"$YY&$J%%#IY!#YYYY\"%J!##J%!#9U!!ZA!$J)\"&*-+#J1!"
+ "\"*5\"%J1)%:9($*9\"\":9#%J=\"$Z9\"#J1!%JA\"\"ZE!!ZA!$ZI&%J=%%JM!$ZM\"$*Q\""
+ "&ZQ*#ZQ!$ZAJI!#ZY!%:U(%*]&%Z]!$*Q\"(;!-$K!$$J]'$;%#\"Z]$\";)\"$+)-"
+ "%[5!$+-\"![-!$;-\"$+1!$K=#\";1\"\";1\"$[-%&;5'\"[5!%+9\"#+9!$[=!$[9!%[1!"
+ "$[=!)[=*&;A\"'[A!$[-!(+=\"%+M!%[=!$[=!'KE,#;A\"(+A&$;M\"%KA$\"[A!$[A!"
+ "%+A!&[A)%+E!%[A%$[=!%+9\"%KA$%+U!';1,&[=$#;E\"%K-$&+A!$[A!%K=$'+A*"
+ "\";5\"$+E!';=\"&[9!\"[A!&[=!%+I!#[9!%[=%&;E\"%+=\"&K1$&+=\"$;=\"'K-!%[5!"
+ "#K1#$[1$%;1'&K=,#+-\"$K-$\"[-!#[%!$*]\"$;%\"#[%!&+-&%+%\"$*U\"&J]!#+!\""
+ "$*U\"$JM!#*Y\"$;!\"$[%%$[!!%*Q'%JM%%JI((ZU/#JI!%*9&&JY%#:E#%:A!#JA!"
+ "!*5!%ZI*#J9!$J9!\"*5\"#J5!#J5!$:1$#J5!#J)!#Z%\"$*1\"$*-#&*!$#:)#\"J!!"
+ "')])$IQ\"')I\"\"YU%#9Q!$)9*$YM##II\"$Y=!#YA#&)=-#I5%\"Y=\"\"Y%#\"YE\"\"Y-\""
+ "\"Y5\"#)-#!91+!))'%9) %!#9%!!)-$$I!&\"Y%%%)!)#(U!\"XQ%$(Q!#(U#$HI$"
+ "#89%\"XA##8A%#XE!$(5%\"H5\"\"(5#$H1$\"X1#\"H-'$8)!$8%)\"H!!\"8!!\"G]\"\"WY!"
+ "#GE)\"7M!\"8!!!H!!\"GE\"\"7]!\"WU#&'Y&\"G]!&(!,#X%\"#8%$#H%(-!!(9!!(9#"
+ "\"(%%\"89!\"85!$HE$\"HE$#HI&\"XM\"#(I$\"XY\"#(Q##XU&\"8A!&8Y(#(Y!\"Y%\"%I%'"
+ "&I%)#HU\"\"I)!$Y-!#I5%!Y5!#)5##))##)A#&91'$IE)#9=!$9E%#YE\"#9M!$IQ%"
+ "#YA#&)Q(#IQ\"#9U!$J!&$)Y#$YU*$Z%*%IU)$IY%$*%#\"Z)!\"J-!%J-\"#Z-\"%*1'"
+ "%Z)'%*5'%:A!#J5$!ZA!#JA!#JA!%:9$#ZM!'ZI'\"ZA!'*M'!*Y$'*Y,%:M$#ZU!"
+ "%JY!#ZU!#ZY!$+)!!ZQ!&JU%#Z]!$*Y\"#+%&$[%!\"[%!$JY!#[)!#ZQ!%+)\"#[9!"
+ "%[-&&;9+%+1\"$[9$#[1!&;5#%;5#&+5\"#;9\"%+)\"$[9!#K=#)K11%+M!![I!$[E!"
+ "%+9\"%KA$&;=&%[9!%;=\"%;A&%;M\"&;E'&[9)$[I!(+5\"$+U!'[A!&+E!';M/&;I\""
+ "![E!%+M!%;A\"$[A!%;A\"$[I!$[E!&[E%$[I!$[E$%KE#%;M\"$[I!![A!$;I&%+9\""
+ "$;E\"%;A\"#+A)'+E*&+9*$[A!&+A\"%;=\"&;A'$+=!%;='%+U!#[9!'+9\"%;I\"%[9!"
+ "!+1!#[1!$;=\"#[%!'+-\"%[-)&;-$$[1!#[-!#[%!%[1)%;-\"#[)!\"[)!$+)\"';-,"
+ "%[!\"#ZQ!&+)&$:Q$%*U'#ZQ!#ZY!#ZY!#ZQ!&JQ-$JI!$JM!#ZE\"#JI!!ZE!#Z=\""
+ "#ZQ!%:=(#:=#\"Z=%\"Z9!\"Z)\"#J5!$J1($Z5&&Z!$$*1#%:)!#J-$!*)!%:!(#YI&"
+ "$IM%#IY!\"I]!$IQIU\"#9I!#IY!#J!!%)I$#IQ!\"9M##9A!!YM!!)9!#)1#$I5&"
+ "!95\"\"Y1\"#91!#)-#!))!!I!##9)!%)%&\"8M##8]$\"8I##HU\"#(M#\"Y%\"#XI#$(I$"
+ "#8=\"#8I$$HE*!(I!#(=$#X=$\"X%#\"H5\"\"X1#\"8-!!H%##H)!#7U%\"W]#\"7Q!\"(%%"
+ "%7A$$WM$\"7U!#H-!\"WI%#7Y#!()!#8!\"#7]##H!&$H-$!H1!#X-!\"8=!\"H1\"%H-$"
+ "#8=$\"8=!$X=+\"XI\"\"8I!\"8A!#(M#$HM#%HI%#(Y##HQ%\"8U!%XQY% )!#I)\""
+ "#9%!#I-%#I%)#)1#\"I1!#)5##)9#\"9=#!)9!$)E!$9I%\"I9$%)I!#)I&%Y=+&99'"
+ "#I]!#YU\"#9M!$Z-&!YY!#J)!#J!!%Y]$#J%!#J)!$Z)&$:A#\":%##Z5\"\"Z%\"#Z=\""
+ "$*9\"\":1#$J=!%J9!#ZE\"#ZI!%*E'#J1!$JQ%$ZI\"#:M\"$*M\"$JI!$*I\"$*Q\"#ZU!"
+ "&JY,#ZI\"%K!$#Z]!$ZY\"%+%\"#[%!%[9$';%$#[-!$;)#%+)\"%[-K-$$+9\"$;1+"
+ "%K1('[9&$[5$%+5\"\";=\"$[=!%[)&\";5\"'+=*%KI#%[=!$[A!&KA(%;A\"&;U\"'+A\""
+ "%;5\"'KE($[E!%;A\"%;E\"%;E\"&;I&&[M)%+Y!$[E$%;E\"%+Y!);E($;I\"$[I!%;I\""
+ "$[I!$[E!#[E!%[I$&+I%%;M\"%;1\"$+U!%;E\"%KI#%[=$$+Q!$[9!%+I%$[E!%[I!"
+ "%[I$$[E!&KE(&KA(%+I&$;E\"%[A$$;A\"%+U!#[A!$[=!%;A\"&[=!&[=$%+1\"%[9%"
+ "&[9!$+9\"#+1\"%[5!#+-\"\"[9!$[=)$;1#\"[1!%;1'$ZU!%+!\"$;-\"#[%!%[%)\"[%!"
+ "#[-!$[-$$+%&$;%#!JU##*]\"&:Y$$*]\"#JY$\"*E\"$*Q\"\"Z=!\"JU$%J9\"$JM$$JA!"
+ "#ZQ!$*M\"!ZA!&:9!%J5\"#*!#$:=$%J1&!Z1!%Z%*%*='\"ZE!$J)%#J1!$J%%#*%#"
+ "':!\"%9]\"\"I]!$IU%#YMY]\"$Y]##9Q!$)Q$\"9Q##IE\"#9E#$)E##IA!$)9*$9=%"
+ "#Y=##I1%#95$&Y1-\"Y1\"#9!\"#I!#$Y%!#Y!$#(]##(]#\"XY\"#8U$$8Q(\"I!!\"XM\""
+ "$(E(!(I$\"HE!!(E!\"X=(#8E%#85\"\"H1\"\"HA%\"X!!\"X%#!(-!#8)'#X!!#7Y%!']!"
+ "#GM$\"7E!!'U!!'U!#X%'\"7U!#H!$\"8%!#X%'#(-!\"X!##(-$!H1#\"8=#\"(-#%(9&"
+ "#8I$#X='\"XA!%HI%\"8I##8M$\"XQ\"$HM#!HU#%(M#%)!\"!H]!!)!$%9)&%9%*"
+ "\"8]!#)-#$)-'\")A%%I1$!YA$$)5!\"I5!%IA*$9U!$)=$%)E$#YI##YQ#$)I$$YY#"
+ "&)U!!)Q!#9U$&I]*$IY&$:!!$YY&$*%#%*!!\"Z)\"#Z-\"\"J--#J1!\"Z5!$J5!#Z=\""
+ "#J1!#J=!#J=!%:Q$#ZQ!$:I#&:=%$:E$$JM%%JQ$#ZQ!$JA%&JY,$*U\"$*Y\"&*]&"
+ "&JY!\"ZY!$K!$#[!!%*Y&(;5($;%\"%JY(%;1#$[-%#;-\"%K-(\";=\"#+1\"%+1!$;I\""
+ "&[5!\";9&$[5!%+1\"\"[5!&+=&%+A!%KE$$+E!&+A\"&;Q'&+9\"'[E!%;I\"$;E\"%;A\""
+ "'KE,&[M$%;I\"';A+$[I!&+Q%%KM#$+Q!$[U%%+M%$KQ#%[5)&[]$#[M$$+M!%+M!"
+ "$;M\"$[M$$+M!!+Y)#+Q!$+M!&;A/#[A!%+M%#+Q!\";]\"#[E!$+U%#[I!%+M!(,!)"
+ "%;I\"%[E!$[A!%;M\"%;Q&$[E!%+E)'[E)&;E'$[=!$+Q!%+M!%[A$$[A!$[9!%+=!"
+ "$KI#$;5&%[9$%+5\"$[9!&*Y'$[1!$;-#%+1!$+1\"%+1!$;-#$;%\"%+=ZU!%K1$"
+ "\"ZM!&;!,#ZY!';5#$:U#\"+%!$J]!&J]!&*U+$:U#!ZQ!':A%$*M\"\"*A\"#JE$$ZM%"
+ "#*I\"%ZI\"$ZI&!ZQ!#Z=!)*%'#Z9!#ZA!%Z5\"$*5\"#JE!#Z-\"%J-%!:-J!!$J%\""
+ "%*%'%*!$\"*!%!YU!#I]!$9U!#9U!%IQ&$9M%&9M#$)E!#9E!#9E!\")E\"\"Y=%!Y5!"
+ "$Y1*!)9!%95,$)1'#I-%%9-)#))Y%#$)!!#)5#%8]#!H]##XY#\"HU!\"HQ$#(U#"
+ "%X])!H1#\"8I#$8E#\"81!!(=!$(E(#X9'\"(A\"$81H1&$8-)\"X)#\"X%!\"X)##'Q$"
+ "#7M#\"'I!\"7U!#GY#\"GU\"\"WM#\"GU\"\"G]!\"H%\"\"H%'#7]%#8=%\"H5\"#(5#\"(1##89$"
+ "#8Q$\"8M!\"XE#!HM&!HI!!XQ!\"XM\"%HQ(!XU$#8Y$\"8Y!#Y%*#X]&$Y%!#I%#\"Y%%"
+ "#I-%\"I)!\"I1!!Y-$#)5#!Y9!\"IA$%)E'#Y=#$)A##9Q!#9E!#9I!%IY\"$IM\"%YY("
+ "\"YU\"\"J%!$9]'&I]#$*!#\")Q\"\"J)##I]!$*!1\"Z-%\"J1!$:1!#J-!#J1!%*9ZA\""
+ "%*9'$JE%$*A\"\"*Q\"#ZQ!\"ZE!%:I'$*E\"%:E$%JQ!$JI%#ZQ!&JY,#ZU!\"ZY!#ZU!"
+ "$J]!#[)%$JY!%+5\"$+%\"%+)\"$;5\"%;-#!+1$#[!!#[1!%+1&&;E\"%;5#\"[)!#[5!"
+ "&[)\"&K9$'+=*$[5!#[=!$[I!&;I\"%[A!%[=$&;I&&;E\"%[E$$;=&%+I%&+A&$+A%"
+ "%;M\"$[E$#;Q\"%+E!$;Q\"%;M&$KY#$+Q!\"+U!$+I!$+Q!$;M##[=!&[M%$+U!#;Q\""
+ "&;Y\"%+M%%;U'$<%\"$+Q!$+U!$+U%$+M!%;U&&+Q%$;I\"&[],$+]!&+=!$[U$$;U\""
+ "%+M%&+M!$KE#%[M1$;Q\"$KE##+I!'+=\"$KY'&[I$![A!&;A[A!#+I!%[E!$[A!"
+ "%KA$$;M\"%[9$%;A&%[E$$[9!%[=!$[A!%;=\"#[5!&K)($Z]%$[E$$[)!$;1#&+%'"
+ "';!$#Z]!!+%!$[)!#[-%&;!#$*Y&\"*U\"$:Y#&*Y\"#[!!$+!\"#ZE\"#*]\"$JE!\"ZM!"
+ "%:I'#ZA\"%*E'#JE$#JA!#Z=\"$J=!#*9\"%*9JE!$:5$%:-!%:-($*)#$J%\"$*)#"
+ "$:1!#J%$#IY!\"IY#$9Y!!9Y\"\"IE!$IY%#)M\"#II$$IM&!YU!'9E+#)A#$IA%#9A!"
+ "!I=&!Y9!\"Y5(#Y=&!)=$!Y)!#I9\"\"I)!$I%'$I1##I!#\"Y!##XYc$$HQ'\"XU\""
+ "\"8Q##(I##8M$#(A$#(E#\"H=!!H=!!X-)\"81!\"(9\"#(9!$!8-\"\"H%'\"7U#\"7]!"
+ "#7Q#$7M%!'Q!\"8!!#']!#H)()$\"81!!(5!\"X)\"#G]!\"X-\"#(5$!H5%#85$$85&"
+ "#HA%\"8A!!(M!\"8I!$8M(#(M##8Q$!(U!#HY%!XY*#9)!\"8Y!#9!!$)%$#9)$\"IA!"
+ "$)-$#91$\"91#$IA)$Y1'!Y=!\"I=!\")=\"#)E#$9I\"!IE##IY!$YM##IY!#9Q!#Z!,"
+ "\"IE!$9Y!$J%\"$Z!#$:1!#Y]\"%:-(':%#\"J-!%*1#%Z1#\"J1!#J5!!Z9!#ZA!!ZM!"
+ "%:-!\":A\"#ZI\"\"ZI!#JA!$+)\"\"*Y!%ZQ\"!ZU!\":U\"#JM!$[!!#[%!#[!!#ZU!$+%\""
+ "%+!\"#;)\"(K%*%ZU\"#[!!$[-!$K-($[-!#+%\"#K9$!+5$#[%!'KI#%;I\"%[=(%+1\""
+ "%[I!$[A!$[A!\"[5!$[A!%+A!$+Q!$+M!$[E!$+M!&[I!#;I\"$KI#%+M!#+M!$+M!"
+ "$;M\"\"+U!$;M\"$KI'$+U!$;Y\"%+Q!$;E\"&[])%[U%%+U!\"[I$'+M!$KY#%+Q!&;I\""
+ "$;Y\"%[Y$*;I'%KQ#$[U%$+M!'+Q*%;U\"%KY#&[U%&;E\"([I!#K]#%K]#&KU#$[Q$"
+ "&[Q$$;M'$+Q!&;I+%;Q+\"[Q%%+M%\"[E!%+=&%+Q!%KM#%[I!#KE#![I!&[E)%[E!"
+ "#;E\"#;=&%;A\"&+9\"&;A\"'[=!%+I%$[9!$[9!&;9#%;1#![5!#[1!$[5(#*]\"$[%!"
+ "$J]$#[-!%+)&%[5%!+)$$ZY\"#ZU!$:]##[%!!:]*#ZY!#Z]!#ZU!\"ZY!\"ZQ!$*Q\""
+ "(JM.#JM!$JM!$ZA%#ZQ!&:I!$ZAJ9!#Z9\"$:1!\"J-!#:1#$Z1\"#Z1\"%:-%!*-!"
+ "#J%!#J%!#J%!$)M$()]*!)U$$II##9U!$9U$%)Q$#YE#&IQ(\")I\"$IE%$9E$#Y=\""
+ "$9A$#9M$&9-.\"Y)\"#)-#\"I1!$)%!&9%.\"Y-%$)9$#H]%\"Y!#$))!\"8Y!#(Y#$(Q'"
+ "#HU%$8E##(Q#\"HM$$(E$\"H9\"\"XA\"!(=!\"X=#\"X5#$(!#\"8)!$8-#\"H%\"\"GU%\"7Y$"
+ "\"WU!!GQ%#8-%\"7Y$\"GI\"#G])#()!#8%$\"8!!!H-(1##85$!H9!$XM%\"X=#\"H9\""
+ "#XM!$HE*\"H5\"#(M)#XM!$8E(U##HU\"!(Y!#HU-#(]!\"9-##X]!$Y5*\"9A#\"9)#"
+ "$)1$#Y5##95$$IA)-#\"I9!#)I##9I!%YU#$)U#%II##9U!#9E!\")U%#I]!&*%$"
+ "#YU\"#9]##Z!&$*!##IY!%J1JA!&:-)%:1!$Z1\"\":5\"%:5!\"*5\"$J-%!Z5!#ZE!"
+ "$Z5&$JE$#*M\"#JI!$JI$$JM%#:Q\"$JQ%$ZU\"$JY$$*Y\"#[%!\"*]\"%[!&$;)\"\"K!#"
+ "!Z]!%+1&$[)%%K%!$+-\"%+-&$[1!%K)$&[5!$+9\"%[5!$[9!\"[9!$;=\"$[=!#;=\""
+ "%;M\"![9!$[A!%K5$%+M!'KI,$[I!%;E\"%[Q(#[M%$[I!\"KM'%;M&$KQ#&+M&(+Q%"
+ "\"+Q!$;I\"&KM#%+U!%+Y%&KU,%+U!%KU#%+Q!&[E%#+Q!%KY#\"+M!%+U!%+Y!%;]!"
+ "%;Y\"%[Y$\"KU#$;Y&%KY#%\\)($+Y!'KY+(+Y!%+]!%+Y!$+Y!%+Y!'%#&]A&$]Y!%]Y!'=U(&-U!$MY!"
+ "%]Y!'MY#%^!!%^%%%]]!%]Y!(-Y+%N)%%^!!&-Y!$MU!%]U!$>%%(-Q+%]U!$MU!"
+ "%]M!#MY!%]M!&]M!#=E!%]Q!(=I,%M=!&N!$%]Q!&]E!&]E!&=A$#MA!&-A\"'-=\""
+ "(=1(&M9%$=9!&]1!%]=!%M1!&=1$']-!'M)%%]9!&M)!'M%$%]%\"$=!!%!!%^%!%]]!"
+ "'-]!&]Q!&N!$&MU$&=]#%]M!%]]!(-]%$N%!%]]!(-Y+%]Y!%^%!)]Y(\"-Y!(-Q!"
+ "%]U+%]Y!%]]!&=Q#&-Q\"'-U!)-U%%]Q!&]M!*=M+&M=$'=A($ME!%]Q!&]E!#]E#"
+ "'-E!$MA!'==(*=5+(]=$$]5\"&-=#)-E+&]I!']-*%]5!\"M1\"&M1%(])/%M1!&-!#"
+ "%<]!%%(%^-!(=Y!"
+ "&-]!$^!!'-M''>)''.!%$N!!'.!!'.!+&>%#&-Y\"&-]!%]]!#]]\"$N%!%^!!%^%!"
+ "%=Y$'-Y!%]M!%]Q!$M]!'-U&(>%!&]A!\"-Q!%=E$%]I!%ME!%M=!%=I$)=I!'-1'"
+ "%M9!%MA!%]-\"#=9!(M=$&]9&%]9!'-5'&]A!%]1\"%M%*(M-$'\\]&%])\"$=)!%<]!"
+ "%M5!')!!^!)%^)!&.!!'-]!&-U\"'N-\"%^!!"
+ "&.!!%^-!'.%!%]Y!$N)!'-Y!$N!!$N!!)]U)%]]!&]]%#>!!%^-!%^!!'^-$$MY!"
+ "%]Y!#=Y!%]Y!%^!!%]M!'.!!%]Y!%]Y!$M]!*MY!%]Q!%]Q!$=9!$MQ!&]E!&]I!"
+ "%]Y!&-=#'=E\"#]9#%M5!&=9$#=A!&=9)\"=9!)--!\"-)!#=)!#M%\"(M%$#=5!\"-)!"
+ "%=!$&M!%&M!!&\\Y'&LY&%,U#$,M)%!-%^!!(M]'%^!!%^%!!.-&%^)!%^%!#>%!&^%%"
+ "&.9!%^!!$N-%%^%!$N%!%.9\"$M]!%^!!'.%!%]]!%^%!%^%!'N%('.%&%]Y!$>1$"
+ "*^!!%]]!']])%.!(&-U!(=]!%^%!)>!*)-U*%]Q!%]M!&=U#%]Q!%^!!%]M!$MM!"
+ "%]I!%ME!'-=!']E$\"-E!'=A(&-E\")=9!%M-!&])&%M5!%M%!%]1\"(-1+%]!\"&=)$"
+ "'1!'-]!%^!+%]Y!%]Q!!.5!&>!#(>%!*^!!&.=!%^!!'.)!%^)!%^)!&>)\"%^!!"
+ "&.5!%^5&$^5!%^-!#>%!%^)!%^-!%^)!,N)**.%)'.%&%^!!#^)\"&.)&*.%#%]U&"
+ "&N!$\"-]!&>1\"%^)!%]Y!%]]!&.5!%]]!#MY+%MY%*-Y)%^%!&=Q(%]U!%]Q!%]I!"
+ "&-9\"%]M!&]A!&]E!\"-A!(-=!(]A)%]I!&-=\"*-I4&M5$%M5!&-E\"%\\]&']-!$]!'"
+ "'-)\"%]%\"$=!!&=!$)-!\"(\\Y!%!%&=]#'-Y!#=]!&M]$$N%!"
+ "%^!!%]]!'-Y!(>)!'^!)'.-!%^-!&N1#%]]!&>1\"%^)!)>-%'.!!%^1!&.9!$N-!"
+ "&.=!'>)'%^-!%^)!&.-!'-]!'>5&(=]!%^!!'>-!'>9!%^1!&N1$&N)#%^%!'>5!"
+ "$N)!(>%!%^%!'-Y!$N!!%^%!'.-!%]Y!'-]!%]]!'-Y!%]]!%]Q!&-U\"%^!!#]1#"
+ "(]I$%]M!\"-U!%MM%(-I!&]E!&]A!%MA!$MQ!&]=!%-5#%]=+&M5$(MA$&M-!\"M5\""
+ "'=%)$]5\"'M%*%M!!#\\](%LU!%]!\"&LM!$!!$N!!%^!!"
+ "%.%\"'^)$'-U!%^)!&.%!'.)!'.)!%^-!%]]!%^)!'.1!&^5%'^1)'>1!#>-!%^1!"
+ "&>1($N-!(.9*'.1!).1#)^9,&>%#(.1%(^--'>1'&^5*&.5!#>!!#N-!(^)#$N1!"
+ "(^-#'.)!\".!!#N)&&^)%'>9!'.!!'.)%%]]!(>%+%^!!&]]%'.!!'N%#&-U!$ME!"
+ "&=Q#$MQ!$MQ!&]Q%%]I!%]Q!&-=\"$MI!#=I!(-A!$]-\"&M9$$-1$&]1!)=-\"$]1#"
+ ")--&%M-!&=)$'M)$(\\Y!'-!,&=)$%\\Y#&=%$*%!$]Y!&N%$"
+ "%^%!(>)!'.)!%^-!%^-!%^%!&.9!$N1!%^)!'.%!&N1$$^5!&>)\"'>5!%^-!&.5!"
+ "'^E#%]]!)^5&&.5!(N9!&.9!$^A!,^1*%^1!'.)&&>5\"&>1\"$^5!&>=\"&N)$%^1!"
+ "'>1!%^-!%^-%&.9!%^)!'.)!%>)$'^1$&^!%&>!#$N!!$N!!%]Y!#=]!$MY!&>!#"
+ "&]M%&-Y\"'-U&'=E((-Q%%]M!&-I\"&]E+'ME(%MA!%]5\"&MA$&=1)(=9#%]%'&-1#"
+ "%MA!&M-!%M%!&=5((M!%$<]!&M!!'L]!%-#'.)%"
+ "%^-!%^)!(>-!&.9!%^1!&.9!%^!!&.5!&N-#\">5!&>5-&.=!&.9!).9)&.9!&.9!"
+ "$^E!&.A!%.=\"&.9!%^1!&N9#&NA#'>9!&N-##N9!%^1!'^9)%^)!&.9!*NI$'.-!"
+ "'>5!%^-!(>)&&^-%%^-!%^-!(N9!&>%#%^1!(^)\"%]]!)=M,%^)!)=Y%%]]!&N!$"
+ "\"^!#%]M!%^%!%]M!'-U!%MA!(-M!(=I!%]M!(=U!%MA!\"-=*'M5$%==$%ME!%]5'"
+ "%M1!%M1!%M-!%=%$%M)!%=-$$-!)&M%%(,Y,%\\Y\"&LU!%!!&^-%)N%!%^-!)N%&&^-%$.!$(>-%"
+ "(^)($^!!%^1!'.%!\".-!&.5!$^5!&.I!(>-!&.5!&.9!&.5!&.=!%^)!&.=!&.=!"
+ "$^E!&.M!'.1!&.=!'.1%&.5!#N=!&.=!&.9!&.=!%N9$&.9!'>MNA!$^5&*.9\""
+ "&.9!(.9%(^-(%^-!%^1!&N-#$^5!'.-!+.A,&>)\"%^%!%^%!%]M!%^-!'N)('-U!"
+ "(=]!'MY-%^!!(MY\"%]Y!%]I!+-M#(-M+(=U&(-=!&]M!(MQ,&MA$'ME(']=/%M1!"
+ "'M5*(-1'']5&'--\"&M=$$=1!%M)!%])\"$<]!%!!%]Q!#=Q!%]Y!%]]!#>-!%^)!!>-\"$N)%#>)!(=Y!(>-!'>1&%^-!&N%$"
+ "'N9(&.9!%^1!&.=!&.5!&.9!)^Q&&>5\"(NA,)>=/&.=!&.5!$^=!$^A!&.A!(NA!"
+ "&.A!&.A!'N=\"\">A!&.=!&^A$&.U!&.=!(N5!'NI'&^A$%N=$&.A!(N=!%>-$$^9!"
+ "&.9!$^5!&.I!+N9*&.5!&>5\"&.5!$>1$%^)!%^-!%^-!(N!!$N%!%^%!%^%!&.!!"
+ "!.!%'=]\")M]!'-Y!%]U!$MU!&MQ$(-M!%]M!%]M!%]I!(]E.$MA!'M=$#=5!%MA!"
+ "&M=)#=5!%M1!%]5\"'M-*(-)\"&M%%$=1!(\\]!%\\]\"&,]#&L]!%!!#M]!(-Q!"
+ "(-U*&-Y\"%^)!(=]!$M]!%^!!)=U0&>!\"%^%!%^-!%^)!'M](%^-!(N1!(.-*%^1!"
+ ").9)'>9!'^9#'>5&(>%!(N=!'NM'&N9#*.A''NA''>A!'>9!(NM!&.E!&>E\"(^='"
+ "'>E^M'&.9!).E#*.M!&.Q!'>A!&.E!\">M!&.E!&.]!&>A!&.=!#^A\"&.A!&.E!"
+ "&.=!#>=%&>=\"&.9!(>1!&.=!&.5!'>9!&.5!(>1%&>-')N10%^%!&N)$&.)!#>1!"
+ ")>)%%>%#(-U!(=Y&$MQ!(=U'%^%!%]Q!$MM!&MQ$%M1&)=M!*-=$&]E!%M9*$]E\""
+ "%=9$#=A!%M9!$<]!%]-\"(=5-#=1!$=%!(M%$%LU!'--\"&]!!%LM\"%\\U\"%!&%^!&%^%!%^)!'.)!%^1!$N%!*^!!'.1!%^1!$^=!%^1!"
+ "$^E!&.E&&.=!&.5!#NA!'>9!'>E!&.5!%>U\")NQ0%^A*&NQ\"'.I%(^M'(NI!'.=%"
+ "(>I+&.I&&.A!&.M!&^I)&.E!)^E!&.A!'>I,'>A!&.=!$^E!&.E!&>I!%.Q'(NI&"
+ "'>A!&.A!&.=!&.=!$^E&&.9!#^5\"'N9'#>-!%^)!$N1!%^-!&>!\"%^)!)N)&'.%!"
+ "$N!!'.)!%ME!$]M!$MY!)-Y)$M]!(=Y!%]Q!']Y))-A+$MQ!&]=!'ME)$ME!(-=!"
+ "$MA!*=9!%M9%#M9\"&M%!%]-\"%M)!%]=!&-%$']%!%-%$'=!)%\\]\"%1'$^I!&.5!&.A!$>)$"
+ "(.5*&.=!&>E'&.A!&NA#'>E!'NA''>=!'^I\"(^A\"'.I%#NI!&.I!+^M#'NM'$^M!"
+ "%^M%*.A'&.M!'>M!&.I!&.M!&.M!&^I$\">M!'>E!'>I!&.M!&NI()^I,$^E!(^E'"
+ "&>E!#NI!\">E!)^A!'>E!%^1!&.=!&>5\"#N5!'>5!%N5$&.9!(.A*'^5)#^1'&.)!"
+ "'>-'%^1!$N%!'N!)'.!!$M]!&-Y'*MY&&]M%#ME\"%]I!%]I!%]I!%M=!'-Y&$MI!"
+ "&-=#'-5\"%M9!%M5!\"M=#']-*%]9&$=)!'-%#&M-%&\\Y&&L]&$\\]#$=!!&\\U&%!0&]Y%%^%!%>%#(>1!'>1,%^)!*N-%&.5!%^)!'.1!+.5'#^9\"&^9%$.A#'.=%"
+ "'>Q!&^A$&>=\"'.A&(>A+&.M!%.9\"&.=&&.M!#NM!&.I!&.Q!&.I&&.Q!$_)!\"^Q#"
+ ").Q-&?!!(NM!'>Q!&^I$'^U\"'>M!&.]!#^Q!'>U!).I.(N=!&.M!'>I&)^I!'>I!"
+ "&^I$(NA!)^A!&.M&&^9$'^9#&.A!&.I!$^=!'>5!'>5!'>9!%N-%&.5!&.5!&>1\""
+ "'>-&'-Y^)\"$^!&'.!!'.!&&-]\"&]=!'=Y'&-Y\"%]Q!&=M#%]Q!%ME!$MA!%ME!"
+ "%]M!%]E!&M9$%M9!(-E!'-1'&=1$%M-&'])!%M%!&M)!%])\"&L]!$=!!),]!%\\U\""
+ "%LM!%%!%]Q!'M])"
+ "%^!!%]U!\"^!#$N1!'-]+$>)$'.-!'.1!&>1\"&.%!&^9%)^=!(.5$$^=!&.A!&.Q!"
+ "$^E!&.E!$^Q!&.Q!(^Q!'^I#&.A!(>M*$^M!'^E#+NY.\">U!'NM''>Q!(N]&(>U$"
+ "(>U%&.U&&.Y!'.]$(/)().I#(>Y*(^U'&.U!'>I!&.Q!(>U/&.Q!&.I!)^I!&.M!"
+ "&>I!$^A!*.M!#>=%&>I!&NM#$.A#*^E%'>9!(NA!'.=%&.9!(NA!&.=&&>-\"&N1$"
+ "(.1*#^-\"&.-!%]]!)>)*'^!)%^1!#>1!%]Q!%]Y!(-M!&]I!'-A!#=M!$MM!%M=!"
+ ",]E!']9+$MM!#M5\")-9!%M5!(]5$)--!'=-$&]-'%M)!%-9#%M)!&]!'%]%\"(LU%"
+ "'LU!&,U#$LM\"(%/%]]!*^%!"
+ "!-M!&.%!$N1!$^9&(>)!'>)'%^1!&.1!\"N1'(N9+$^9!(^1-(>5+&.A!'NE''.I%"
+ "&NE#&NI\"&^=$&.Q!&>Y!&>Y!&NQ\"*.Q'&^U)$^Y!'^]\"&^Y#'NM!'>=!&.U!'NY'"
+ "'NY!(^U!*.Y'&.U!&.Q!'^Y\"&.Y!%/!!+>U'!.U!'>E&&>Q!).U''.Q%&.E!$^M!"
+ "'>M!(^Q!&NI#(>M%'.Q%&.A!#^E\"&.A!$^5!)^Q&$^=!'>-&$^A!$N)!'>5!&^5%"
+ "&.5!%^1!).-$'.)%%^)!%^-!'N5(%^!!%-]#$MQ!'-Y!'-U!'-M&'-M!%ME!'-M'"
+ "%]A!%]I!&-M\"%MA!%M=!%M5&\"-1%&-=#%M-!'\\M'$=)!&<]$%M!!(,U#%!%"
+ "%^%!).1$'>)'%^-!&>!##N=!$^5!'>1&(.9*#NI!%N=$&.9!$^A!#N9!&>E!*NM4"
+ "&.A!&.Q!&.M!#^=\"$^Q!#NE!(^Q!)O%#$^Q!&^U#&.Y!'NY!'^Y\"&.Y!&.Y!*>]-"
+ "'_)(*.]!&.]!&.]!&?%!*?!(&.U!&?!!$^U!\"^Y#&.Y!*?!!&.U!&.]!&N]\"&.I&"
+ "&.]!&.Q!'>U!&.M!&.M!'>I&%.Q!'>A!&.I!&NI\"&>A!&.A!(NA!%^)!&.A!'N-\""
+ "#>-!$N%!%>-$&N-#%^%!&.5!%]]!%^!!$N!!']])%]Y!%]M!)-]%#=Q!%]]!&MY$"
+ "%-=($MI!$M9!&-A\"%]5\"&-A\"&-A#%M-!%]1\"'--#$]%\"%M%!'\\M\"%M)!$,Y$'L]%"
+ "%LU!&\\Q&%!!%]]!%^-!%]]!"
+ "(>!!$>)%%N5%'^-)'>1&!.9!$N1!'>9&(.=$&.I!&.=!%^A&&.I!&.E!&.E!&.E!"
+ "(NM,'>=&&NQ\"(>A+&?!!)^U,&.U!&?1!*^Y$$.Q#-_-+$^]!&?!!&.]!&.]!&.]!"
+ "&?!!$_!!'O-!&^Y#&?-!(_%!'O-!&?!!'^]'%^]%$_!!%N]$*.]!&.Y!&?!!&.Y!"
+ "(^U!$^U!(^Y!'NQ'*NQ##.Q)*.M!&.I&(.E)*NA0&.I!&.=!$^9!(^-\"%^1!&^9%"
+ "&.=!&.9!#N9!$N1!%.9\"+^)+%^)!&.%!%^!!&N-)'.!%&=]#$MQ!&-]!(-U!&=E$"
+ "'-A'%]I!(]A$%MA!&-=\"#=-!&-E\"$]9'']1*#=A!%]-\"%-1$#M%\"%!$'.1!&N-$"
+ "%^%!#^!\"&.5!$N1!)>5*&>E\"&.A!&.=!%^1!'.=%$^M!&NA#).I\"&.M!&.U!)^M1"
+ "'>Q+'>Q&(.U)&.M!&.Q!$_%!&>]!&.Y!&N]\"&.Y!'O!!&_!)&?!!(_!!&?-!#O1!"
+ "'_)(&O!\"'N]!'?%%&_9\"&O%\"&?!!&.]!&_!#%O!#$.Y#'/!*%_%$&.Q!'N]!&.]!"
+ ").]-+NU'*.U!&.Y&&.Y!%>Q#$^Y!&_!#'NI!'>I!&NI\")NA%&.E!'^)*(.A$(.=$"
+ "&.9!&N-#'>9!&^1%%^)!#>-!&>)\"\">!!%^)!%]]!%]]!%.!\"%]Y!(-U%(=Y!%]]!"
+ "%ME!%]I!+M5'%M9!#M9!(==\"&-5#%M5!&-9\"%]I!&]=!%M%!,M=&'LM!(]!!&\\]&"
+ "&9!'^=(+NE4$.I#&.E&'^M\"'^=(!>I''>M^Q\"'NY!"
+ "&.Y!&.]!$_!!&.Y!&.]!'^U(&^Y#&NU\"'O!'!/!!&.]!&?!!%/-!(_)!&?%!*>Y3"
+ "&?%!&?%!$_)!'O)!*_%#%_%%&?)!'/)$&/9%&?)!'O1!'O)!&?!!&O!\"&?!!&^]#"
+ "%/-!&.]!'>Q!&.Q!'NY!*.U!*^M**.M2)?!('NE!#NE!&.I!$^A!'^E\"#NA!&N=#"
+ ")>=/'.=&$^9!'.!!#>1!%>-$'>-!&N%$$N)!%^-!$^%!%^!!%]Y!%]M!%]Q!%]Q!"
+ "'MM.%]M!&-I\"#=E!&]A%%M9!&-=\"$]9\"&-A\"(=1#\"M-#(])&&=9$%M%!'\\Y!%M%!"
+ "%\\]\"$L]\"%LQ!&LM&%,]#%!!'=U''^%)'.%!%^%!"
+ "%^-!'>)'%^-!(^)(&.)'&.=!&.5!\"N5\"\">I!$^A!$^I!$^E!&>A')NY$&.Q!+NU!"
+ "\">U!)>Y)%^A&).U-(_%!&.]!'/5$&.Q!$_%!&?)!&?%!&O-!&?!!#O-!&?)!$_)!"
+ "(_%!&_)#&?-!#O!!&?)!&?)!&?%!(/A!*?)!'O),(_)!(>Y*'_%((^U!#O%!+>Q!"
+ "(O!%(_%!%?%\"&.]!&.]!&?!!'.M%&>U!$^U!'NM'\">M!*NM)'>I!(^Q!&.E!-NA&"
+ "%>=(&.A!&.9!%N5%&>5\"%^1!$>-$%^)!%^-!'.!!#>)!,>!)&=]#$]Y!&=E#$MM!"
+ "(=Y&&=U#\"MU\"#=I!'-I&&]=!&-A\"(]A$%]5!%M5!%]5\"(--'&=)$\"-%!(LQ!%]!\""
+ "&LY!&5&&.Q!&.Y!&.M!&.Q!+>A'$^Q!&.U!"
+ "(^Y!)^U,'>U!&?)!'N]'#N]!(_%!$_)!&NU\"&.]!'O)'&?%!&?5!&?1!'/9$%/5!"
+ "&_-#$^]!%/5!'_A''O-!&?1!'/1$'/5$*_1)+O-!&?-!%/-!'O)!&?)!)?5\")?%("
+ "$O!%*O!/&?%!&.]!'O!!%/!!$^Y!'>U!'.Y$'NY!(^Q!&.M!$^M!&>1\"&.E!+>M!"
+ "&>A\"&.9!&.9!&>=\"&.5!&.-!&.9!&N-)(.1*'.-!&>%\"&]]%%]Y!%]]!'>!')^!("
+ "(-M!%]Q!$]M!%]I!\"-E!#MA!'-1'%M=!%M9!%=-$&=1$(=1('=!)%]%\"%M%!'=%("
+ "']!!%LU!%M!!*1#"
+ "&.5!&N5#&.9!'.I/&.A!&.=!%.I!&.E!%NI$#^M!&.E!'NU!&.Y!&^A$&.Y!#>Y%"
+ "'N]''^]!&.M!%O%#&?%!$O5$%/-!&?)!(_!!%/-!)/5-%/-!&?1!'O)!#O1!&?1!"
+ "$?1#*_-)&?-!&_1#(?))'_1!&O-\"*?1'&?!!*?5''O1!&?9!(O9$&?%!'?)%&?)!"
+ "'/)$#NY!&?5!&?!!&.U!,/)/'O%!'/!$&.Y!&.Q!&.M!(NQ&&.M!'O!!(.E)&^E)"
+ "&.=!&.A!&N=#&.=!'^5#&.5!(^1-%^1!$.-#$N)!&MU$&]]%%.!\")M]!%]]!(=],"
+ "#=Q!%MQ$%]Q!\"-Q!%ME!%MA!%ME!$M=!%M9!&-=\"%]=!$]=\"%]5!#=)!'])+#]%#"
+ "&M!%(]%!)\\Y!&LQ!%LM\"%\\Q\"$%\"'.%&'N-('>1''.1!"
+ "%^)!)^9&&>9\"\">=!'>=!'>E!&.E!#^5\"&^Q#\">Y!'.Y%#NM!->Y*'^Y\"#NY!&.U!"
+ "$_%!&?!!%/5!&?1!#O)!&?)!&.Y!&/)&'_-(&?-!)/1!(?1$&_5\")/1!(/=\"(O5*"
+ "&O%\"&?A+%/1'%/5!&?9!&?5!)?5(&O)\"&?5!&?A!&?5!&?9!&?9!#O)!&?)!)/-!"
+ "&?)!)/)''/!$&?-!'NY!(_%!&?!!)/!-'>Q!$^Y&&.M!&?!!&.U!).A#'NM'(NI!"
+ "&.A!&.I!%N=$+>9((N5!'.A%&.5!%.-\"'.1%%^-!&>%#&=Y#%^%!*^!''-]!%]I!"
+ "%]Q!'>%'&-Q\"$MM!%]M!&M5%$=9!%]I!&-9\"&-E\"'=5(&-)#&-A\"%M5!&]5!%]-\""
+ "&-%#']%&%%&$^1!$N%!%^1!\">5!"
+ "\"N)\"&.5!&>9\"&.A!&.I!$^E!&.Q!&.Q!&.I!'NY!$^U!&^U$(^U!(^Y!(_)!&.]!"
+ "#NU!&N]\"&.]!&O1!%/5!&?-!*/!!&?=!%?1\"%/1!'O9&%_9*&?1!*?9!&?9!%/-!"
+ "&O1!%/=!)O9\"'/-$&O5!'_5'&_9\"&?E!&_M\"#OA!&_5#&?-!,_5&&?!!'O1!)_A*"
+ "&?5!(_-+'O)!&?)!%O)#'?-%&?!!%_!$\">]!&?)!&.Y!#NU!'>U!&.M!'>I&&.M!"
+ "&.I!'.E+&.A!&.A!&.9!&.A!$N1!#N=!'.1!%^-!'^))'.)!\"-Q!&>%#%]]!&.!!"
+ "$MU!\".%!'-A\"%]Q!%-M#']=%'-E''=A(%M=!&-9\"$]1\"%M5!(])/+M%3%M%!%]!\""
+ ")=='%]!\"\",M!%\\E##\\U#$\\E#%U!#NU!(>]$$_%!'?!%'.]/#O%!"
+ "&?-!&?)!&O)!#O1!\"?9!&?=!&O1(&?1!'?=%&_5\"&O=')/E!&?5!&?5!(/M!&?=!"
+ "%/=!&?A!'?=%&O=!'O=&&?=!&?9!)/A,&?=!)?=(%/9!&?9!&_9)(OA+'/1$&?)!"
+ "&?1!&?=!)/-!#O-!(?))%/-!$/%-&?%!&.U!#O)!#O!!(^]!&.I!'.Q*(.Q$&.U!"
+ "&.I!&.I!&>E!'.-%&.=!&.9!(N9!%^-!'NA!$>5)*N)%%]Y!'.-!(>%!)M]!%^!!"
+ "'MY#$]]&%]U!&=Q#%]M!$=E$\"-I!#=A!%]A!%M=!+M=!%]I!(-1+'-)\"'])+'--'"
+ "%]-!%M!&\"<]\"',Q#$\\I#'<=!$\\I#%LQ!\",I!%LI\"%\\A#%L=\"$,=!&<1!%L5'&LA\""
+ "%,!!%\\)##<1\"#+Y!&+]!'+Y!&L!'%[E!$[E!%+]%%;E\"%[E$'KE($[=!$[5!&[M-"
+ "#[1!%;5\"%+%\"$;5\"%[%%%;!$#[%!#[!!$:Q$#JI!\"JM##ZA\"%ZI*\"ZE!%*=&$JE("
+ "\"Z9!$J9!$J5!#J%!$*!##J1!%I]\"#J!!%:%(#)M#%9]%#9Q!$9M%#YM##IE\"#I=!"
+ "%I)(\"Y1\"%I5*%)-%&9A*$Y=#\"II!%IA##9A!#II!#YI#%9U%$)Y##IY!$:-#$IU\""
+ "$:5$#J-!$J1%#Z)\"#J-!#J%!\"Z9!#Z=\"\"ZA!%ZQ&%*Q'$ZM\"$:I$'ZU\"!:A\"#[!!"
+ "\"Z]!#[!!#[%!#[%!![9!$+=!$+5!%[9!&+M%%+A%&;A&![I!$[I!'+M!$K]#';U+"
+ "%KM#&+]!&\\%#$,%!%<9!$<)\"',5-%\\9#%LM\"'<5*&LA\"%\\A##,5!$LA\"$LA\"&\\Q&"
+ "%)'%^%!%^!!%^1!\">-!(>%!\".1!"
+ "&^9$&.I!&NE#%^I%'>E&&.M!&>M!$^Q!%>]\"%>U((.Y)'O!!&.U!&.]!&?)!&?-!"
+ "&?-!#O)!&?)!$_!!)/%!)/E!&?5!%/9!#O=!&?9!&?E!&?=!&_E\"&?=!%/E!&_M("
+ "&_A\"&OE!'_A!'/U#&?5!'?E$(O9$)_A#&?9!&?A!&_A\"&?=!)?-.&?9!&?=!&?5!"
+ "&_%#'?5%&?1!(/1)&?1!'O)!&?)!&O%\"$.Y##/1$&.]!'>E!$^Y!&.U!)NU/\">]!"
+ "*.M!&.Q!&.I!&^I$&.M!(.A*(^-.&.A!'N5'&.=!&>%(&.-!\".%!%^!!&-]\")]]("
+ "$MY!']Y%&-U\"'-U!']M*%]I!&-I\"%ME!%ME!$]-\"%M=!#=5!%]5\"'M-.%]1\"&M%!"
+ "%]!\"'-!'%L]!%M%!'M!*$A!'.)&&.5!$^9!&.9!"
+ "&.9!(^A!)^E!&.I!&.U!&.A!&^U#'.Y$#^I\"&?!!'NY!'.]%%/-!&?)!'O%''O)!"
+ "'O-!(_)!&?-!)?1))?5!'_9!&?E!)?I!&?=!#O1!&/E%'/A##OA!)?E'*OA!*_U("
+ "&OI')_A*'_E!)/9!#OA!(/A!+_E!'_I!)/A!*O=!'_A!&_=\"%/=!&?=!&?-!'/9$"
+ "#O9!'?5*%?5\",_1&&_1)'>Y&'/-$&O-!&.Y!&?)!$_%!'>]&$^M!$^]!&.U!+.Q,"
+ "&.U!(NI!)^I&&.Y!&.E!(.A)&.9!&.9!'>1&'N%\"%^1!$N)!%N-%'.%!\".1!'.!!"
+ "&=M$%^-!&]Q%'-]!%]U!#=E!(-M%&=E#$ME!)MA-(=I,%M9!'=9('=1-$=-!']5!"
+ "%-=#%M)!'-!(%<]!&LY&$-$&N=#'N5').5/*^A%(>5+"
+ "(^A-(^E-$>1*&.=!&^M$#^E\"&.Q!(NU&(N]+&NY'\"NU!*_!#&.]!&?-!&_)#&?-!"
+ "(_1,&O1!&?-!&?=!&?=!&O9!&?=+%?A!%/=!&?E!'_A!*_Y!'_A!*O=!*_E(&OI!"
+ "&_I\"+_=!'?I$&?E!%/]!&OI!'_I!&OU!)/E!&?A!*OE!'_E!-?I!#O=!'_A!'_A!"
+ "#O=!&O-\"&OQ!&/Q$)/5!&?=!&?)!&?E!%/)!%/%!$_!!&.]!&.]!&?%!(/)('>U!"
+ "(^Q!'_!(*>U\"&.M!&>E!)^E!(>A&'.5&'>=&'.I*(N5,&.5!%^%!$>)*%^)!'^%)"
+ "\".!!'.!!%^!!\"-U!&]M!%]Q!&=Q(#=I!$=9!%MA!$M=!$]9\"'-9\"%]M!$]1\"']-!"
+ "%M%!'M)$*-!!$L]\"&,Y(%-%$%\\U\"%\\Y\"%LM\"&!!&N5#%^-!%^)!#N=!$^E!&.A!&.I&"
+ "(NE&'^A('NM''^Y('^U(&.Q!(NA,'N]!&?-!'O!!&?1!&?-!&?1!&N]\"&_%#)/=!"
+ "&?5!!O9#$_%!&?9!%/9!)/5!&?=!%/Q!*OA!*/E%*/E+*OM!,_E+#OE!&OI!%O=#"
+ "&OM!'_Q!&OM!'_M'(_E+(/Q!&_=\"'OM%\"?E!'/M#&?E!'_I!)/9!)/E!'_I!'_I&"
+ "&_I\")/=,(?9)&_9\"\"OE!'_5'&O)!(/=(&?-!'_!!)O%#$_%!$_!&&N]\"&>]!&.U!"
+ "'NY!&.Q!&.M!$>Q$&.M!(NM!%^1!%^-!%^%!&N9#&>-\"'N1('^-#%^5&).-$%^!!"
+ "'-U!&]]%$MY!'=Y((=Y!%]U!!-I!%]I!!-E!'=U\"&]=!!]A$']5!%M5!'-%#\"--!"
+ "(])&&-%$%M!!&\\]&&-!($!%$MQ!&MY$%]U!$MU!&-Q'-N%.&M]$'.-!$N1!&>5\")^9'&.9!)>5%&.M!"
+ "&.E!(.M)&.M!&.Q!&.U!&.U!$^M!(NI!'N]'(?!)&?%!&?%!'?)%&?-!'/-$+O1'"
+ "(?5#&?5!&?A!'O5!&?=!'/E#+OI%+_E!&_E(%/I!&OM!&OQ!&OI!&O]!)?M!&OQ!"
+ "&OI!%/E!&OU!!/Q!*OM''_U!&OU!&OQ!&OM!)OM\")OM((_I+&OI!'_E!'_A!\"?5!"
+ "*?E&&?9!&OM!&?=!'?9%!/5!&?%!&?)!&?-!&?E!#O)!'?-%'_-'&.]!(/)(&.Y!"
+ "'^U(&.Q!&.Q!'>M!(NE!&.I!&>-\"+NQ-\">I!(^='(.=$$^A!+>E!(>->)!)>%+"
+ "#^!\"&-]!&>!\"'MQ#%]Q!&]M!%]M!%ME!)=I!$=9!%ME!&-9#$M=!&M)!%<])&M-!"
+ "%M)!&]5!',Q#%=%$%\\]\"%\\]\"(-!-'LI+&%!%^)!$^9!$N-!'^9#&.9!$^9!&.=!$^A!&.E!"
+ "&.M!&.U!$^M!&^Q#&.M!&?1&&.M!&N]\"&?!!&?!!&?)'&?)!'O%!'O-&&?%!,O9%"
+ "'O)!#O9!(_=%'OAOA!'_=!&OM!&?E!%/E!&OI!&OM!'?]$'_M!%_U#&_U\"&OI!"
+ "#_M!-/Y,&OM!&OY!'/U)&_U\"(OM$%_M#(?Q)&/U$'_Q!&OY!&OI!#_Q!%/=!*_A\""
+ "'_E!(/A\"$/Q\"&?=!&OE!&?9!&?9!'?-%%/1!&?5!,?A\"'O)&'O%!$_)!._!1&.Y!"
+ "#.U)&.Q!$^Q!&.Q!%^M%&.Q!&.A!&^=$&NM\"(N=!%^1!(>5&'.-*$]U''.-!&=]#"
+ "$N-!%]U!'-Y!%]Y!'-U!%^!!&-U\"%]M!%]I!']E$%]A!&M=$&M9%(]%*$M5!%M-!"
+ "(M1)%]-!&=-$&\\]!%5!&N)$%^-!%^1!&>1\"&.9!'>9&'>A!&^Q#'>I!"
+ "%.I!&.M!&.E!+>U!&.E!&.U!(_!&&.U!'_!\"\"N]!$^]!#O%!'O1!&?1!'O1!)/5!"
+ "&?5!'_E!'_=!)?M!'_E!'_A!)_I*'_Q!&OI!%/E!'/9#+_Q&&?E!\"OM!&OU!)_Q#"
+ "!/]!&P-!&OY!&P)!(/]!)?I!'_Y!)/M,(/]!&OU!&OU!(_Q$&OY!(_U+'_M!(?=)"
+ "%/=!-/M&)/=!&OA!%?=!'O=&&OI!'O1!'O%!'/5$(O9*&?1!(/-)&?!!&?%!&.Q!"
+ "&.Q!'^Y'(NE!$^Q!&.M!%.Q!+^M)&NI#'NA'&.=!'>9!&^9$&^5%(>A+%^-!%^)!"
+ "$^%!%^!!%]]!&]U*&N)#&-U'%=I$'-U!%M9!*=A=A!&]A&(=9,'M5)&M5%'M5)"
+ "%]%\"%]!\")-1&'-%\"$!!'>9!'>5!'^-#'N1\"'>5+&NE#$^I!&.A!'>A&'^E#"
+ "&.I!#^E!%>M\"*NY\"(NA,&.U!'O!!$^]!&?%!&?%!'O)!&?9!&?1&'_A''O5!)?9!"
+ ")/=!'?=$)/A!*OM!&?5!#/I#(OI$)/E!)?M!&OI!$/U(&_U!&OU!'_Y!%_Y#'_U!"
+ "&OI!+?]*&P!!%/]!%0!!(/]!&O]!&_Y!'/]\"(OY*(/Q')?U!$/U\"#_M!\"_I\")OQ\""
+ "'_U!(?E)%/I!'_E!&OM!&?=!+OA7$_Q%*O=!'?-+(?1#&?1!$/1\"&?=!&?%!'O)!"
+ "(^M-&?!!#NU!&.U!&.]!(>I+'>U!(NI!&>I!&>E\"%^)!&.!!&.I!%^-!%^!!'.)!"
+ "(>!!'.%!$N1!%]Y!)-]*%]Y!']Q$%]Q!&]M!%]U!%ME!'-=\"%M=!&-5#%-5#&=12"
+ "(M)$%M)!$M-!(]%!%-!$&-%$%L]!'LQ!%1&'^1)(N5!'>A!&>A\"%.I\"&.I!&.]!"
+ "(NI!%>I()NQ*(>I%$^Y!(_!,&/!&&.]!)/-(&?)!$_%!'/1$'^]!%/5!'O1!'O9&"
+ ")_A/)/A!-?1)+/E#&OI!&OM!$/Y!'OU%&_Q\"&P!!\"?U!#_]!'?Y$&OU!(/]!#_]!"
+ ")/],(_Y$'@!#%`1\"&P)!%0!!&P%!&O]!&OU!'/]/'/Y#&OU!&OY!&OU!'P!%(/]'"
+ "#_M!%/]!'_E!(/I!'_=!&?=!%/A!&?A!'O1!&?5!&?1!&?A!%/-!&?)!&?%!'>Q&"
+ "%NM$+N]'(NM!'>A!'>Q!'>M!&.E!&>Q!'>E&+^=+&.=!%N1$%N9$(>-!&N-#$^9!"
+ "&^)%'>!\"%^!!%]U!$MY!%]U!$MY!%]Q!%]Q!%]I!%ME!%]I!#]E#%M1*%M5!']-*"
+ "'-9'']-!'])+%M1!'=))'%!%]U!#MM!%]]!&-U!%^%!)N)1(>)!'.%!&.=!&.9!&.=!'>E!&>A!&.Q!$^I!"
+ "&NA##NY!,.]$&.M!&.U!&.U!&?)!$_%!'O)!&_1\"&?1!'O1!(/9(%?9\")/=!&?=!"
+ "&OI!'_E!*_E\"%/M!'OI%(_Q$'OM%&_U\")/U,&OU!&OY!&_]!&O]!&OY!)P-!(@!\""
+ ",@%!&OQ!(0!!'`!,-`1!(?]\"'_U!'0-\")@!!(O]))OU.&`%'&_Y!'@!$&_U!&/Q%"
+ "'_Q!&_M\"#_E!%/M!,/E!'_9!&?1!\"?1!%/9!&?9!&_5#)/1!&O)!&?-!$_)!&?%!"
+ "&O!\"&.Y!*?%!&.Q!&^U$\">Y!$^M!'^Q\"&>M!$^=!&>A!&.9!(NI!$^5!*.-.&.)'"
+ "%]Y!&^-%%^!!$M]!\".%!%]A!%]U!$MQ!%]M!&]I%%M5!%]I!'==#&-A\"%-=$(-A!"
+ "'-1'#M-\"$=%!$]%#&,]#%<]!%LQ!%\\Q\"&)!%]Y!'N-(#>)!'>5!$N1!'^-#'N9'&.9!%^1!&.E!#NU!&.M!"
+ "&NI#%>Q\"#NY!*.U!(^]1!/%!(?!$&?5!&_1\"&?1!&_1\"'_5'&?=!&?-!+_=!(?9)"
+ "'O-!'_A!*/M$%OE#(OM$(?M\"'_Y!)?Y!(@!\"&OU!-0-#%O]\")@-&(0)!*`)!,@-'"
+ ")`%)&P%!(0!!'_U!(@%!)P-!(/]!(0%!(OQ#,@!!)@!!&O]!&P1!&O]!%/Y!&OU'"
+ "%/]!&/Q%&OM!)?M'&OI!,?E/'_E!\"?Q!'_=!&?A!&O1!*O=-%?1\"%?!($_)!(/1)"
+ "&O!\"&.]!&.]!$^Y!&NU\",NQ!&.]!'N]!'>M!&.E!\">A!&.5!%^-!%^)!&.-!%^)!"
+ "%>1#$N)!&.%!&.)!'-Y!%]U!)=Y&%^!!&]A!$MI!']9%'-U!$MA!%M=%%M9!&M5%"
+ "'-9,&-A\"%]-!#=%!&,M#%M!!%<]!&,Y#',Y##LI\"%-!%^)!(>1+*^1%&>5\").93#NA!'^A(&.Y!$^I!)^E!"
+ "'NQ'%NY$*.Q!$^Y!&.]!(NQ&%?%\",O),'/-$&?!!&_5\"'_E!(?%*)/5!'_5'&?=!"
+ "&?E!(/9(&OI!)/Q&&OM!&_Y!(/Q-)_Y.)?]!&P!!(0!!,?Y4(09!'_I!(@!\"(09!"
+ "(0-!(0)!+0-!(@)!-`)!)@!!(0)!(P9\"(0-!)0%%)P)!(@!\"%0!!&OY!&O]!&OY!"
+ "(_Q+-OY!&OI!$?M#$OE$(/E!*OI!'?=%'_I&%OM\"&O9!#OA!&?1!(/=((/%#'_)!"
+ "$^Y!&.Q!&?%!$^U!'>U!&.Q!&NQ\"'>M!&.9!&^Q$$^A!&>=\"%.9\"&.5!&>5\"%^1!"
+ ",.%-&N1##>!!\".!!&-]'&-]!&]U%'-]!&-M\"&=I#'=I('=E\"&]A!%M=!&M9$%M-!"
+ "&]1!&]1+%M%!%M%!*-%&%M)!)-!,%)!%^%!'N5(%^-!%^-!(>)!&.=!&^9%'^=#&.5!&NM\"&.=!&.U!"
+ "&.I!+>U!&^Q#&.]!#^]!&_)(&?)!$O1$'O)!&?1!'/=#'O5!(/5((?=#*OA!'_I!"
+ "(?I#%?I!)?I!'_Q!%/]!'_Q!%@%!(?M\"'P%$(/]!(0)!$0)!(0)!\"@!!)@!!(09!"
+ "(0-!/?Y)(@A!(0-!(0%!+@-),@-!)01%)@!!)P)!+@-/#`%!*?Y,'_Y!'?U$(_]+"
+ "&O]!)O].)?Y'\"?Q!&OI!&OI!'_Q!)?Q!&?A!&?=!&?-!&?-!%_5$&?1!&O-\"'_)!"
+ "&?5&&?!!&.]!&.I!\">]!$^Q!&.Q!&.M!'.=%'>U&&.=!$^=!\"N=\"&.9!%^-!&>5\""
+ "&.5!%>-$%^!!$N%!&]]%%]Q!$MY!(=U!!-Q!&]M!%ME!)-=!&]A!&]A&&-E\"$=A$"
+ "%M1!%M-!%]5\"$<]!$=%!%\\]\"%\\Q\"%LY!&\\]&'LI*%!$%^%!%^-!$N%!'.)!%^-!&.9!$^I!'NE!(>E%'>A&)^I!&.I!"
+ "&.U!&>I!'^Y'*.Y!&?!!'O!!$_)!&O)!(O5%'/-)*?5,&?9!'_=!*OI!!/A!)/A'"
+ "(?E#&OI!&OQ!(_9%!/U!%OY('`!&&P!!(0!!(`!$(0!!(@!!(05!(0-!-0)1&01$"
+ "#`1!\"@1!'01\"(01!(01!(/]!(P)\"*`%!&`-!*0-**P-,'0)\"(_U%(@%!+/]!)@!!"
+ "&O]!*/U+(/Y'%/U!&OQ!'_]&&?=!'_M!%/I!#_I!&_A\"&?9!&?5!&?1!&?1!#O-!"
+ "+_)(\"?%&$_!!'N]!&^U#'NU'&>I!&>M!#NI!&.E!$^E!&.A!'.A&)^9!)N1!#N9!"
+ "%^)!'.-!%^%!&.%!$N!!$M]!$]M\"%]U!'MI)(-E&%M5!%]M!&MA$&-=\"$=9!%]5\""
+ ")MA(']1/%M1!%M5!#M%\"&,]#%-!$&L]&$\\Q#$LA\"')\"(^)(%^%%'^-#$^5!%^-!(>1!&.=!)^9''>A!&.I!&.M!%.Q!"
+ "*^U5'.Y$(^Y!#NY!%/%!)?!#(?-#&?-!%/1!&_1##/5$&?9!&?=!)/A!&?9!&OQ!"
+ "&?E!&OM!&?9!'/Y\"&OM!&OQ!+0!!*0)0#?]$&P%!'@1#&P-!(09!&`9!(01!)`-("
+ "&P1!)@A%'`-%#`5!%`5#&`5!%@%!)@A%+01!(0-!)P-!,@9&+0!!%@1!%@%!(0!!"
+ "%?]!(0!!*OY&&_U!&P!!&?A!)_I*&?E!'_=!)OA.(_5&&?5!&?%!&O1('_A!&N]\""
+ "*/!2\"?=!*>]''O%!&.Y!(/%('^Y\"#NQ!$N=%-.E0#NA!&>=\"(.%*&.A!&.9!'>5!"
+ "&^!%&N)#%^)!&.5!%]Y!$]Y!&]Y*&-U!(-Q%%]M!%]Q!&=A($MA!(]A/%]='(-9'"
+ "'-5'$]1\"%M-!%M1!(M%$&-%#&M!%'LY!&,U#%LQ!$5&&N5#&.9&!.=!(NA&)>A$&.E!&.Q!(NM!"
+ "'>Q!'.U%'^]\"&.U!'O!!(_%&&O-!'_-!&?9!#_9!\"?=!#_-!*_9))?I!)?E')?M'"
+ "&?E!'/U#&P!!-?E'(/]!\"_]((/]!+@)/)0%%(@)!(09!)@1&+`11&01$)P1!'P5$"
+ "+P90(05!&`9!'@A)(09!&`5!&`9!%P5!'05\"#`5!,P5!)01%&P-!(0%!)P)!(0%!"
+ "(0!!(0-&&OU!&OU!&OU!'_I!&_I\"\"?Q!%/U!'_A!#OA!&O=!&O9!%/5!'/1$)_)*"
+ ")/5!'^]\"#O!!'N]!'.]%'?%&*>E)&.Y!&.I!&NI\"&.=!\"^A#(N=!&.A!&.5!&^9$"
+ "&.5!&N1#(>)+).-)%^!!%^!!(-M+'=I(#]U#%]M!%=A$)-9+)=M!&-A\"(MI-!==\""
+ ")\\]%#=1!%M)!%LY!\"=!\"%,Y,',U#$L]\"%]&'O!'$^]!$_)!&?-!&?5!(/A('?E$&?=!'_=!(?I#&/E%&OI'"
+ "&OM!+/Y)\"OU''OY%)/Y&&O]!(0%!'P)$(0!!.@A/&P%!*0-#&P-!$`A$&`9!'01\""
+ "%@9!&`9!\"P-'&`5!(05!&`5!!0=!(`9#&`9!&`9!&`5!)`5((0-!&P!!(0)!'_U!"
+ ",/]!&O]!&_]!)?]'%/U!&OQ!'?I$&OI!'_E!'_E!%/9!&?=!&?9!(_)!&?-!&?%!"
+ "$^]!'/%$%/5!(^]!#NU!(NY&&.]!'O!!\">Q!&.]!&.A!&NA#&N=#&>=')^9!&.5!"
+ "(.5*%>-(&>-\"&.!!\"-]!(>!,$MY!&MU$%]U!&=M#&-Q\"'MA$$MI!'M=$&-E\"&-9\""
+ "%M-!*=1,$]1\"%=)%%]%''=%$$<]!()!%^-!%^)!)>-%&.9!'.M%*.U!%^1!$^E!&.I!&.U!%.Q!"
+ "'>U!&>A!$?!#$^]&&?%!'?!&%NY#&?-!&?)'&?5!&?5!&?9!&?E!)/E!#`!!!/M!"
+ "(/Q('?M$&OU!'/Y#(/]!&OU!(0!!(`!$)0%%)_]))P5!(0)!'P1$'01\")P=!&`A!"
+ "(@=!(@A!+0A')`A!*@A*(PI!&`-!&`=')0=*'@1#(P5\"(@1!&P1!(0)!)@!!(P)\""
+ ")`%\"(_Y$%/U!(0!!'_U!&OM!$/U\"&OQ!&?A!'_=!&?A!&?9!'O5!(O5$&?-!&?1!"
+ "&O-!&?!!&.Y!%>]($_%!&?%!%NQ))>Q#(NM!&.M!$^9!'>I!$^A&(.=$(.9*%^%!"
+ "%^1!&>%#(^92&>1\"%^%!(>!!(-M0+-U#(>!!%M=!%]M!&=I#%-=#$]=\"$M=!%MA!"
+ "&-=\"'-A\"&-=#)M!.*-%!'-%\"'-!'\"5\"&.5!&.9!&.I!&.Q!&NI().U\"&>E!(N=!&.Y!"
+ ")O!*(N]+&^]#&.Y!\"?)!$_!!'O1&&?5!&O)!&?9!'_9!&O=!(OE$)?Q!%/M&&OM!"
+ "*OQ!&OU!(/Q!%/]!'?]#)/]%(0!!(09!-`9'*@1+(`5#'P1$)P1-%@=!(@=!(@=!"
+ "&`A!'`I%(@Q!(@E!*PM*)@E%&`A!)`Q!(@A!&`Y!&`=!'PA*(01!)`%)(01!(`=#"
+ "(0)!'_Y!#_Q!)/Y_I!(?]('_Y&&OM!#_M!(?M\"&?A!(_=/9)&?9!&?5!&?1&"
+ "'O-!%/-!&?%!'NY'&NY\"*?!!*>U\"'.U%$^E!&.I!(.E)'>A!&.A!$N1!(>9+(^-#"
+ "#N!!$N-!'.)!(>!!&^!%$M]!&=I#%]Y!%^!!$=U%%]M!%]I!*]Q!'=E(\"])$$=5!"
+ "&-9\"%]1!&LY!$M9!'M%%%=%%&=!$%M%!&M!%%]'&?5!(_)!'O)'&?!!%O-#&?9!(?9*%/E&)OE\"'_E!(?I\"'_=!"
+ "%/U!(`%*%/]!+`)%&P)!(0)!+P96,@)!+0-!(0--'P5$)`9.'05\",P=!(@=!(`I\""
+ "+@E')`A!&`Q!+@A!)0I$#0U#&`9!(@E!(@I!+01!&`9!&`A!#`5!+`%2(0-!(/]!"
+ "(0)!)P%!&P%!(/]!#_]!#`%!$?Q#&OI!&?A!'_E!*?9&(_I%&OA!'O5&*?5!'/1$"
+ "&?-!).U\"&?%!'/!$#N]!%NY.&.]&$^Q!'>QNI!&.A!'>E!&>A!&^1%&.5!'>9!"
+ "%^%!%^-!$>)%%.)\").!%'^%*)M]!%]I!%-U#&]M!&]M%']I$&MQ$&]A&*-=%$]9\""
+ "%M9+(-%,$]1\"']%!&]-\\]#&\\Q\"$\\E#'\\Y+',U#&A!&.E!'>A!&.M&'^U($^A!"
+ "$^U!&.]!$>]$&.Y!&?=!&?)!&O-!'O9&)/A&'O1!&?E!&?A!+?=+&_I\"&OM!#OE!"
+ "&P!!%_U)'O]%)P)'#`%!(0%!&P%!+@-\"&P1!#`1!,P5!(`1#(@=!(@A!+@]!(`A#"
+ "(@E!*PM$)`M!&`E!%@M&(@I!'P9*'0E((@E!*PE+&`9!*@9#%@A!,@-!(P-)(0-!"
+ "+P)1,@)!(0!!'_]&(/E!&OM!%_U)&_M\"&?A!'_Q&'_E!&_A\"&O=!'O=O5!%/5!"
+ "\"?9!#O!!)_%%*O-!(^U!$_!!&.Q!%>Q($^=!&.E!$^Y!(NE!&N-$&.A!&.I!'.5&"
+ "$N%!%^)!)>-*)>%0(-U+&N!$%^%!%^!!'=Q\"#]Q##=M!%]I!'=A#&M=%'-5'$=5!"
+ "%M5+%M1!&=-$$=-!%])\"$=5!'<])&])&%M!!$1\"*^-!$^5!&.I!&.=!&.9!*.I-#^I\"&.M!'>Q!).U\""
+ "&.]!'O!')/!-&.Q!'/9##O-!'O-!'O1&&.]!'_9!&?A!&?E!(?M\"&OM!$/Y\"%OQ\""
+ "&P-!%/9!%/Y&&_]!*@!$(0-!(0%!)P9!(01!&`9!(09&)`9(+P5*(09!)`I!(@I!"
+ "&`M!)`E!*0]!'@Y\",@M%(@I!%@M!(@A!#`9!(@Q!+@=/&`M!(`A#&`9!(@1!(0-!"
+ "*0)))@%&%/]!'_Q!+?Y#)OU!&OU!&OQ!&_M\"&OE!&OE!&?A!)/='$OE$*/1+)/9!"
+ "&?5!$O1%'/%$)/%!&?!!$^]!&?)!#O!!%.U!&.Q!$^E!).I.$^A!&N1#&N1$%N1$"
+ "&.%!$^I!&.)!&.9!'.%!'.!%%]Q!$MU!&-U!%]U!'=M\"'-Y!)-9&(-A!'=5##M9\""
+ "%])\"&M1%#=-!&]-!%M)!%]%\"%]!\"%M!!&\\Y!#)+(>A%&.5!%.A!'>5!'>9NA!*>I\"&.M!$^I!(^U!"
+ "(_%!&?!!)/!($_%+'O%'&?9!&_1\")/5!'?-%&?1!\"?=!&?9!'_E!'OM%&OM!&OQ!"
+ ")_Y\"&OY!&_]!&P)!(0!!*_Y!%@)!\"@-!(0-!%@5!&`9!&`I!,0E$)PI&&`A!(@E!"
+ "(@M!)0I$+0Q,(@]!&`Q!+`Q\"(@]!*@I)(@M!&09#&`M!+PM/(05!(P1)(01!(@-!"
+ ".P)$'_Y!(/]!&OQ!&OY!(?]/&OQ!&OQ!'_M!)_E/+_E,&?A!&?=!&?5!'O!!&_5#"
+ ")/-!'/)$(/%((_!!&O%\"&?!!'>Q!&.I!&^M)&.U!'>E&'>M!&.A!&.I!'NA'&>5\""
+ "(N1,'.-*(>-!*>%*,.%-%]Q!%^!!'=U\"'-U!(-U*(=Y!'=I()=E1$MA!'-=!&M9$"
+ "'M5$$]A\"&]1&&M-!&]-!'M%%\"-%!'-%''LY%),Q'#,M!&,I#%\\A#$LA\"&,I$&\\9("
+ "%L=\"%\\=#%<5!%,1!$,5!%+Q!%,)!%9!%^)!'-]!%^!!&>1\"&.5!&N9#&>-\"#N=!&.=!%>=#(NQ,'^Q(#NU!"
+ "$.Y#$^]!&?!!&O)\")O!)(/)(&?-!%/9!&?=!&?9!&?5!$_5*+?5+&OI!*_M(*@!%"
+ "\"?U!&OY!&P)!&`-!/0!!)P%!(0%!&P-!(/]!(`=#(`9#%@=!(@I!(@E!,@U+&`U!"
+ "*0U!*`Q+(@Q!)0Y#)`Q!+@I!/`Q!(`E\"(@I!)@E%*PY*(P-\"&`9!%@9!(01!(`-$"
+ ")?]&(@)!(O]#&P-!&P%!&P%!&O]!&?U%&/E%'_M!'_E!&/A%#O9!*OA!)?=('O1!"
+ ")_-%%/1!'_1''?!&+O!!(/%\"%^I%\">Q!$^U!'>E!$^I!%.E\"'NA'$^=!&.=!#>1!"
+ "$^-!&^-%%^-!%^%!#>%!$N!!%]]!(>-!%]U!'-Q&(-M!%=I$'ME$(-=!'-5'$=-%"
+ "%M-!&=5$%M1!%])\"&M-!&=)$',U##,U!*\\Y*$!*'.-!&^5$(>)!$^1&(.1*'.-!&^5%'>A!&.A!'^E\"&.A!&.Q!'>U!'NU,"
+ "&.Y!&?!!(?!)&?)!%/1'#O)!#_1!\"?-!'/!$&?9!%/=!&?E!%/A!&OI!'OM%)OI)"
+ "#_U!'O]%)?]!$P%#(/]!(0-!(0)!(05!+01!&`5!,P9!%@5!&`A!(PI!*0I\"(@M!"
+ ")PQ&(@U!+@Y!+P]!(@]!)PY%-@]\")`M!)`E')`I!&`=!%@A!%@9!#`9!)01$(01!"
+ "(P)\")P%!(0!!(/]!+@!0&OY!&OU!*OM!#OE!)_Q)&OM!'_=!'/=#'_9!+O1!\"?1!"
+ "(>]*)?)()_-1'/9$&?%!&_!)&.Y!'?)%&NY\"&.M!)^E!$^I!'^=)(N5!'>=!&.=!"
+ "%N5%&.5!%^!!%N5%'.%!%^!!%]]!#-Y$)-=!'-M]M(&=E$&]E&&M=%'-E'%M9!"
+ "&M%&&M5*%M%!']-!%M)!%1\"&>!\"%^-!(^M'(.9$'>A!'N='*N5+&.I!'NM''>Q!%^U%"
+ "+>Y-'O!!&O-\"%_!$(/%#(_!!'/1$(/1\"&?9!$?1#&OI!)_A#'_M!(_I%&OM!&P!!"
+ "(OY*&P-!%?]'*_]!(0)!%0!!,@)!)@5&%@-!(05!%@=!&`E!(09!(@E!'@I\")`A!"
+ "(@I!)`U!&`U!*@E)(@M!.@]!*`]+(@M!/P=!&`M!,`A!(@=!)P=!&`5!+05!)P-'"
+ "(P)\"*P%,*`!-&P!!&O]!&OY!%OU\"&?E!&OM!*OM!(_Q$./A%&OA!&?9!&?9!&?1!"
+ "&?1!&O)!*O)($_!!)?%.&>]!'NY!&>U'&.Q!&^Q$&.I!(.U##N=!$^=!&.A!(N1'"
+ "#NA!%^1!%^-!$MY!(=Y!%^!!%]]!%-Y\")=Q!(=M'%ME!)=I!&M=$%MA!&-=#(=9,"
+ "&]5&%]5!+])4*-1%%]-\")=%\"$=!!&\\Y!%!#(=Y!"
+ "&MU%%]M!\">5!'>)!&^-%%^)!&.9!'.)!&.9!'^=#$^=!'>E&'>I!&.A!'.U*&N]\""
+ "%O!)&.]!%O-#+O%!&.Q!'O%!&_5\"&?-!(O5*%/-!&?=!&?9!#OE!&OM!&OM!)?Q'"
+ ")?Y!&OY!*@)+'?Y$&OY!&OQ!(/]!(P-\"&`5!&`5!%`)#&`A!(@A!(@I!&`E!(@I!"
+ "(@A!(@Q!*0U!)0M#(@E!)`M!&`Q!%@Q!(@E!)P5')0E$&`=!,@1-&`5!#`!!(@)("
+ "(0!!(0%!&OY!(P))%@)!&P!!&OM!&O]!\"_U\"%/A!(/M!&OA!%/=!'_9'*O5-%/1!"
+ "&?)!(_-&$_%!&?%!&.Y!&>Y!&?%!&?!!$^Q!)>M.#^M\"&.M!&.=!$^=!%N=$&.5!"
+ "&.9!'^%)(.-%%>1#%^!!)M]!%]Y!$M]!&]]%%]U!%]Y!'-A\"%ME!$ME!#=9!$=1!"
+ "%,]#&M5*']5!#,]!%M1!&-!$&=%$&,]#$!\"$^)!*>!%%^)!&.=!'.-!'.-!'>E!'>=!%^1!&.=!'^I-'.I%'.Q%#NU!&.U!"
+ "&^Y#*.]1$_!!&O1!&.Y!(_%'&O-\")/-!&?5!!/5!&?A!'?9*'_E!%/I!&OM!)?Q-"
+ "'?M*&?E!&/M%%/Q!(0)!(`)$,@-!)P)!'P1$%`1\"&`9!&`I!(@=!(PA!+0I-(@E!"
+ ")`M!(@M!+@Q'(@Q!(PQ!(@Q!(@M!&`=!)PQ`9!$@9\"&`=!(09!%@5!&P1!\"`-\""
+ "(0%!(0%!(`%$&OY!&OM!&OU!*/U+&OQ!&O]!&?=!)?E(&?A!&?E!#/9#%O5#&?)!"
+ "'_-'%/-!&.Y!\"NY!$_!!,/%#%NY#&.U!#^Q!&.I!).A($^E!%.Q!(NA,&N9#'>=!"
+ "(^!)$N!!%^)!%^1!&-U!%]Y!%^!!%]U!'-Q'(MQ\"%]I!&]Q!%ME!%M=%&]A!*-=/"
+ "&=5$(M1.%]5\"&=-$%M)!%]%\"%-!$^5!%^%!'>-&$N-!'^5)%^=&'>9!$^E!#^I\"#NM!(NE!+^U4"
+ "*NI$(.Q#$>Y$&^Q##O!!(_-,&?-!#O-!%/-'&?A!&?=!#OE!'_I!'/I#'OU%%/A!"
+ "(/M(&OU!&OY!'_U!(0%!(P)\"(@)!-0)2)P9&(01!'`5%(@1'&`9!)P9!(@M!(@=!"
+ "(@U!)`I!*0M((`M\"*@I#(@E!&`E!)`E'#`M!,0A2+@1)'@5#&`A!)@!!)P1'(0-!"
+ "'`)&+/U\"&P!!'P-$)?]!*_M4'_M!&OM!'OE&)?M-(_9%&OA!'_9!%/1!&?)!)/A!"
+ "&?5!&?)!\"?)!#O%!#N]!&?!!&.Y!&^M$&.Q!'>M+&^E$'.E%&.9!'>=!&^9$$^5!"
+ "%^-!*^)!'>)!\"-]!&^5$'.!!(=]!'-Q&%]M!$MI!&]=!#=I!)-E+#]I\"'=E\"%M=!"
+ "$=9!(=9\"%]!\"%M%!']-!&M)!&]!\"%M!!'<]$(,Y#$A&&NM\"&NI\"$^Y!$^Q!&.U!"
+ "$NU%(^Y!'O%'&?!!#O%!&?)!'O5!*O-(+_9!%/1!%/I!#?A%)OA\"&/=%'?M$&_M\""
+ "&OU!&_Y!&P1!&`%!(/]!)@)&)P%!)0)%(0)!)P1!&`5!%@I!)`A!)`=')@5%(@E!"
+ "(@E!(PI!(@U!(@I!(@A'*0=)(01!(@E!'P5$(09!%@A!'09!&P1!(@1((P-\")01$"
+ "(0-!,@%!)P!'&O]!%OI\"&OU!,OQ*&OM!%/I!)?I'&?=&'_I!*O=3&O=!)/5!&_1#"
+ "$_)!(/)#%/1!'/!$&.Q!'NY!$^U!'>U!%^Q%&.M!(>M+'.A%&.I!'.9&'>9!$^=!"
+ "%^-!#N=!%]]!(>)!'-Y!(N!-%]]!%]Y!(=Y,*MQ,&MY$&-I\"$-A$&]I!&]5&%M9!"
+ "'M5*#]-#&M5$)\\Y!(=5''-)\"&=1.%<]!&\\Y+&LU!(,U(*-!!$\\I#)!\"%^%!%^)!%>-#'>5!&.5!%^-!(NA!'>9!'>I!%.I!&.M!'^U'&.Q!"
+ "'_!('.]*(^],$^U!(O-*&_=\"&O-\"&?1!#OA!(_1+)/A!&?9!#OA!'_I!&OU!&OY!"
+ "'_Q!&OM!#_Y!&P%!&OQ!)/Y%(0!!(01!'@1#(01!(P%\"%@-!'0=!%@=!(09!$@E\""
+ "&`5!(@E!(@E!*PE+(@A!)`M!(@=!(@A'\"@A!&`=!'@=#+05!)P-!(05!(0-!)@%&"
+ "&OU!/0!!)0%%%/]!&OU!&OU!(_U%#_]!)?I!)/A!*_5)&_Q\"'_9!&O5!'?5%&/-%"
+ "'O5!'?)%'O1!&?%!&.M!&.A!&.Q!#^Q!$^M!$^M!#NI!&>M!'>E!&.=!&>=\"(>Q%"
+ "&.)!%^)!%^%!'.-!%^!!'N%()M]!%]Y!%]Q!&-U!%MA!&]E!']5!%MA!'M-*)==!"
+ "%]1\"%M-!$]1\"%M%!#,Y!&-%#']-*(,Y,%M!!%\\U#%LM!#1\"'N1()^91&.E!)>E$&.E!&.I!'>9!&.M!&.U!"
+ "$^E!&.Y!&.]!&?5!(?-)&?-!$_)!%/1!$?1#&?=!$_)!&?E!%_E$+OA%%/Q!'/Q#"
+ "(_Q%&OQ!'_U&&O]!(/]!(0!!&`)!(@%!)P)!)0-%)P5!&`5!(P5)'/Y\")PA&&`9!"
+ "&`=!(`A#(@9'#`A!(@=!(@A!(P=\"&`=!(09!#`9!)@9%(05!&`=!(05!(0%!+01!"
+ "(0%!)@!&&OY!&P-!&OU!(OQ*)?Q!*OM!)/I,'_5!%/9!(/=\"*?9!(/5(%/1!&?1!"
+ "&?A!#NQ!&.U!'O!'&.U!(.Y)$_!!$^I!%>A#$^I!'>E&&>E!&.A!$^5!&.1!$>-$"
+ "#>1!'.1!%N)*%^-!#=Y!%]]!$MU!'-U!\"MU''=U'&N-$#=I!)=5\"&-A(%]I!$]A\""
+ "&M)!%MA!%MA!%=)$%M)!%]!\"#=)!%<]!%)!'N-\"%^1!$N1!&.9!'>=!&>=\"$^E!&>E\"&.]!&.M!$_!!"
+ "'>M!$.Y\"&.]!'NY!&?!!&?!!%?5\"#O-!&?=!&?5!$?=#)/=!&?A!'_A!)OI('_I'"
+ "*OM!%/Q!&?E!&_Y!(/]!%?]!(@!!'_Y!)P)!)0-%+P5*)@1&&P)!*P)2(P9\"*050"
+ "&`9!(P=\"%@9!&`9!&`A!(`9#&`E!(`5#&`9!!0A!(@-!&P1!)P%!)P-!%@%!(0%!"
+ "&P!!&O]!&OM!)_Y\")?U!&OU!%/M!#_M!)/E!*OI!'OE&'_=!(O9*%/5!$_)!#_-!"
+ "%/1!&_%(#O-!#O%!(/!(&^Q#$^Y!+NY'&^U$+NQ(&.=!#NI!&.9!&.=!&^E$&.-!"
+ "'>1!%^!!'.=&&-]!&.!!$N)!%]Q!'=I(%]Q!%]M!%]M&&]M+$MA!&-E\"$=1!&M9$"
+ "(-)'%])\"%M-!%M1!$])#&M!&&,]#%])\"'\\Y!%A!#NA!&N5#$^9!&.=!&.E!&>I!$^Q!&^M$\">Q!"
+ "'_%!'O%!(O!%#^E\"&?!!*?)!&?)!)/%((O)*&?9!&/1%%?1\"&OI!'_E!)/E!(OE$"
+ "&OM!#_Q!#_Y!&P!!%?U!&O]!)@!!'_Y!)P).&P1!&P1!(0-!)01$(05!'@-#%@=!"
+ "(09!#`9!&0E#&P1!&`9!(09!)P5!(`5#*`)!(P1\"+01!,`-)*P%%)P)!-`%!+0)("
+ "(0%!&P%!(OY*(O]#&OU!'_I'&O5(&?E!'_E!\"?9!'/E)&?=!(?A)&?9!)?5.$_-&"
+ "#O-!&?!!$_%!&.Y!\"NY\"$.Y\"*>M((.Q)&.I!&NI#&.M!'>ENI!)^A!%^1!#>-!"
+ "\".1!%^)!%N-%'N)#&^%%!]]$%]U!%]Y!&MQ$&=M#)]]\"#=E!%MA!%=A$']=%&-A\""
+ "&M-!%M=!%=!*'])!&M%&%M!!&E!&.Q!"
+ "'>Q&'>U!&?!!&.U!\"?!!)?!\"&?)!&?1!&?1!&?9!&?-!$O)$'_=!'_E!%?A!$/U("
+ "&_U!&O]!'_M!&OU!'/Y#'_Q!&O]!'0!\"(/]!(0!!(`-$(01!)/Y&&P%!,@1!(0-!"
+ "&`9!&`5!(0-'#0-#&P1!(P5)&@1%+P=0(01!)PE&(`-$*`)!*`)!&P%!(@1'*_Y!"
+ "%/]!&OU!'/]\"&OI!&OQ!\"?U!&?9!)?I!'?I$)/A!'_=!&_A\"\"?5!&^]#&?-!&.Y!"
+ "(/=.#O%!'O%!&_-#(.Y)&NU\"&.Q!$^M!&>Q!%NI$'>E!&.A!'>9!'^9#)>5%&.9!"
+ "$^A!$M]!#N)!\".%!'>!\"(M]'%^-!&MU$%^!!']M*%ME!#=E!%MA!&]=!%-=#%M9!"
+ "&]5!%]1\"%M1!(--+*M%$']!!*-%!(\\Y&%\\Y#'\\Q+%%!%]Y!#=]!$N%!&N1#%^-!&.1!$.9#)N%!&.=!%^=%'>E!$^I!$.U\"$^M!"
+ "'NU'$^U!'.Y%$^]!'O!!&O%\")/-!&O)\"'O-O5!'/!$(O9*$/9\"(O=**O=!)/E!"
+ "'?I$#_Y!&P!!%/Q!\"_U\"(/U'&`!!(/]!+05!(0%!'@)#)P)!*`%!)P1!(@-!&P1!"
+ ",@-!(P)#*@1++01!%@1!%`1)(0-!(01!(`-#(P5\"&OY!(01!(`%$(P-\")?U!&OQ!"
+ "&O]!&O]!&_U!&OQ!%/Q!&OM!)OA)*_M-(OA$&?E!%/9'&O-\"'O5!(O9$#O-!&?)!"
+ "$_%!&.Y!&?!!)?%('NE!'>A!$^U!&.M!&.E!(.I$'>E!&.Q!&.=!(>A+(>1!&.9!"
+ "*N-%%^-!&.%!\".-!%^!&%]Y!$MY!(]U#&>!#']E*&-I0%MA!%M-!'M5$&=9$%-9$"
+ ")]93%M-!%M%!$=%!&,]#%M!!%!!'>%'&.)!'.-!'>)''-]&&.5!&N=#&.=!&.A!%^=&'NI''>M!"
+ "&.Q!&.I!&?!!&>Y!&?%!)O!$&?%!$_)!%?-\"%/1!&?9!&?5!'_M&(/=(&?A!)/E!"
+ ",?E\")_U\"*_Y!'OI%&_U!)?U!&?E!'?]#&OY!(0%!&OY!+01!,`)#)`-\"$`-%,@-!"
+ "&`5!)P)!&`=!+@5('`1,.@-6(@-!,0-&'@)#(0)!*P)%'_U!+O]$(0!!\"?Q!(P!)"
+ "!/E!'0!\"&OQ!&OU!%/M!%O]\"\"_E\"'OE&'?I$'?=$&?9!%/5!%O5#&O1!'O)&&.]!"
+ "&?%!(?!$(^]!&_!#%.Y!&.Y!'NQ'&.Y!#NE!&^A$&.A!$^=!(>A+&.9!&.9!#NA!"
+ "'.)!'.%&$N)!(=],&-Y!'-Y&&-]\"'=U(%]Q!%^!!%]I!&=I$\"]A#'-='%M9!%M-!"
+ "'=%(&-)#'=5$*-)!%M%!&=!$%,U)&<]$%LM&%\\Q#',M#$LI\"&,I#\"<1\"\"L=#'<=%"
+ "%<9!&<5!%\\1#%,%!%K]#%,%%%<)!%;],!!%;U\"$+U!\"[I(\";=\"%[A%%[E!\";A\""
+ "%KA#$K=$%+1\"&+1*'+-/%[))$[-$#ZY!#J]$&JY!$*U\"#ZU!$*I&$ZA\"$K!$#J9!"
+ "\"ZA!%Z=#%Z9\"$J5%&:1!%:-(\"J!!#J%!%J-J!!%*%$%YY#$)M##YU\"#9A!&9I*"
+ "#Y-#\"I5!$)='\")%\"#9=!!IA##Y=#\"II$$9I$\"IQ!#)]IM%$9]$%:!$$Z-J%!"
+ "#*%\"#J-!%J5\"#J9!#JE!$*=\"#JI!#:M#$JM%\"ZQ!#[!!%:]'#*Y\"$[!)\"Z]!\"ZU!"
+ "![1!#K5#%K1$&+%'%K9($[=!%;A\"%K=#&[I!';I\"\"KQ#$+M!$+Q!'L!#$;Y\"%+U!"
+ "'[Q-%<%\"&,%)&L1&&\\1(&<5%#<1!%\\%,&<=!%\\A#%LI\"&,Q#&\\M\"%%%%^%!$N%!%^)!'^-$&N1#&.)!&^5%&^%%&.=!'NM'(>E+'>I!&NI("
+ "(^Q!(>I%&.Y!&.Y!(^Y!'_!!&?!!'/))%^Y%'_A!#O1!&?=!&?=&&O=!(?=**/5+"
+ "(/E!#_M!&OE'&OQ!)?I!&OQ!'OM%&OU!&O]!%?]!)@%&*_Y!%@%!*`%!)P-!(0)!"
+ "*@1$(/]!\"@9!&P-!*`1&,@)!(0-!&P!!)P%!*`%!&/]$(/]!*@!%&_I\"(/]!#_Y'"
+ "\"?]!%/U!&OQ!*_Q(&_I\"%/I!'/E*(_A%&?A!&?=!&?9!'O5!&?1!)/-!(?-)\"?)!"
+ "'/%$*/!!&.U!&>]!&.Q!'NY'&>Q!'.M%&>Y!&.E!#NI!&.9!'>9!&.%!&.=!'>-!"
+ "%^-!'.%%'.%%$N!!%]Y!%]E!&MU$$MM!(-U*+-I)$MI!%ME!%ME!#=5!%-5$&-1#"
+ "&-=\"&M5%%=)%#=%!(-)\"%M!!'-!(%\\Q\"#LE\"&LQ&$!!%N%%\".%!&-U!'.!!&^1%&NE#&.9!'.=&&.A!&.E!)^E&(.Q$"
+ "+>M!'NQ!&.M!&NY\"&?!!#N]!&?!!'/-$(_)!'O-&%O1#+/%%&?5!#O=!$/E\"*OA!"
+ "'_A!(?U\"&?E!'_E!&OU!&OQ!%/U!#_M!$@!\"'_Y!&O]!\"@%&&`-!&P)_]!(0!!"
+ "(0%!(0%!(0!!&/U$&P1!*0%*(0!!)P%!(01!+/]((0%!&`!!(/]!&OY&%?]!!/]!"
+ "&OY!$OU$&_M\"&OQ!%/E!)/A!+/A#%O9#&_9)&?5!&?-!&?5!&/-&$_%!&O)(&?%!"
+ "(/!.&.Q!&.]!&>Y!&.]!&.Q!&.M!).I\"'>I!&.I!&.A!#N=!).=#$N1!#>)!&.=!"
+ "'>9!%^%!%^%!&]]%%]Q!%]U!#]]\"$MQ!$]E,#=U!&]A!$MQ!%ME!%M5!#-9$%M)!"
+ "%M1!$]9')M)2&=)$#=)!&<]$%<]!&,I#&!#&N-$%^-%\".%!&.=!&.5!%N=$&^=$&.E!"
+ "&.Q!&.Q!).]-'^U().Y!(^]!$^]!&?!!&?%!&?-!&_-#&O1!'O%!'_5''O-!%O-#"
+ "&_A\"*/U+&?E!&OI!'OE&&OQ!(/]!%/]!&_U!&OU!&OY!&OQ!&OY!*0!#)?]!&OY!"
+ ")`!))@!!)?]!(/]!)P%!%`%#)?]')@!!(_Y$&O]!,P!0*?Y1&_Y!&OY!&_Q!(/Y'"
+ "&OU!&OI!\"?I!&OQ!'_9''_9!&?E!%/=!&_1\"&_5#+?1%&^]#&?-!&?)!*?1!&?%!"
+ "'.]%'O%!'NY!*N]\"'.Y%&.M!(^Q!$.M##NE!&.A!'>A!#NE!&.5!&>E\"'^-#%^)!"
+ "%^1!%.1')M],%]]!#^!\"(=Y!&]M!%]I!%]M!$MI!&]E!)-Q*%M1!%M5!)-5&%]5!"
+ "#=1!$=-!'-1''])!'-!(%<]!%\\]\"&LU!%%#)^)!%.)\"$^9!%^1!%N5%&>E\"(NA!&.A!&.E!\"^E#"
+ "'>M!$^M!&.Q!'>M!*NU.\"_)\"*.]!(^U!,/%/'?)%'_-(%/=!&?5!'/9#&?9!&?9!"
+ "*OA!&?A!%/E!&?A!&OM!)OU.'OE%'?M$#_I!,?Q\"'_U!&P!!\"?Y!\"?Y!*/]#&O]!"
+ "(O]*(?](&P!!(0%!(0!!'@!#*OM!)P!!&O]!'P%$*OU2&OY!&OY!&OU!'@!##_Q!"
+ "*OQ&&OI!%OM\")/A!(/E!&_Q!#OA!'O5!'/A#*?)!&?-!&O-\"&>Y!&?%!&_1\"(/!("
+ "(_%!%.Q!'NY!&^M$(NQ+(>I*(NM!&NI#)^E!%^1!)N%!%^)!&.5!(>%!&>5''>-'"
+ ")=Y!'.)!%^!!&.%!'MU#$]M!%]U!%]U!&-I\"%]I!&-E\"'-A!$M=!%MA!&=5$'M=$"
+ "%]5\"&=-)$<]!%M9!%)!$N-!(>)%%^1!'>5!'>-'&.A!'>I!)^A!$^=!"
+ "&.Q!&.M!&.M!&?!!&.Q!&?%!&?!!#O!!&?!!'?1*#O-!&?)!#/5$)/5!'?1*&O9'"
+ "(_M0(/=\"&?A!)?E!)_9*'/I#&OI!&_M\"#_Q!(/]!*_U!'_Y!)?U-&P!!(0-'(/]!"
+ "'?Q$$?]\"&O]!'P)$(/]!'@!$+OU+&OY!&O]!'OQ%&O]!&OY!'_U!)?I!&OQ!(OM*"
+ "+/I)+OA+&?=!)?E('_E!%/=!&_=\"%_=$*/5%&?1!'?)%&?-!(O)0'O!!&?)!'.]$"
+ "&>]!&N]\"&^U#$^M!$^Q!&NE#'O!!*.E2&.Y!'>A!'N=,%^-!&.5!%^1!'.1!).)*"
+ "%.!\"(^-#']Y$%]]!%^%!'-U!%]Q!&=Q#&]A!'MI))-A+%=A$(==\"$=5!%]-\"%]1\""
+ "$=1!&-5#%-)(\"])$&M!%$L]\"%%!(N!()N%!%^)!'N%.(.1*%^1!'>9!(NA!$^I!'>E&%>E#"
+ "$^I&(.M)&^Y#(NU&(NQ+#>I%*?1!&^]#&?!!&.]!&?1!&N]\"%/=!'?)%&?5!'O)'"
+ "&?5!*?9')/=!&?A!'_A!'_E!*O],&?=!'_Q!'_I!)/Q,&OI!%?Q!(0-!&OY!'/M#"
+ "!0!!)?U!,OY*&OU!'_Y!(_Q+(?Q\"$/U!%/U!&OY!&_I\"&OQ!&OQ!$OE$'_I_9!"
+ "%/=!'_I!'_M!-/A'&OA'(/A!&?9!&_5\"&?9!&?1!&?-!&?-!&.]!$_!!&O!\"$^Y!"
+ "$^]!'?%&&>Q'&^U$'.M%$^M!)>M#(NI!)^E&&.A!&.=!(N9&&.5!&.9!%^)!&N%$"
+ "&N1#%^!!&-]!&M])%]Y!(>!!+=U*%]I!#]I#%]I!%MA!'-A!&-=#$]9\"$M1!%M)!"
+ "&M)%$=1!&-%$%-!&N-$'.)!'>9!(^=!$^5!'^A("
+ "'>A!&.E!$^Q!%>Y\"(^Q!'>U!&>Y!&.]!'O!!#_!!$_)!#O9!&O)!&?)!)O9#&?1!"
+ "&?9!&?5!%OM\"'/=#&?E!)/=!'_E!'_A!(O=$*OI!%?M!'?M$%/=!'?Y$&OQ!(/Q("
+ "(_U+&OU!&_U\"#OY%&OI'&?A!&_U!#`!&(_Q%&OQ!&OQ!&OM!&OI!'_I!%_I*)/E!"
+ "&?E!%OA#)?9!&?=!\"?Q!+/5*&?5!#O5!&?1!&?-!(?-/'O)&&?)!&?!!&?!!&.]!"
+ "'.]$(.U#&.Q!(^Q'&.M!&.I!&NI#&^U)&NI#&.=!$^9!'N9'&.5!%^-!&>-\"$N!!"
+ "+.)(&>!\"$N%!%]]!%]U!%]U!(-Q%&-Y\"%ME!\"]E#$MA!%]1\"(=9\"'M=$&=5$%]A!"
+ "'--#%M!!&-%$'<]$$\\U((LY*',Y#%\\Q\"*,U&%LM\"%!!*.!$'.%!&N1$\"^)#)>9/&.9!$^=!&.A!"
+ "&^=$&^I$%N]#&N=#(^U!$^Y!'>M!&.Y!$^]!$_)!&_)#&O!\"&?)!$/!\"%/-!'_A!"
+ "(/5)#OA&'_9!'_=!'?=$#OA!(O9$&?=!'_E!*_E)&?9!&OQ!)?M!&?E!*/M+&OM'"
+ "%/I!'_Q!%/U!'OQ%'0%)&OQ!&_U\"(/E(&OU!&OY!&OM!\"_I\"(?I#'/E#'_E!'_E!"
+ ")/A&&?A!'?E$&?=!&?9!&?E!&?9!&/A%&?1!%/=!&?)!%/1!&>Q!$_!!&.]!'>M&"
+ "&^Y#&.U!&.Q!'O)!&.E!&.I!'NE!$^M!'^9)'^1#&.9!%.5\"%^1!(N-!%^)!%]]!"
+ ")=Q,%^!!&=]#&]Q!%]Q!\"=Q!%]M!(]I$(M9)$MA!%M=!&]=!%M9!%M)!&=1$%M)!"
+ "(-)\"'=-)\"M-\"),]\"%L],Q!$I/%^9&&.A!"
+ "&.A!&.E!*^Q+&.U!&.Q!&.M!$^=!&.Y!'.U%&.]!&_!#$_%!(?%*'O-!&?-''?%&"
+ "+?5+(O5*&?A!&?5!(/%(&?A!&?=!'?E$'_A!&/E%(/I!'_E'&OQ!)OE\"&_9.&OM!"
+ "&OM!&OI!&OM!%/U!&OQ!%OM)&_U\"%/M!'_I!$?I#&OU!&?E!%?E!&?A!'_E!)OM\""
+ "%/=!'_A!%/A&&?1!&?5!'O5!%/-!$_)!&?1!%_-$#O!!'/!$&?!!&?%!&.M!$_%!"
+ "\"_%#(.M)&.Q!'>M!'^E#'.Q%'>A!&>A\"&NA#&^=$&.A!&.5!(>-&&>)\"'>5!'.A&"
+ "%^!!%>%#&-Y!&]Y%(=I'%]I!%]I!*MI!%]I!&]E%%]5!%M=!'M5$&-1#%M1!&]5!"
+ "(=9'%M%&%M1!']!&%L]!%\\U\"%-%&.9!%^-!(N=!"
+ "&.A!&.Q!&^=$)^Y+&.M!%.E\"&.M!%>A#'.Y%'NY!'N]!'?!%&?%!)?%(&O)!'O-!"
+ "-_),*/1+&_=\"&?5!$?9#'_=!'_=!'_=!&?=!'OA&%OA#)?E'\"_E\",?E6)?I!)?U!"
+ "&/I0'_9!&OI!&OM!(/]!&OM!'_M&)/I,'_M!*O=!&OQ!*OE!#O1!&?A!&?A!&?1!"
+ "'_=!(_5&*?=&&?1!&?-!$/-\"&?-!'?9%&.]!&?%!)O%$#O!!(.U)&.]!&.U!$^U!"
+ "&.U!#NU!&.Q!&.E!'>9!$^M!(>A+&.=!(>A+&.9!'.E%%^1!$N!!'.)!(>)!%^%!"
+ "'.!!#-])#>-!&MU%$MQ!&=E$%-]#%]M!']E*(-A!'-='&]9!&=1$&]1!%]5\"$=-!"
+ "%]%\"(M9.!=5\"%9!%^)!"
+ "$^5!%.E\"&.A!'>A!(.Q#&^Q$&^U#'.Y%&^U#%NY#&.M!&.]!(>U*'O)&(.])&/)&"
+ ")O-#'O!!%O1#&?)!'O5!'?1%'_=!)/9!&_5#&?9!&?E!#O-!'_9!'_E!-/A&)/E!"
+ "'_E!(_U$'_I!'_E!&OM!*OE!(OE$'_=!'O1!+/A0&OI!&O9!&?=!%/-!(_9%&?9!"
+ "%/1!)_5$+/5$'O)!(?1$)/1-*_1\"'O%'&?!!$_)!*.]2'N]!'>Q&&.Q!(_)!&.Q!"
+ "&.M!&NQ\"(NI!'NE''>E&&NA#$^=!\"^=#&.9!\"NA\"'.1!'.)!%^1!'-]!$N%!%^%!"
+ "%]Y!%]U!\">!!%]Q!%]Q!%]Q!$MA!&]E!(-=!&]A%)-5!']9*&=5$%M)!%M!!$])\""
+ "%]1\"%\\]\")\\]!',Y#'!\"%^)!%]U!'.)!&^-*'N)\"'.-!&.=!'N5("
+ "&.=!'.1%(NA!'N='&>A\"$^M!&.A!&.Q!&.Y!'^U(#NQ!&.]!#^]!'_1('O%!)_)0"
+ "$_)!&/1%&?-!'O1!&?5!\"?=!&/5*'?=$)?A!&?9!&?=!%/A!&O5!&?=!&?E!'OA&"
+ "%/M!&_A\"'?Q$&?A!#OA!&?=!%/A!)/A!'?=$\"?=!&?=!(?=)'/E#&O9!&?9!&?5!"
+ "&?5!%/A!&_1\"&?1!(O-*'?)%'?%%'O%!'_)!(O!+&?!!*N])'.]$$^U!&^U$&.]!"
+ "'>A!$^Q!&.=!&.E!'>I!'.I%&.9!&.I!$N1!&.1!'N1('>9!$M]!$N%!&>!\"(N!-"
+ "\"]Y#%]U!&>%#\"-Q!%]M!&-9#&]]%)-A&%MA!%]=!&-9\"&=9$%]5!(-E!&\\Y\"%5!%^)!'.1!&N5(&.9!"
+ "'>9!(^=!'>=!&.E!&^A$&.E!(NE!&.M!&.U!&.U!$_%!'>M!&?!!(?!$&?!!(_%!"
+ "&?%!'/)$-/5!%/-!&?-!+?-+'_9!'?-%&?1!&?-!&_9\"'_A!&?5!&?-!!/)!+_=!"
+ "&_5#'_)((?=*&?=!(OA0'?A%(_=+*_=\"*/A1)/5!&?9!(?9*&?=!&_9\"#O1!'O5!"
+ "'?)%&?9!'/%$\"?-!&?%!\"?)!(?%)'O%!)?!(&.Y!(_!!&.]!'>A!$^Y!(>U%&.Y!"
+ "&^U#&.I!&.I!$>M)&.A!(>=&&>9\"'.-!&^1%'.1!'-]&$N1!%N5$(N5!%^!!%^!!"
+ "$N!!%]]!%]I!%]Y!%]M!'MQ$&=E#&]A!)-A+&MQ$%M9!#MA&&-9\"%M-!\"M!'%])\""
+ "%\\Y#$]1\"#=!!&,U#%!\"&>)\"%^!!(>!!&.=!$N-!'>5!%^1!"
+ "&.M!'>9+&.=!'>=+$^E!%.Q!(^A2&NM\"(NM!&.Q!&.M!%/!!(^]!&.M!(>]*&.Y!"
+ "&.U!&?9!%/1!)/1!$_)!&?-!#^U!$_)!&_9\"'O1!&?5!)?5.&?-!&?A!#O9!'_E!"
+ "%/-!#O9!(?9#&?1!'_9!#O9!&_5\"(?A#%O9)'_1''_=!'?%&'_1'%/I!&?1!'/5$"
+ "&?-!)?-\"(?))'O)!&_%#'?-%)_!0&O%\"'N]!#O!!$_!!&>U!*^U*&?!!&NM#'^M("
+ "$^M!'^E(!.E!&.A!$^9!%N5%%^)%$N%!#>!!(>-!$N-!%^%!(.-*(N!!%^%!'-]!"
+ "%^!!%-U#%]Q!'-Q&&]M!&-I\"%ME!$MA!&-A\"%M9!'-9'#M5\"%M1!'])+%]-\"(--!"
+ ")=%\"'=!)%<]!$%!%^%!$N%!%^-!(>)!&>1\""
+ "'>9!$^5!'^=((^=\"(N=!\">E!&.M!&.I!&.9!&.M!&.M!&>Q!#NU!+.Y1%NY)$^]!"
+ "$_!!'O)O)!\">]!'O1&&?-!#O)!&.Y!)/-!&?=!&?%!'_I!'O1!%/5!(O5$'O1!"
+ "&?1!'_5!*O5-%/A!&?5!%/5!'O5&%/5!'_9!'O5&%/-!&?1!$_5&&?1!%/9!&?%!"
+ ")/%(&?1!$_)!&?)!#N]!'/!$&.M!&?!!&.Q!'>]&$^Q!).Y!'>U!(.E$&.A!'>Q!"
+ "+>=\"&.A!&.=!&.A!'NI'&.9!&^9%&>)('.)!&N9#&.-!%^%!$N%!'>)!\"-]!'MM("
+ "'=U\"%]U!%]Q!\"-I!'MM(%]U!%ME!']=*$M=!%]5!$=-!&]9&'-1''M-$%M9!%M!!"
+ "%M-!']!+%L]!'%%)M]!$M]!&M]$!-]*%^%!&>-\"%.-\"&^5$"
+ "&N1#&.E!)>9*(>-!&.9!&.I!!>E\"&.=!&>I!'>I!(^Y!&.I!'NY'$^Y!(_!'&.Q!"
+ "$NU%$_!!&>U!$_!!$_)!%O)#'O-O)!&?-!&?-!&?-!&?9!'_1('/-)(_!!&?-!"
+ "'O1!%/5!'O-&&?-'%/-!'O5&\"O9!'_1!&_1#&?)!)/%(&?1!&O)\"'NY!'_-'&?%!"
+ "'_1(&?!!&?%!&?)!&O1!'N]!&.]!&.U!(?!)&>U!).Y!(>U*)^I!&NM\"'^U'+NI("
+ "$^E!(NA!(N=!&.9!$^9!&.9!&.5!&>1\"%^-!'>)'%]Q!%^1!'M])%^!!%.9\"#>!!"
+ "'-U!%ME!#]I\"&]M!)M9#'ME.&]A!%M1!\"-1!%M9!%]5\"'-1'%]5!&=)$#=)!&M%!"
+ "%M%!'-)'(,Y,&,Y#(,Q1#,I%%%\"&.5!#N5!$^E!&.=!!.9!&^A$'>I!&.=!&.M!&.U&&NM\"&.]!&?!!&.Q!&.]!"
+ "&.U!'>U!\"O%!$_!!$/%\"'O%!&O-\"&?-!\"?)!'_!('O!!'O)!&?1!+?!1&?-!$O5)"
+ "$_)!)/1!&?A!(?5/'O-!#O5!%/5!*?)!'O)!'>Q!*_-))/5!&?)!'?)%'O)''O%!"
+ "&?5!(^Q!&.Y!'^Y''>U!&?!!'>Q!,.Y5&.U!%^M**>Q\"&.M!#^M\"&.M!'N='&.I!"
+ "'.1!&NE##NE!&.9!&.5!$^9!%^1!$N!!$N-!(>!&'.%%$N)!%^!!*>!)'=Y\"%]U!"
+ "%]M!&-U!&-I\"\"MI+%]Q!%M1%(]9.$-Q$%M9!&]5&\"-)!%]1\"&]-'%9+!.9!&.9!&.E!&NE#+.E,&.E!&.M!&.Q!&>Q!&.Y!"
+ "&^U$$_!!&?)!&?)!&?-!&.U!$_!!&?!!&.Q!&.M!&^])'O-!&O)!'O9&'O)!'O)!"
+ "'O)!#NU&&?5!(_)!(?))&?!!&?1!&O1!&?=!&?%!(?-#&?%!&?%!'.]*)?)\"'?!&"
+ "'.Y$#O%!$_!!&?!!'.U%&.Y!$NI%&.Y!&.Y!$^Y!'>M!'>M!'^I#&>E'(NE&&.E!"
+ "$^A!'>=!&.E!&>E\"%^%!(>1%'>-&'.-!'>)'(>)&%]U!$.)#%^!!%]Y!'MM$'-]!"
+ "&-A\"'-I'%]Q!%]I!&=A$(-A!$]='&-9#(-A+)]E#&M%!&=)$%M)!%M%!',],%<]!"
+ "&M-!(1\""
+ "'.-!%^=%&.5!#N5!#>)!%^)!'N1(&.A!&.9!&.M!#NE!&>E\"(^M!&.I!'>U!'.Q%"
+ "&>I!&.U!).U'(_%!'NY!\">Y!).Y'&?%!&?)!&N]\"&.Y!&O%\"\"?)!+/%+&?%!*O%."
+ "'O)''O)!\"_1\"+O!!&?)!%/-!&?%!)/-!'O1!&?-!)/%-%?%\"'^Y(%/-!&O)\"(_!!"
+ "(?!)\"O%!&.Y!'NY!'_!!&.Q!*.Q!&.U!'.E%&>M''NY!'^=('>E!$^E!&.I!%^)!"
+ "\">=!$^9!'>9!&.5!%^1!&^!%&>-\"(.9%#>!!'.!!+-]\"%]]!%]Y!(=]!'-Y!%ME!"
+ "%]M!%]Q!(]I)%M=!&]M!']5%&]=!$]9\"']9%%M1!%]1\"&M-%%]!\"%M%!%M!!%<]!"
+ ")-)0%\\Q\"$A!"
+ "&.U!&.E!(?!)'>U&\">Q!&.U!'NY!&?%!%.M!*>]'&>Y!&.]!#O!!&?)!%O)#'.]$"
+ "&?!!'O)''O%!'O!!&_%#)^U,'^]!&?!!&/)&$.Y##NY!&O%\"%O%#\">Q!,.]*\"N]!"
+ "&?!!'/1$&.]!(_)!$.U\"$^Q!'>U&$^M!&.U!&.E!&^M$#NI!&.9!&.A!&.=!$^=!"
+ "#N9!$^9!&.5!'.-!*.))%^1!'>9!%^%!$>5$%.!\"$MY!$M]!$M]!%]U!(-Q!&]Q!"
+ "'-U!%M9!$ME!&=I(%MA!%]1!%]-\"%]1\"#\\](&M%*'--\"%]%\"']%*%]%\"&L]&%M!!"
+ "%M!!&Y!&.Y!*.Y,&.]!&?!!'O!').].#NU!&.]!"
+ "#_!!'_!(&?1!(^Y''O%!(_!&&?!!&_!#&N]\"*.],'N]!&.Y!#N]!'.Q%&>Y!'.Y%"
+ "'>U!'>U!'NQ!&.Q!)>Y)&>A\"&.M!&.I!$^I!&.E!(^E-&.A!&>E!&N5#(>=%'.=%"
+ "'.%!&.5!$^E!$N1!%^-!%^)!%^%!$N%!$^!!$M]!%]]!']Y)'-U!&]]%%]U!%M5!"
+ "&-A#%]I!%ME!)]Q-$-=$%M=!'-9'%M5!&-1'&M5%&=9$&=-$(=%(&]!\"%M%&(,Y("
+ "(!\""
+ "(N),%^%!$N%!$^9!'N-\"$^5!*.=('>5!'.-!&>)\"&.=!&.A!)^Q,(NM!#N=!&.I!"
+ "#NA!'>=!&.U!&.A!(>M+'>E!(NU+'^U\"&>Q!'>U!(?!$&.Y!'O%!)>Y##NY!\"?-!"
+ "'O)&&>U!&.Y!$^]!&?%!&?!!#N]!'>]&(^Y!'^Y'&.U!(>U%&.U!'NY-+>M3'>I!"
+ "%>Y\"&.I&&^Q#\">I!&.Q!&.]!&.I!&.U!'NM!&.M!&.5!&.5!(>M+&.5!'>9!\">5!"
+ "&.5!&.=!%^-!$^9!'.)!'.)!$N%!%^%!(-Y*'-]!$ME!'-U&&]Y*%]]!']M$%M=!"
+ "(=I!#]E#'-A!&]I%&MA$&=-$%M5!$=%%%M9!\"--!%!!&.5!$N1!'.9&$^9!&.=!$N)!&.I!&.E!&.=!"
+ "&.M!&>1\"&>I!&.Q!!.M!'/!$(N=!'>U!&.]!'>Q&'>Q!&>]!#NM!&.Q!&NM#'^Y'"
+ "&.]!&.]!(^Y!(>Q*(NQ+(^Y!&O)!*NY#'>M!&>M!&.Q!&.M!&^U#*^Y*'>Q&&.A!"
+ "&.Q!&.Q!\">U!&.I!&^-%'.I%#^E!&.I!'>5!%^1!'.9&'>5!\">E!(>)&&N5#$^5!"
+ "&N)$&.=!&^-%'>9!&.5!#>%!).)*#>%!%^!!&^%%%]Y!'-U!&-Q\"$MQ!%]Q!%-=$"
+ "$ME!$M-!)-A&&-=\"%]9!&=A$%M!!)=A0&=-$%!!%^%!#^5\"%^%!\".)!%^%!&^-%'>1'$N1!%N5%&N=#%^-!%^1!(NA!#NA!$^=!"
+ "&.5!&.A!'>E!&>E!'>I!&.M!&>I!&.M!'>M!(_)!)NQ%&.U!&^Q##NQ!&.U!&.Y!"
+ "'.Y%'.]$&.I!&.I!&.U!#O%!&.U!&_%#,>I&&.I!&.Q!&.Q!(.Q$&>Q!&.Q!)^Q&"
+ "#NM!(NI&&.=!(.M)#NI!&^Q#&NA#!N9#)^A!#N9!&>9\"%.9\")^=!'N)('N5(&.1!"
+ "&N-)&^-%%^)!%^%!%^!!$N!!+>%)&>!#*-Y$&-]\"'.!!\"-Q!%=M$%]M!%ME!']A*"
+ "&-9#%MA!&-A#%]5\"&]9!(=9'$=1!%]!'$])\"#=%!$<]!$M!\"()!(^-.'>1&%^-!&.9!)^=!&.5!&.5!"
+ "$^I!$^A!'>A!#^E!&.Q!&.Q!)NU%'>I&$^I!&.M!%NM$%.M'&.M!'>Q!&.E!&.M!"
+ "'>Q!&^=$&^M)&.E!&>Q!&NQ\"$^Q!#NQ!&.Y!(NI!'>M+*.M!&.M!'NQ'%.Q!$^M!"
+ "\">E!'>I!(^E-(^I'&.I!'^=)&.A!$^=!&^=*%^-!&.9!&.5!'>5!*^5&$N)!%^-!"
+ "(.9*&MY$%^1!'N!#(MY(%]U!%]]!$MQ!%]Y!&MY$$MU!&-]!%]M!'-Y!%ME!$ME!"
+ "%MA!%M=!$M1*)=I!%]5!&])&&=9$']1!%M)!%]-!'=%)%\\U\"%M-!%<=!',I(&LU!"
+ "&\\Q\"%!!$N%!'.-!&-]!&>!\"%>-#%>)$)>9%%^1!%.5\"#N9!&.=!&>A\""
+ "&.9!&.A,&NA#&>A\"'NI'&.9!&>Q!#NE!&NI\"'>I!'>I!#NE!)>I$&.Q!&.M!&>I'"
+ "&.]!)^I!(.M$(.I)&.M!)>M$&.A!'^Q\"&>Q!&.M!&NI\"&N5#&.I!(.I$&NI\"'.A%"
+ ").M3&.E!#>A%#NA!&>=\"%^-!*^A&)>9%&.9!'.-!#N1&$N1!&^5$%^)!%^-!\">)!"
+ "(N)'&.%!%^%!$N!!#=]!%^!!$MU!%]U!)=]%%]Q!%]E!$=9!&-A\"&]I%%MA!%M=!"
+ "&M9%']I$(-50&]5!'=5($-1$%M-!'-)#$M)!'M%%&M%&%]!\"%<]!%])\"&]5!$LQ\""
+ "$L=\"%LQ!&LE&%LE\"%!!$N%!%^%!%^-!(>%!#>!!%^)!&.5!%^)!'>A!%^%!'>A&"
+ "%.5\"&.=!&.A!(>I+&.=!&.=!'NA\"(NA!#NI!&^I)$^E!&^E$%.E!*>I\"&.Q!&>E\""
+ "&.U!&.I!&.I!&.Y!(^U!#>I%&.I!#.M)*NA*&.I!%^1!&.E!&.A!%NE$$^E!'NA\""
+ "&>E!*N9+&.=!(>E+%^=&'N='&.5!&>1\"&.=!&.5!$^9!'N1((>-!&.-!(>!,\".)!"
+ "%N%*&.%!#>-!$M]!%]]!%]]!%]Y!'-U!$MM!%]Q!&]M+$MI!%ME!%]I!%MA!%MA!"
+ "(=E\"%M9%&M1%'-5'%M-!&]1!%M!!%])''-%''=!$%M%!%!%(N!\"%^)!%^1!(]]-%^!!(>%!%]]!'.1!%^-!&.)!&.5!"
+ "(.E)&N9#'>9!&.9!&.A!'>A!)N10'.=%&.U!&>E!'^E\"&.I!&>E\"&.M!'^5#&.I!"
+ "$^=!&.E!&NI#(NE!&.E!(.E*(NM!'N=!&.E!&.M!(^M-'>A!'>E,#NA!(.A$&N=#"
+ "(N=,(N=!(>=&&.=!(>1!&.5!'>A!&.5!%.1\"&.5!&.-!&.9!%]Y!%^-!%.-\"'.%!"
+ "(=]!&>!\"'-Y!%]Q!)=Q0(N-'(-M!'=Q\"'-E!&=I$%]E!'MI(%M=!'-9\"\"ME\"$]9\""
+ "&-9\"$=5!&M5%$=1!&-%#$M=!'=)(%]!'\"=)!'=!$\"]-$%M%!\"L]#&,]#'LQ&*,U!"
+ "%A!(^).(N9!&.A!%>%#&.5!'>E&&.9!)>=$%N5%$^5!&.M!"
+ "%^A*&.A!&.=!&.=!&.A!\">=!&.=!'NA\"'>A!+>A(&^A$$^=!'^=($^E!&.=!%^9+"
+ "*>=#'.1!(>5+$^5!*.=('.-!%^-!%^1!%.1\"$>!%'>-&\".1!%^%!%^!!%.%\"$M]!"
+ "(.%%&=]#'.%!'=Y(%]M!&]Q!'-U!%]I!'MI)%]I!&=M$#=M!&-A#%]5!$==%#=A!"
+ "%M9!&-%$)]1*%]-\"%M5&%M%!(-)\"(=-('-%#&M!&%)!(>%!%^-!(.-*&.-!"
+ "&.=!*.E'\">5!%^1!&N1#'.1!&.1!%^-!&>9\"&.A!&^=$'>E!&.9!(>A+$^M!(NA!"
+ "$^5!&.A!'>9!'>9!&.9!%^%!$N9&$^=!'>5!$^=!&.=!&.A!'.=%&.9!&.9!&^I$"
+ "#N5!&.5!%N1*%^1!$N-!'>)'\".-!&N-#&.E!(>)+&^)%%^%!&N%$%^!!&^!%%]]!"
+ "'-]&%]Y!&-Y!&-Y!'-U!(-Q!$MM!%]I!#=I!&]M!&M9%&ME$&M9%&]I%'-9'%]=!"
+ "%]5!$M=!)-1&%M-!&=!$#=!!%M%!%=!%%L]!'<]#$)#$=U%).%$'.-!&>)("
+ "%^)!%^)!&.9!$^9!)>9%'.-%'.)%$N5%#>1!(N9!(N5!&.E!&^9$&.=!'NI''>9!"
+ "'N5()>1*$^=!&>9\"#N5!%N9$&.5!(N9!,>A,'>5!&.9!&.A!(N5!#N5!\"^1#\".1!"
+ "&>5\"&.A!%^%!%N1$(NA!(^-#$^%!'^)*)N%M]!)>%*&.-!\"N!\"(MU-%]]!%]Q!"
+ "&-Y!%]U!%]U!%]Q!%]Q!$MI!&MU$\"-I!(MQ($MI!$MQ!&]Q%%=A$%]5\"'-9'&M=$"
+ "$-1$&M-!%]5\"&-%$(])!%M)!&-!(&LU!%<]!%%\"&>%\"%^%!%.%\""
+ "\".!!%^1!$^9!(N9!'>1'#>)!&N1#'.9&'.1!&N1#*.93%^)!$N1!%^1!'.1*'>5!"
+ "%^1!&N-$&.5!&>I!#N1!&.5!&^9$&.A!&.5!&.5!(N-'&.5!'>1''.1!).1)'.1!"
+ "%^-!%^)!%.1\"(N5,&N5))N!!&.5!$N%!%^%!&>%#(]]-'M])%]]!%]]!&-Y!(]Q("
+ "&^%%%ME!(]I)$MY!'=]!'MA$%M1!%ME!(-A!%MA!&-9\"&-9\"'M1*%M9!%ME*$M5!"
+ "%M=!&]-&%<]!%M-!'=%)\"\\E$+-!+'LQ!#=!!%\\]\"&LU!#LQ#'%#&>)\"&^5%%^-!&>-\"%^-!&N-#'^!$(>1!'^-#'.)!\".1!"
+ "%^1!'NA''^)*'>5!&.5!%^1!&N)#'.1!$N1%%^)!$^5!&.9!\">E!$N-!-N-(&.5!"
+ "%^1!#^)\"'.)&&N-$'.-%%^)!%^1!(N!'\"-]!!.%!%]Q!&-]!$MY!)MI,$MY!%^!!"
+ "&-]\"#MA!$MM!%]M!%]M!&-I\"%]M!&=I$$MU!'-A\"'M=)&-9\"%]E!&-1,'=)($=-!"
+ "'M-$&M!&%M)!%]5\"#=%!%<]!(=%$%M!!%<]!%\\U#&LU!&LM*'<9!%!\"%^!!%.)\"$>-$)>!%%^-!(>!!'.)!#^%\"'.%!%^1!'>=!(^%(%^)!%^-!$^%!"
+ "(N%,%^%!&>1\"%^1!&N)$&.9!(>-!%^)!$N1!&N)#*^1!).1$%^-!#>-!&.)!(>)%"
+ "%^%!,>9'(^%#'-Y!).%$$.%#%^!!(>!!&-Y!%]]!(=U!%]Y!&MY$$]U&%^)!'.!&"
+ "&=I($MI!%]M!$ME!#=U!&]E!%M=!$MA!$-=$']5!%M9!'=Q\"%]5\"%M-!%M1!$]9\""
+ "$])\"#=%!%<]!%!!%^)!(^%#'.%!$N)!%^-!%^)!'>-'%^-!&^)%$N-!&.5!"
+ "#>)!&.)'&.5!%^%!$N!!$N)!%^%!'^-$%^-!$N-!%^-!$N)!&N5(%]]!%]U!%^1!"
+ "%^)!'.%!'.!&*^!!'>!''.)!%]U!$]Q!&-Y!%M]%*.!)&]Y%'.%&%]Q!'-Q'%]I!"
+ "\"-I!#=E!%]A!$M=!$ME!%M9!%-A('M1)$-A$']9!*-5&%M5!#=)%\"-1!%--$%]%\""
+ "'=)$%]%\"$=-!',]'&LQ&&\\Q&%M-!%\\U#$,M)%LM\"&LQ!%LQ!%,A$%)!$N%!'.%!&>-\"%^%!%^%!%^%!"
+ "%^1!%^-!&^!%'N='%^%!#^)\"(^))$N%!&N)#'.!!(>)!+>%)'.)%(N5!%-]\"%^-!"
+ "(N!(&>!#'-]!%]Q!)M]2'.!%%]Q!&MY$(=Y!%=Y)$]M!'=I((-Q!+-M('=M#(-M!"
+ "%]U!\"MQ\"(]E/%ME!%MA!%MA!%M=!(MA.%M1!&]5!$--$&--#%M)!'=%$%]-''--#"
+ "%\\Y\"%-5#%M!!%M!!'!'"
+ "%^1!%]Q!%^%!&MY)%^%!$N%!%^%!%^)!(^!#(.!%%]U!)MU'&.)!(.%%%]Y!%]Y!"
+ "&=]#(=]!%]]!%]Y!$M]!%]U!$]]!&=U#&]Q!%]Q!%]U!&=M$$MU!%]M!'=A#$MI!"
+ "\"-Y!$MI!&]M!&]E!$ME!&MA$$=9!&-E\"%M1!'=1#&-5#&=)$*M1'%M)!%]!\"%--$"
+ "$M!\"'L]!'<]$$,]$%<]!&)!%]U!%]U!%]U!&-Y!&.!'%]]!%]U!$MU!'-Y!(=]!%^!!%]]!$M]!'N)#%>)$"
+ "'N!)#>!!'^-#'-]!&>!#%^!!%^)!'>!\"&^!%'>!''.!!%]]!%]M!%=]$)-]%#=]!"
+ "%^!!)]]-%]]!'-Y&(-Q!!-]%&=I#%]Q!%]Q!'=Q(&=I#(-Q!#=I!&=M#']M)&]E!"
+ "%MA!(-E!&]9!&-9#&]9!%]E!%]1\"&-9#$]1\"%]-!'M-*$MI!%M%!(-)!&M-!%M%!"
+ "%\\]\"(L]%$-!$$)!%^!!$]]!#=Q!%]]!'-Q!%]Y!$MY!&]Y%'.!!&=Y#"
+ "'-U!%]M!%]U!%=Y$%]Q!$]Q'%]M!'=Y'&-M,&-M\"%ME!%-I#']A%#=I!$MI/&ME$"
+ "&MA$#=A!(=5,&=E#'-9'&]E!'-5''-=!!=1\"(M1$&])&%M)!'M%%$=%!%M!!'--#"
+ "#,]!%!\"']Q$%]I!(-Q!#=Q%"
+ "$MM!%]Q!$MQ!&MU%&]Q!'-]!#=E!%]M!&]Q!(-Q%$MY!&MI$(=M!%]I!#=]!&]E%"
+ "%]Q!\"-U!*>!4'=I(&]Q!$MA!%]M!)=A+%]5\"(-E!&=M$&-1#(=9-%-5(%]9!'==("
+ "'=5#%]5\"%]1!*-1*%]%\"(]5$$=)!%]-\"#M%\"%M!!%M-!&L]!&LQ&(,],'-)'&LY!"
+ "'M%$%LE\"&\\Q'& b ? a : b;
+}
+
+/* Create a new bubble. */
+void *
+glb_bubble_new(glb_data *d, GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
+ GLfloat y_incr, GLfloat scale_incr)
+{
+ int i, j;
+
+ /* GLfloat axes [glb_config.nr_nudge_axes][3]; */
+ GLfloat axes[5][3]; /* HARD CODED for SunCC */
+ int nr_vertices;
+ glb_vertex *vertices = glb_sphere_get_vertices(d, &nr_vertices);
+
+ bubble *b = (bubble *) malloc(sizeof *b);
+
+ if (b == 0)
+ return 0;
+
+ if (glb_config.bubble_colour[0] == -1.0) {
+ b->color[0] = ((float) (NRAND(100)) / 100.0);
+ b->color[1] = ((float) (NRAND(100)) / 100.0);
+ b->color[2] = ((float) (NRAND(100)) / 100.0);
+ } else {
+ b->color[0] = glb_config.bubble_colour[0];
+ b->color[1] = glb_config.bubble_colour[1];
+ b->color[2] = glb_config.bubble_colour[2];
+ }
+ b->color[3] = glb_config.bubble_colour[3];
+
+
+ b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices *
+ glb_config.nr_nudge_axes);
+ if (b->contributions == 0) {
+ (void) free((void *) b);
+ return 0;
+ }
+ b->nudge_angle = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
+ if (b->nudge_angle == 0) {
+ (void) free((void *) b->contributions);
+ (void) free((void *) b);
+ return 0;
+ }
+ b->nudge_angle_incr = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
+ if (b->nudge_angle_incr == 0) {
+ (void) free((void *) b->nudge_angle);
+ (void) free((void *) b->contributions);
+ (void) free((void *) b);
+ return 0;
+ }
+ /* Initialize primitive elements. */
+ b->x = x;
+ b->y = y;
+ b->z = z;
+ b->scale = scale;
+ b->y_incr = y_incr;
+ b->scale_incr = scale_incr;
+ b->rotx = b->roty = b->rotz = 0;
+ b->rotx_incr = glb_drand() * glb_config.rotation_factor * 2
+ - glb_config.rotation_factor;
+ b->roty_incr = glb_drand() * glb_config.rotation_factor * 2
+ - glb_config.rotation_factor;
+ b->rotz_incr = glb_drand() * glb_config.rotation_factor * 2
+ - glb_config.rotation_factor;
+
+ /* Initialize the nudge angle arrays. */
+ for (i = 0; i < glb_config.nr_nudge_axes; ++i) {
+ b->nudge_angle[i] = 0;
+ b->nudge_angle_incr[i] = glb_drand() * glb_config.nudge_angle_factor;
+ }
+
+ /* Choose some random nudge axes. */
+ for (i = 0; i < glb_config.nr_nudge_axes; ++i) {
+ axes[i][0] = glb_drand() * 2 - 1;
+ axes[i][1] = glb_drand() * 2 - 1;
+ axes[i][2] = glb_drand() * 2 - 1;
+ normalize(axes[i]);
+ }
+
+ /* Calculate the contribution that each nudge axis has on each vertex. */
+ for (i = 0; i < nr_vertices; ++i)
+ for (j = 0; j < glb_config.nr_nudge_axes; ++j)
+ b->contributions[i * glb_config.nr_nudge_axes + j]
+ = max(0, dotprod(vertices[i], axes[j]));
+
+ return (void *) b;
+}
+
+/* Delete a bubble and free up all memory. */
+void
+glb_bubble_delete(void *bb)
+{
+ bubble *b = (bubble *) bb;
+
+ if (b != NULL) {
+ if (b->nudge_angle_incr) {
+ (void) free((void *) b->nudge_angle_incr);
+ b->nudge_angle_incr = NULL;
+ }
+ if (b->nudge_angle) {
+ (void) free((void *) b->nudge_angle);
+ b->nudge_angle = NULL;
+ }
+ if (b->contributions) {
+ (void) free((void *) b->contributions);
+ b->contributions = NULL;
+ }
+ (void) free((void *) b);
+ b = NULL;
+ }
+}
+
+/* Rotate and wobble a bubble by a single step. */
+void
+glb_bubble_step(void *bb)
+{
+ int i;
+ bubble *b = (bubble *) bb;
+
+ /* Update the rotation. */
+ b->rotx += b->rotx_incr;
+ b->roty += b->roty_incr;
+ b->rotz += b->rotz_incr;
+
+ /* Update the nudge angles. */
+ for (i = 0; i < glb_config.nr_nudge_axes; ++i)
+ b->nudge_angle[i] += b->nudge_angle_incr[i];
+
+ /* Move it upwards & outwards. */
+ b->y += b->y_incr;
+ b->scale += b->scale_incr;
+}
+
+/* Draw a bubble. */
+void
+glb_bubble_draw(glb_data *d, void *bb)
+{
+ int i, j;
+ bubble *b = (bubble *) bb;
+ int nr_vertices;
+ glb_vertex *vertices = glb_sphere_get_vertices(d, &nr_vertices);
+ int nr_triangles;
+ glb_triangle *triangles = glb_sphere_get_triangles(d, &nr_triangles);
+ glb_vertex *new_vertices;
+
+ new_vertices = (glb_vertex *) malloc(sizeof (glb_vertex) * nr_vertices);
+ /* Calculate the vertices of this bubble, factoring in each nudge axis. */
+ for (i = 0; i < nr_vertices; ++i) {
+ GLfloat s = 0;
+
+ for (j = 0; j < glb_config.nr_nudge_axes; ++j)
+ s += ((GLfloat) cos((double) (b->nudge_angle[j])) *
+ glb_config.nudge_factor - glb_config.nudge_factor / 2) *
+ b->contributions[i * glb_config.nr_nudge_axes + j];
+
+ new_vertices[i][0] = vertices[i][0] * (s + 1);
+ new_vertices[i][1] = vertices[i][1] * (s + 1);
+ new_vertices[i][2] = vertices[i][2] * (s + 1);
+ }
+
+ glPushMatrix();
+
+ /* Apply translation, rotation and scalings. */
+ glTranslatef(b->x, b->y, b->z);
+
+ glRotatef(b->rotx, 1, 0, 0);
+ glRotatef(b->roty, 0, 1, 0);
+ glRotatef(b->rotz, 0, 0, 1);
+
+ glScalef(b->scale, b->scale, b->scale);
+
+ /* Draw the bubble. */
+ glFrontFace(GL_CW);
+ glBegin(GL_TRIANGLES);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, b->color);
+
+ for (i = 0; i < nr_triangles; ++i) {
+ glNormal3fv(new_vertices[triangles[i][0]]);
+ glVertex3fv(new_vertices[triangles[i][0]]);
+ glNormal3fv(new_vertices[triangles[i][1]]);
+ glVertex3fv(new_vertices[triangles[i][1]]);
+ glNormal3fv(new_vertices[triangles[i][2]]);
+ glVertex3fv(new_vertices[triangles[i][2]]);
+ }
+ glEnd();
+ glPopMatrix();
+ (void) free((void *) new_vertices);
+ glb_config.polygon_count += nr_triangles;
+}
+
+/* Return y value. */
+GLfloat
+glb_bubble_get_y(void *bb)
+{
+ bubble *b = (bubble *) bb;
+
+ return b->y;
+}
diff --git a/hacks/glx/bubble3d.h b/hacks/glx/bubble3d.h
new file mode 100644
index 0000000..92ccbbd
--- /dev/null
+++ b/hacks/glx/bubble3d.h
@@ -0,0 +1,100 @@
+/* GLBUBBLES (C) 1998 Richard W.M. Jones. */
+
+#ifndef __bubbles3d_h__
+#define __bubbles3d_h__
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef STANDALONE
+# include
+# include "xlockmoreI.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#if !defined(HAVE_JWXYZ) && !defined(HAVE_JWZGLES)
+# include
+# include
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+/* Static configuration. */
+#define GLB_SLOW_GL 0 /* Set this if you have a slow GL
+ * implementation. If you have an accelerated
+ * graphics card, set this to 0.
+ */
+#define GLB_VERTICES_EPSILON 0.0005 /* How close are identical vertices? */
+
+/* Configuration structure. */
+struct glb_config {
+ int transparent_p; /* Whether to use alpha blending */
+
+ int subdivision_depth; /* Controls how many triangles are in
+ * each bubble. 2 and 3 are good values.
+ */
+ int nr_nudge_axes; /* Number of directions in which each
+ * bubble gets stretched. Values between
+ * 3 and 7 seem to produce good results.
+ */
+ GLfloat nudge_angle_factor; /* Max. amount of rotation in nudge angles.
+ * Controls the amount of `wobble' we see,
+ * and 0.3 seems to work well.
+ */
+ GLfloat nudge_factor; /* Max. displacement of any single nudge.
+ * Controls the amount of the wobble. Depends
+ * on NR_NUDGE_AXES, and must not exceed
+ * 1 / NR_NUDGE_AXES. 0.1 is good.
+ */
+ GLfloat rotation_factor; /* Max. amount by which bubbles rotate. */
+ int create_bubbles_every; /* How often to create new bubbles. */
+ int max_bubbles; /* Max. number of bubbles to create. */
+ double p_bubble_group[4]; /* Probabilities of creating 1, 2, 3, 4
+ * bubbles in a group. Cumulative.
+ */
+ GLfloat max_size; /* Max. size. */
+ GLfloat min_size; /* Min. size of bubbles. */
+ GLfloat max_speed; /* Max. speed. */
+ GLfloat min_speed; /* Min. speed of bubbles. */
+ GLfloat scale_factor; /* Factor by which bubbles scale from bottom
+ * of screen to top. 1.5 - 2.0 are OK.
+ */
+ GLfloat screen_bottom; /* Bottom of screen. */
+ GLfloat screen_top; /* Top of screen. */
+ GLfloat bubble_colour[4]; /* Colour of the bubbles. */
+
+ int polygon_count;
+};
+
+extern struct glb_config glb_config;
+
+#define glb_drand() ((double)LRAND() / (double)MAXRAND)
+
+/*-- From glb_sphere.c. --*/
+typedef struct glb_data glb_data;
+typedef GLfloat glb_vertex[3];
+typedef GLuint glb_triangle[3];
+extern glb_data * glb_sphere_init(void);
+extern glb_vertex *glb_sphere_get_vertices(glb_data *, int *nr_vertices);
+extern glb_triangle *glb_sphere_get_triangles(glb_data *, int *nr_triangles);
+extern void glb_sphere_end(glb_data *);
+
+/*-- From glb_bubble.c. --*/
+extern void *glb_bubble_new(glb_data *d,
+ GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
+ GLfloat y_incr, GLfloat scale_incr);
+extern void glb_bubble_delete(void *);
+extern void glb_bubble_step(void *);
+extern void glb_bubble_draw(glb_data *d, void *);
+extern GLfloat glb_bubble_get_y(void *);
+
+/*-- From glb_draw.c. --*/
+extern void *glb_draw_init(void);
+extern void glb_draw_step(void *);
+extern void glb_draw_end(void *);
+
+#endif /* __bubbles3d_h__ */
diff --git a/hacks/glx/bubble3d.man b/hacks/glx/bubble3d.man
new file mode 100644
index 0000000..f847e12
--- /dev/null
+++ b/hacks/glx/bubble3d.man
@@ -0,0 +1,62 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+bubble3d - 3d rising bubbles.
+.SH SYNOPSIS
+.B bubble3d
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-transparent]
+[\-color \fIcolor\fP]
+[\-fps]
+.SH DESCRIPTION
+Draws a stream of rising, undulating 3D bubbles, rising toward the top of
+the screen, with nice specular reflections.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-transparent
+Draw transparent bubbles instead of solid ones.
+.TP 8
+.B \-color \fIcolor\fP
+Draw bubbles of the specified color. "Random" means a different color
+for each bubble.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 15000 (0.015 seconds.).
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Richard Jones. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Richard Jones.
diff --git a/hacks/glx/buildlwo.c b/hacks/glx/buildlwo.c
new file mode 100644
index 0000000..c20c9e2
--- /dev/null
+++ b/hacks/glx/buildlwo.c
@@ -0,0 +1,96 @@
+
+#if 0
+static const char sccsid[] = "@(#)buildlwo.c 4.02 97/04/20 xlockmore";
+#endif
+
+/*-
+ * buildlwo.c: Lightwave Object Display List Builder for OpenGL
+ *
+ * This module can be called by any GL mode wishing to use
+ * objects created in NewTek's Lightwave 3D. The objects must
+ * first be converted to C source with my converter "lw2ogl".
+ * If other people are interested in this, I will put up a
+ * web page for it at http://www.netaxs.com/~emackey/lw2ogl/
+ *
+ * by Ed Mackey, 4/19/97
+ *
+ */
+
+#ifndef STANDALONE
+#include "xlock.h"
+#endif
+
+#ifdef USE_GL
+
+#include "buildlwo.h"
+
+GLuint
+BuildLWO(int wireframe, const struct lwo *object)
+{
+ GLuint dl_num;
+ const GLfloat *pnts, *normals, *grab;
+ const unsigned short int *pols;
+ GLfloat three[3];
+ int p, num_pnts = 0;
+
+ dl_num = glGenLists(1);
+ if (!dl_num)
+ return (0);
+
+ pnts = object->pnts;
+ normals = object->normals;
+ pols = object->pols;
+
+ glNewList(dl_num, GL_COMPILE);
+
+ if (!pols) {
+ num_pnts = object->num_pnts;
+ glBegin(GL_POINTS);
+ for (p = 0; p < num_pnts; ++p) {
+ three[0] = *(pnts++);
+ three[1] = *(pnts++);
+ three[2] = *(pnts++);
+ glVertex3fv(three);
+ }
+ glEnd();
+ } else
+ for (;;) {
+ if (num_pnts <= 0) {
+ num_pnts = *pols + 2;
+ if (num_pnts < 3)
+ break;
+ if (num_pnts == 3) {
+ glBegin(GL_POINTS);
+ } else if (num_pnts == 4) {
+ glBegin(GL_LINES);
+ } else {
+ three[0] = *(normals++);
+ three[1] = *(normals++);
+ three[2] = *(normals++);
+ glNormal3fv(three);
+ if (wireframe)
+ glBegin(GL_LINE_LOOP);
+ else
+ glBegin(GL_POLYGON);
+ }
+ } else if (num_pnts == 1) {
+ glEnd();
+ } else {
+ grab = pnts + ((int) (*pols) * 3);
+ three[0] = *(grab++);
+ three[1] = *(grab++);
+ three[2] = *(grab);
+ glVertex3fv(three);
+ }
+ --num_pnts;
+ ++pols;
+ }
+
+ glEndList();
+
+ return (dl_num);
+}
+
+#endif /* USE_GL */
+
+/* End of buildlwo.c */
diff --git a/hacks/glx/buildlwo.h b/hacks/glx/buildlwo.h
new file mode 100644
index 0000000..b7fbbd9
--- /dev/null
+++ b/hacks/glx/buildlwo.h
@@ -0,0 +1,43 @@
+/*-
+ * buildlwo.h: Header file for Lightwave Object Display List Builder
+ * for OpenGL
+ *
+ * by Ed Mackey, 4/19/97
+ *
+ */
+
+#ifndef __BUILD_LWO_H__
+#define __BUILD_LWO_H__
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef STANDALONE
+# ifndef HAVE_JWXYZ
+# include
+# endif
+#endif
+
+#ifdef HAVE_ANDROID
+# include
+#endif
+
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+struct lwo {
+ int num_pnts;
+ const GLfloat *pnts;
+ const GLfloat *normals;
+ const unsigned short int *pols;
+ const GLfloat *smoothnormals;
+};
+
+GLuint BuildLWO(int wireframe, const struct lwo *object);
+
+#endif
+
+/* End of buildlwo.h */
diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c
new file mode 100644
index 0000000..66f48aa
--- /dev/null
+++ b/hacks/glx/cage.c
@@ -0,0 +1,480 @@
+/* -*- Mode: C; tab-width: 4 -*- */
+/* cage --- the Impossible Cage, an Escher like scene. */
+
+#if 0
+static const char sccsid[] = "@(#)cage.c 5.01 2001/03/01 xlockmore";
+#endif
+
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The RotateAroundU() routine was adapted from the book
+ * "Computer Graphics Principles and Practice
+ * Foley - vanDam - Feiner - Hughes
+ * Second Edition" Pag. 227, exercise 5.15.
+ *
+ * This mode shows some interesting scenes that are impossible OR very
+ * wierd to build in the real universe. Much of the scenes are inspirated
+ * on Mauritz Cornelis Escher's works which derivated the mode's name.
+ * M.C. Escher (1898-1972) was a dutch artist and many people prefer to
+ * say he was a mathematician.
+ *
+ * Thanks goes to Brian Paul for making it possible and inexpensive to use
+ * OpenGL at home.
+ *
+ * Since I'm not a native English speaker, my apologies for any grammatical
+ * mistakes.
+ *
+ * My e-mail address is
+ * mfvianna@centroin.com.br
+ *
+ * Marcelo F. Vianna (Jun-01-1997)
+ *
+ * Revision History:
+ * 05-Apr-2002: Removed all gllist uses (fix some bug with nvidia driver)
+ * 01-Mar-2001: Added FPS stuff E.Lassauge
+ * 01-Nov-2000: Allocation checks
+ * 01-Jan-1998: Mode separated from escher and renamed
+ * 08-Jun-1997: New scene implemented: "Impossible Cage" based in a M.C.
+ * Escher's painting with the same name (quite similar). The
+ * first GL mode to use texture mapping.
+ * The "Impossible Cage" scene doesn't use DEPTH BUFFER, the
+ * wood planks are drawn consistently using GL_CULL_FACE, and
+ * the painter's algorithm is used to sort the planks.
+ * Marcelo F. Vianna.
+ * 07-Jun-1997: Speed ups in Moebius Strip using GL_CULL_FACE.
+ * Marcelo F. Vianna.
+ * 03-Jun-1997: Initial Release (Only one scene: "Moebius Strip")
+ * The Moebius Strip scene was inspirated in a M.C. Escher's
+ * painting named Moebius Strip II in wich ants walk across a
+ * Moebius Strip path, sometimes meeting each other and sometimes
+ * being in "opposite faces" (note that the moebius strip has
+ * only one face and one edge).
+ * Marcelo F. Vianna.
+ */
+
+/*-
+ * Texture mapping is only available on RGBA contexts, Mono and color index
+ * visuals DO NOT support texture mapping in OpenGL.
+ *
+ * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture
+ * mapping shuld work on PseudoColor, DirectColor, TrueColor using Mesa. Mono
+ * is not officially supported for both OpenGL and Mesa, but seems to not crash
+ * Mesa.
+ *
+ * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
+ */
+
+#ifdef STANDALONE
+# define MODE_cage
+# define DEFAULTS "*delay: 25000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_cage 0
+# define release_cage 0
+# define cage_handle_event xlockmore_no_events
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef MODE_cage
+
+#if 0
+#include "e_textures.h"
+#else
+#include "ximage-loader.h"
+#include "images/gen/wood_png.h"
+#endif
+
+ENTRYPOINT ModeSpecOpt cage_opts =
+{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL};
+
+#ifdef USE_MODULES
+ModStruct cage_description =
+{"cage", "init_cage", "draw_cage", NULL,
+ "draw_cage", "change_cage", (char *) NULL, &cage_opts,
+ 25000, 1, 1, 1, 1.0, 4, "",
+ "Shows the Impossible Cage, an Escher-like GL scene", 0, NULL};
+
+#endif
+
+#define Scale4Window 0.3
+#define Scale4Iconic 0.4
+
+#define sqr(A) ((A)*(A))
+
+#ifndef Pi
+#define Pi M_PI
+#endif
+
+#define ObjWoodPlank 0
+#define MaxObj 1
+
+/*************************************************************************/
+
+typedef struct {
+ GLint WindH, WindW;
+ GLfloat step;
+ GLXContext *glx_context;
+} cagestruct;
+
+static const float front_shininess[] = {60.0};
+static const float front_specular[] = {0.7, 0.7, 0.7, 1.0};
+static const float ambient[] = {0.0, 0.0, 0.0, 1.0};
+static const float diffuse[] = {1.0, 1.0, 1.0, 1.0};
+static const float position0[] = {1.0, 1.0, 1.0, 0.0};
+static const float position1[] = {-1.0, -1.0, 1.0, 0.0};
+static const float lmodel_ambient[] = {0.5, 0.5, 0.5, 1.0};
+static const float lmodel_twoside[] = {GL_TRUE};
+
+static const float MaterialWhite[] = {0.7, 0.7, 0.7, 1.0};
+
+static cagestruct *cage = (cagestruct *) NULL;
+
+#define PlankWidth 3.0
+#define PlankHeight 0.35
+#define PlankThickness 0.15
+
+static Bool
+draw_woodplank(ModeInfo *mi, cagestruct * cp, int wire)
+{
+ glBegin(wire ? GL_LINES : GL_QUADS);
+ glNormal3f(0, 0, 1);
+ glTexCoord2f(0, 0);
+ glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(PlankWidth, PlankHeight, PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
+ mi->polygon_count++;
+ glNormal3f(0, 0, -1);
+ glTexCoord2f(0, 0);
+ glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
+ mi->polygon_count++;
+ glNormal3f(0, 1, 0);
+ glTexCoord2f(0, 0);
+ glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(PlankWidth, PlankHeight, PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
+ mi->polygon_count++;
+ glNormal3f(0, -1, 0);
+ glTexCoord2f(0, 0);
+ glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
+ mi->polygon_count++;
+ glNormal3f(1, 0, 0);
+ glTexCoord2f(0, 0);
+ glVertex3f(PlankWidth, -PlankHeight, PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(PlankWidth, -PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(PlankWidth, PlankHeight, -PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(PlankWidth, PlankHeight, PlankThickness);
+ mi->polygon_count++;
+ glNormal3f(-1, 0, 0);
+ glTexCoord2f(0, 0);
+ glVertex3f(-PlankWidth, PlankHeight, PlankThickness);
+ glTexCoord2f(1, 0);
+ glVertex3f(-PlankWidth, PlankHeight, -PlankThickness);
+ glTexCoord2f(1, 1);
+ glVertex3f(-PlankWidth, -PlankHeight, -PlankThickness);
+ glTexCoord2f(0, 1);
+ glVertex3f(-PlankWidth, -PlankHeight, PlankThickness);
+ mi->polygon_count++;
+ glEnd();
+
+ return True;
+}
+
+static Bool
+draw_impossiblecage(ModeInfo *mi, cagestruct * cp, int wire)
+{
+ glPushMatrix();
+ glRotatef(90, 0, 1, 0);
+ glTranslatef(0.0, PlankHeight - PlankWidth, -PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 0, 1);
+ glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 1, 0);
+ glTranslatef(0.0, PlankWidth - PlankHeight, -PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glTranslatef(0.0, PlankWidth - PlankHeight, 3 * PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 0, 1);
+ glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - 3 * PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glTranslatef(0.0, PlankHeight - PlankWidth, 3 * PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 0, 1);
+ glTranslatef(0.0, PlankHeight - PlankWidth, PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - 3 * PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 1, 0);
+ glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth + PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 0, 1);
+ glTranslatef(0.0, PlankWidth - PlankHeight, PlankThickness - PlankWidth);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ glPushMatrix();
+ glRotatef(90, 0, 1, 0);
+ glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth + PlankThickness);
+ if (!draw_woodplank(mi, cp, wire))
+ return False;
+ glPopMatrix();
+ return True;
+}
+
+static void
+reshape_cage(ModeInfo * mi, int width, int height)
+{
+ cagestruct *cp = &cage[MI_SCREEN(mi)];
+ int i;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ }
+
+ glViewport(0, y, cp->WindW = (GLint) width, cp->WindH = (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
+ glMatrixMode(GL_MODELVIEW);
+ i = width / 512 + 1;
+ glLineWidth(i);
+ glPointSize(i);
+}
+
+static void
+pinit(ModeInfo *mi)
+{
+ /* int status; */
+
+ if (MI_IS_WIREFRAME(mi))
+ return;
+
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION, position1);
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+ glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_NORMALIZE);
+ glFrontFace(GL_CCW);
+ glCullFace(GL_BACK);
+
+ /* cage */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialWhite);
+ glShadeModel(GL_FLAT);
+ glDisable(GL_DEPTH_TEST);
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_CULL_FACE);
+
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+
+#if 0
+ clear_gl_error();
+ if (MI_IS_MONO(mi))
+ status = 0;
+ else
+ status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3,
+ WoodTextureWidth, WoodTextureHeight,
+ GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData);
+ if (status)
+ {
+ const char *s = (char *) gluErrorString (status);
+ fprintf (stderr, "%s: error mipmapping texture: %s\n",
+ progname, (s ? s : "(unknown)"));
+ exit (1);
+ }
+ check_gl_error("mipmapping");
+#else
+ {
+ XImage *img = image_data_to_ximage (mi->dpy, mi->xgwa.visual,
+ wood_png, sizeof(wood_png));
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ img->width, img->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, img->data);
+ check_gl_error("texture");
+ XDestroyImage (img);
+ }
+#endif
+
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+}
+
+ENTRYPOINT void
+init_cage (ModeInfo * mi)
+{
+ cagestruct *cp;
+
+ MI_INIT (mi, cage);
+ cp = &cage[MI_SCREEN(mi)];
+
+ cp->step = NRAND(90);
+ if ((cp->glx_context = init_GL(mi)) != NULL) {
+
+ reshape_cage(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ glDrawBuffer(GL_BACK);
+ pinit(mi);
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+}
+
+ENTRYPOINT void
+draw_cage (ModeInfo * mi)
+{
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ cagestruct *cp;
+
+ if (cage == NULL)
+ return;
+ cp = &cage[MI_SCREEN(mi)];
+
+ MI_IS_DRAWN(mi) = True;
+ if (!cp->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+ glXMakeCurrent(display, window, *(cp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+ glTranslatef(0.0, 0.0, -10.0);
+
+ if (!MI_IS_ICONIC(mi)) {
+ glScalef(Scale4Window * cp->WindH / cp->WindW, Scale4Window, Scale4Window);
+ } else {
+ glScalef(Scale4Iconic * cp->WindH / cp->WindW, Scale4Iconic, Scale4Iconic);
+ }
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ if (o != 0 && o != 180 && o != -180) {
+ glScalef (1/h, h, 1/h); /* #### not quite right */
+ h = 1.7;
+ glScalef (h, h, h);
+ }
+ }
+# endif
+
+ /* cage */
+ glRotatef(cp->step * 100, 0, 0, 1);
+ glRotatef(25 + cos(cp->step * 5) * 6, 1, 0, 0);
+ glRotatef(204.5 - sin(cp->step * 5) * 8, 0, 1, 0);
+ if (!draw_impossiblecage(mi, cp, MI_IS_WIREFRAME(mi))) {
+ MI_ABORT(mi);
+ return;
+ }
+
+ glPopMatrix();
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glFlush();
+
+ glXSwapBuffers(display, window);
+
+ cp->step += 0.025;
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void
+change_cage (ModeInfo * mi)
+{
+ cagestruct *cp = &cage[MI_SCREEN(mi)];
+
+ if (!cp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ pinit(mi);
+}
+#endif /* !STANDALONE */
+
+XSCREENSAVER_MODULE ("Cage", cage)
+
+#endif
diff --git a/hacks/glx/cage.man b/hacks/glx/cage.man
new file mode 100644
index 0000000..dc5595b
--- /dev/null
+++ b/hacks/glx/cage.man
@@ -0,0 +1,61 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cage - Escher's impossible cage, for xscreensaver.
+.SH SYNOPSIS
+.B cage
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-mono]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+This draws Escher's "Impossible Cage", a 3d analog of a moebius strip,
+and rotates it in three dimensions.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 25000 (0.03 seconds.).
+.TP 8
+.B \-mono
+Render solid instead of textured.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of textured.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Marcelo Vianna. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Marcelo Vianna.
diff --git a/hacks/glx/carousel.c b/hacks/glx/carousel.c
new file mode 100644
index 0000000..863b1a5
--- /dev/null
+++ b/hacks/glx/carousel.c
@@ -0,0 +1,941 @@
+/* carousel, Copyright (c) 2005-2018 Jamie Zawinski
+ * Loads a sequence of images and rotates them around.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Created: 21-Feb-2005
+ */
+
+#if defined(HAVE_COCOA) || defined(HAVE_ANDROID)
+# define DEF_FONT "OCR A Std 48, Lucida Console 48, Monaco 48"
+#elif 0 /* real X11, XQueryFont() */
+# define DEF_FONT "-*-helvetica-bold-r-normal-*-*-480-*-*-*-*-*-*"
+#else /* real X11, load_font_retry() */
+# define DEF_FONT "-*-ocr a std-medium-r-*-*-*-480-*-*-m-*-*-*"
+#endif
+
+#define DEF_TITLE_FONT "-*-helvetica-bold-r-normal-*-*-480-*-*-*-*-*-*"
+
+#define DEFAULTS "*count: 7 \n" \
+ "*delay: 10000 \n" \
+ "*wireframe: False \n" \
+ "*showFPS: False \n" \
+ "*fpsSolid: True \n" \
+ "*useSHM: True \n" \
+ "*font: " DEF_FONT "\n" \
+ "*titleFont: " DEF_TITLE_FONT "\n" \
+ "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \
+ "*grabDesktopImages: False \n" \
+ "*chooseRandomImages: True \n"
+
+# define free_carousel 0
+# define release_carousel 0
+# include "xlockmore.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#ifdef USE_GL
+
+# define DEF_SPEED "1.0"
+# define DEF_DURATION "20"
+# define DEF_TITLES "True"
+# define DEF_ZOOM "True"
+# define DEF_TILT "XY"
+# define DEF_MIPMAP "True"
+# define DEF_DEBUG "False"
+
+#include "rotator.h"
+#include "gltrackball.h"
+#include "grab-ximage.h"
+#include "texfont.h"
+
+# ifndef HAVE_JWXYZ
+# include /* for XrmDatabase in -debug mode */
+# endif
+
+/* Should be in */
+# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+# endif
+# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+# endif
+
+typedef struct {
+ double x, y, w, h;
+} rect;
+
+typedef enum { EARLY, NORMAL, LOADING, OUT, IN, DEAD } fade_mode;
+static int fade_ticks = 60;
+
+typedef struct {
+ char *title; /* the filename of this image */
+ int w, h; /* size in pixels of the image */
+ int tw, th; /* size in pixels of the texture */
+ XRectangle geom; /* where in the image the bits are */
+ GLuint texid;
+} image;
+
+typedef struct {
+ ModeInfo *mi;
+ image current, loading;
+ GLfloat r, theta; /* radius and rotation on the tube */
+ rotator *rot; /* for zoomery */
+ Bool from_top_p; /* whether this image drops in or rises up */
+ time_t expires; /* when this image should be replaced */
+ fade_mode mode; /* in/out animation state */
+ int mode_tick;
+ Bool loaded_p; /* whether background load is done */
+} image_frame;
+
+
+typedef struct {
+ GLXContext *glx_context;
+ GLfloat anisotropic;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ time_t button_down_time;
+
+ int nframes; /* how many frames are loaded */
+ int frames_size;
+ image_frame **frames; /* pointers to the frames */
+
+ Bool awaiting_first_images_p;
+ int loads_in_progress;
+
+ texture_font_data *texfont, *titlefont;
+
+ fade_mode mode;
+ int mode_tick;
+
+ int loading_sw, loading_sh;
+
+ time_t last_time, now;
+ int draw_tick;
+
+} carousel_state;
+
+static carousel_state *sss = NULL;
+
+
+/* Command-line arguments
+ */
+static GLfloat speed; /* animation speed scale factor */
+static int duration; /* reload images after this long */
+static Bool mipmap_p; /* Use mipmaps instead of single textures. */
+static Bool titles_p; /* Display image titles. */
+static Bool zoom_p; /* Throb the images in and out as they spin. */
+static char *tilt_str;
+static Bool tilt_x_p; /* Tilt axis towards the viewer */
+static Bool tilt_y_p; /* Tilt axis side to side */
+static Bool debug_p; /* Be loud and do weird things. */
+
+
+static XrmOptionDescRec opts[] = {
+ {"-zoom", ".zoom", XrmoptionNoArg, "True" },
+ {"-no-zoom", ".zoom", XrmoptionNoArg, "False" },
+ {"-tilt", ".tilt", XrmoptionSepArg, 0 },
+ {"-no-tilt", ".tilt", XrmoptionNoArg, "" },
+ {"-titles", ".titles", XrmoptionNoArg, "True" },
+ {"-no-titles", ".titles", XrmoptionNoArg, "False" },
+ {"-mipmaps", ".mipmap", XrmoptionNoArg, "True" },
+ {"-no-mipmaps", ".mipmap", XrmoptionNoArg, "False" },
+ {"-duration", ".duration", XrmoptionSepArg, 0 },
+ {"-debug", ".debug", XrmoptionNoArg, "True" },
+ {"-font", ".font", XrmoptionSepArg, 0 },
+ {"-speed", ".speed", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ { &mipmap_p, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool},
+ { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool},
+ { &titles_p, "titles", "Titles", DEF_TITLES, t_Bool},
+ { &zoom_p, "zoom", "Zoom", DEF_ZOOM, t_Bool},
+ { &tilt_str, "tilt", "Tilt", DEF_TILT, t_String},
+ { &speed, "speed", "Speed", DEF_SPEED, t_Float},
+ { &duration, "duration", "Duration", DEF_DURATION, t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt carousel_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Allocates a frame structure and stores it in the list.
+ */
+static image_frame *
+alloc_frame (ModeInfo *mi)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ image_frame *frame = (image_frame *) calloc (1, sizeof (*frame));
+
+ frame->mi = mi;
+ frame->mode = EARLY;
+ frame->rot = make_rotator (0, 0, 0, 0, 0.04 * frand(1.0) * speed, False);
+
+ glGenTextures (1, &frame->current.texid);
+ glGenTextures (1, &frame->loading.texid);
+ if (frame->current.texid <= 0) abort();
+ if (frame->loading.texid <= 0) abort();
+
+ if (ss->frames_size <= ss->nframes)
+ {
+ ss->frames_size = (ss->frames_size * 1.2) + ss->nframes;
+ ss->frames = (image_frame **)
+ realloc (ss->frames, ss->frames_size * sizeof(*ss->frames));
+ if (! ss->frames)
+ {
+ fprintf (stderr, "%s: out of memory (%d images)\n",
+ progname, ss->frames_size);
+ exit (1);
+ }
+ }
+
+ ss->frames[ss->nframes++] = frame;
+
+ return frame;
+}
+
+
+static void image_loaded_cb (const char *filename, XRectangle *geom,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure);
+
+
+/* Load a new file into the given image struct.
+ */
+static void
+load_image (ModeInfo *mi, image_frame *frame)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+
+ if (debug_p && !wire && frame->current.w != 0)
+ fprintf (stderr, "%s: dropped %4d x %-4d %4d x %-4d \"%s\"\n",
+ progname,
+ frame->current.geom.width,
+ frame->current.geom.height,
+ frame->current.tw, frame->current.th,
+ (frame->current.title ? frame->current.title : "(null)"));
+
+ switch (frame->mode)
+ {
+ case EARLY: break;
+ case NORMAL: frame->mode = LOADING; break;
+ default: abort();
+ }
+
+ ss->loads_in_progress++;
+
+ if (wire)
+ image_loaded_cb (0, 0, 0, 0, 0, 0, frame);
+ else
+ {
+ int w = (MI_WIDTH(mi) / 2) - 1;
+ int h = (MI_HEIGHT(mi) / 2) - 1;
+ if (w <= 10) w = 10;
+ if (h <= 10) h = 10;
+
+ if (w > h * 5) { /* tiny window: use 16:9 boxes */
+ h = w * 9/16;
+ }
+
+ load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context, w, h,
+ mipmap_p, frame->loading.texid,
+ image_loaded_cb, frame);
+ }
+}
+
+
+/* Callback that tells us that the texture has been loaded.
+ */
+static void
+image_loaded_cb (const char *filename, XRectangle *geom,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure)
+{
+ image_frame *frame = (image_frame *) closure;
+ ModeInfo *mi = frame->mi;
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+
+ if (wire)
+ {
+ frame->loading.w = MI_WIDTH (mi) * (0.5 + frand (1.0));
+ frame->loading.h = MI_HEIGHT (mi);
+ frame->loading.geom.width = frame->loading.w;
+ frame->loading.geom.height = frame->loading.h;
+ goto DONE;
+ }
+
+ if (image_width == 0 || image_height == 0)
+ exit (1);
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+ mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR);
+
+ if (ss->anisotropic >= 1.0)
+ glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT,
+ ss->anisotropic);
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+ frame->loading.w = image_width;
+ frame->loading.h = image_height;
+ frame->loading.tw = texture_width;
+ frame->loading.th = texture_height;
+ frame->loading.geom = *geom;
+
+ if (frame->loading.title)
+ free (frame->loading.title);
+ frame->loading.title = (filename ? strdup (filename) : 0);
+
+ /* xscreensaver-getimage returns paths relative to the image directory
+ now, so leave the sub-directory part in. Unless it's an absolute path.
+ */
+ if (frame->loading.title && frame->loading.title[0] == '/')
+ { /* strip filename to part after last /. */
+ char *s = strrchr (frame->loading.title, '/');
+ if (s) strcpy (frame->loading.title, s+1);
+ }
+
+ if (debug_p)
+ fprintf (stderr, "%s: loaded %4d x %-4d %4d x %-4d \"%s\"\n",
+ progname,
+ frame->loading.geom.width,
+ frame->loading.geom.height,
+ frame->loading.tw, frame->loading.th,
+ (frame->loading.title ? frame->loading.title : "(null)"));
+
+ DONE:
+
+ frame->loaded_p = True;
+
+ if (ss->loads_in_progress <= 0) abort();
+ ss->loads_in_progress--;
+
+ /* This image expires N seconds after it finished loading. */
+ frame->expires = time((time_t *) 0) + (duration * MI_COUNT(mi));
+
+ switch (frame->mode)
+ {
+ case EARLY: /* part of the initial batch of images */
+ {
+ image swap = frame->current;
+ frame->current = frame->loading;
+ frame->loading = swap;
+ }
+ break;
+ case LOADING: /* start dropping the old image out */
+ {
+ frame->mode = OUT;
+ frame->mode_tick = fade_ticks / speed;
+ frame->from_top_p = random() & 1;
+ }
+ break;
+ default:
+ abort();
+ }
+}
+
+
+static void loading_msg (ModeInfo *mi, int n);
+
+static Bool
+load_initial_images (ModeInfo *mi)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ Bool all_loaded_p = True;
+ for (i = 0; i < ss->nframes; i++)
+ if (! ss->frames[i]->loaded_p)
+ all_loaded_p = False;
+
+ if (all_loaded_p)
+ {
+ if (ss->nframes < MI_COUNT (mi))
+ {
+ /* The frames currently on the list are fully loaded.
+ Start the next one loading. (We run the image loader
+ asynchronously, but we load them one at a time.)
+ */
+ load_image (mi, alloc_frame (mi));
+ }
+ else
+ {
+ /* The first batch of images are now all loaded!
+ Stagger the expire times so that they don't all drop out at once.
+ */
+ time_t now = time((time_t *) 0);
+ int i;
+
+ for (i = 0; i < ss->nframes; i++)
+ {
+ image_frame *frame = ss->frames[i];
+ frame->r = 1.0;
+ frame->theta = i * 360.0 / ss->nframes;
+ frame->expires = now + (duration * (i + 1));
+ frame->mode = NORMAL;
+ }
+
+ /* Instead of always going clockwise, shuffle the expire times
+ of the frames so that they drop out in a random order.
+ */
+ for (i = 0; i < ss->nframes; i++)
+ {
+ image_frame *frame1 = ss->frames[i];
+ image_frame *frame2 = ss->frames[random() % ss->nframes];
+ time_t swap = frame1->expires;
+ frame1->expires = frame2->expires;
+ frame2->expires = swap;
+ }
+
+ ss->awaiting_first_images_p = False;
+ }
+ }
+
+ loading_msg (mi, ss->nframes-1);
+
+ return !ss->awaiting_first_images_p;
+}
+
+
+ENTRYPOINT void
+reshape_carousel (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (60.0, 1/h, 1.0, 8.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 2.6,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+carousel_handle_event (ModeInfo *mi, XEvent *event)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ if (! ss->button_down_p)
+ ss->button_down_time = time((time_t *) 0);
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1)
+ {
+ if (ss->button_down_p)
+ {
+ /* Add the time the mouse was held to the expire times of all
+ frames, so that mouse-dragging doesn't count against
+ image expiration.
+ */
+ int secs = time((time_t *) 0) - ss->button_down_time;
+ int i;
+ for (i = 0; i < ss->nframes; i++)
+ ss->frames[i]->expires += secs;
+ }
+ }
+
+ if (gltrackball_event_handler (event, ss->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &ss->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ int i = random() % ss->nframes;
+ ss->frames[i]->expires = 0;
+ return True;
+ }
+
+ return False;
+}
+
+
+/* Kludge to add "-v" to invocation of "xscreensaver-getimage" in -debug mode
+ */
+static void
+hack_resources (Display *dpy)
+{
+# ifndef HAVE_JWXYZ
+ char *res = "desktopGrabber";
+ char *val = get_string_resource (dpy, res, "DesktopGrabber");
+ char buf1[255];
+ char buf2[255];
+ XrmValue value;
+ XrmDatabase db = XtDatabase (dpy);
+ sprintf (buf1, "%.100s.%.100s", progname, res);
+ sprintf (buf2, "%.200s -v", val);
+ value.addr = buf2;
+ value.size = strlen(buf2);
+ XrmPutResource (&db, buf1, "String", &value);
+# endif /* !HAVE_JWXYZ */
+}
+
+
+static void
+loading_msg (ModeInfo *mi, int n)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ char text[100];
+
+ if (wire) return;
+
+ if (n == 0)
+ sprintf (text, "Loading images...");
+ else
+ sprintf (text, "Loading images... (%d%%)",
+ (int) (n * 100 / MI_COUNT(mi)));
+
+ if (ss->loading_sw == 0)
+ {
+ /* only do this once, so that the string doesn't move. */
+ XCharStruct e;
+ texture_string_metrics (ss->titlefont, text, &e, 0, 0);
+ ss->loading_sw = e.width;
+ ss->loading_sh = e.ascent + e.descent;
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ glLoadIdentity();
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+/*
+ {
+ double rot = current_device_rotation();
+ glRotatef(rot, 0, 0, 1);
+ if ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135))
+ {
+ GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+ glScalef (s, 1/s, 1);
+ }
+ }
+*/
+
+# ifdef HAVE_MOBILE
+ if (MI_WIDTH(mi) < MI_HEIGHT(mi)) /* portrait orientation */
+ {
+ GLfloat s = (MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi));
+ glScalef (s, s, s);
+ glTranslatef(-s/2, 0, 0);
+ }
+# endif
+
+ glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
+ glTranslatef ((MI_WIDTH(mi) - ss->loading_sw) / 2,
+ (MI_HEIGHT(mi) - ss->loading_sh) / 2,
+ 0);
+ glColor3f (1, 1, 0);
+ glEnable (GL_TEXTURE_2D);
+ glDisable (GL_DEPTH_TEST);
+ print_texture_string (ss->titlefont, text);
+ glEnable (GL_DEPTH_TEST);
+ glPopMatrix();
+
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+
+ glMatrixMode(GL_MODELVIEW);
+
+ glFinish();
+ glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
+
+ENTRYPOINT void
+init_carousel (ModeInfo *mi)
+{
+ int screen = MI_SCREEN(mi);
+ carousel_state *ss;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, sss);
+ ss = &sss[screen];
+
+ if ((ss->glx_context = init_GL(mi)) != NULL) {
+ reshape_carousel (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+
+ if (!tilt_str || !*tilt_str)
+ ;
+ else if (!strcasecmp (tilt_str, "0"))
+ ;
+ else if (!strcasecmp (tilt_str, "X"))
+ tilt_x_p = 1;
+ else if (!strcasecmp (tilt_str, "Y"))
+ tilt_y_p = 1;
+ else if (!strcasecmp (tilt_str, "XY"))
+ tilt_x_p = tilt_y_p = 1;
+ else
+ {
+ fprintf (stderr, "%s: tilt must be 'X', 'Y', 'XY' or '', not '%s'\n",
+ progname, tilt_str);
+ exit (1);
+ }
+
+ {
+ double spin_speed = speed * 0.2; /* rotation of tube around axis */
+ double spin_accel = speed * 0.1;
+ double wander_speed = speed * 0.001; /* tilting of axis */
+
+ spin_speed *= 0.9 + frand(0.2);
+ wander_speed *= 0.9 + frand(0.2);
+
+ ss->rot = make_rotator (spin_speed, spin_speed, spin_speed,
+ spin_accel, wander_speed, True);
+
+ ss->trackball = gltrackball_init (False);
+ }
+
+ if (strstr ((char *) glGetString(GL_EXTENSIONS),
+ "GL_EXT_texture_filter_anisotropic"))
+ glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &ss->anisotropic);
+ else
+ ss->anisotropic = 0.0;
+
+ glDisable (GL_LIGHTING);
+ glEnable (GL_DEPTH_TEST);
+ glDisable (GL_CULL_FACE);
+
+ if (! wire)
+ {
+ glShadeModel (GL_SMOOTH);
+ glEnable (GL_LINE_SMOOTH);
+ /* This gives us a transparent diagonal slice through each image! */
+ /* glEnable (GL_POLYGON_SMOOTH); */
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_ALPHA_TEST);
+
+ glEnable (GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset (1.0, 1.0);
+
+ }
+
+ ss->texfont = load_texture_font (MI_DISPLAY(mi), "font");
+ ss->titlefont = load_texture_font (MI_DISPLAY(mi), "titleFont");
+
+ if (debug_p)
+ hack_resources (MI_DISPLAY (mi));
+
+ ss->nframes = 0;
+ ss->frames_size = 10;
+ ss->frames = (image_frame **)
+ calloc (1, ss->frames_size * sizeof(*ss->frames));
+
+ ss->mode = IN;
+ ss->mode_tick = fade_ticks / speed;
+
+ ss->awaiting_first_images_p = True;
+}
+
+
+static void
+draw_frame (ModeInfo *mi, image_frame *frame, time_t now, Bool body_p)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+
+ GLfloat texw = frame->current.geom.width / (GLfloat) frame->current.tw;
+ GLfloat texh = frame->current.geom.height / (GLfloat) frame->current.th;
+ GLfloat texx1 = frame->current.geom.x / (GLfloat) frame->current.tw;
+ GLfloat texy1 = frame->current.geom.y / (GLfloat) frame->current.th;
+ GLfloat texx2 = texx1 + texw;
+ GLfloat texy2 = texy1 + texh;
+ GLfloat aspect = ((GLfloat) frame->current.geom.height /
+ (GLfloat) frame->current.geom.width);
+
+ glBindTexture (GL_TEXTURE_2D, frame->current.texid);
+
+ glPushMatrix();
+
+ /* Position this image on the wheel.
+ */
+ glRotatef (frame->theta, 0, 1, 0);
+ glTranslatef (0, 0, frame->r);
+
+ /* Scale down the image so that all N frames fit on the wheel
+ without bumping in to each other.
+ */
+ {
+ GLfloat t, s;
+ switch (ss->nframes)
+ {
+ case 1: t = -1.0; s = 1.7; break;
+ case 2: t = -0.8; s = 1.6; break;
+ case 3: t = -0.4; s = 1.5; break;
+ case 4: t = -0.2; s = 1.3; break;
+ default: t = 0.0; s = 6.0 / ss->nframes; break;
+ }
+ glTranslatef (0, 0, t);
+ glScalef (s, s, s);
+ }
+
+ /* Center this image on the wheel plane.
+ */
+ glTranslatef (-0.5, -(aspect/2), 0);
+
+ /* Move as per the "zoom in and out" setting.
+ */
+ if (zoom_p)
+ {
+ double x, y, z;
+ /* Only use the Z component of the rotator for in/out position. */
+ get_position (frame->rot, &x, &y, &z, !ss->button_down_p);
+ glTranslatef (0, 0, z/2);
+ }
+
+ /* Compute the "drop in and out" state.
+ */
+ switch (frame->mode)
+ {
+ case EARLY:
+ abort();
+ break;
+ case NORMAL:
+ if (!ss->button_down_p &&
+ now >= frame->expires &&
+ ss->loads_in_progress == 0) /* only load one at a time */
+ load_image (mi, frame);
+ break;
+ case LOADING:
+ break;
+ case OUT:
+ if (--frame->mode_tick <= 0) {
+ image swap = frame->current;
+ frame->current = frame->loading;
+ frame->loading = swap;
+
+ frame->mode = IN;
+ frame->mode_tick = fade_ticks / speed;
+ }
+ break;
+ case IN:
+ if (--frame->mode_tick <= 0)
+ frame->mode = NORMAL;
+ break;
+ default:
+ abort();
+ }
+
+ /* Now translate for current in/out state.
+ */
+ if (frame->mode == OUT || frame->mode == IN)
+ {
+ GLfloat t = (frame->mode == OUT
+ ? frame->mode_tick / (fade_ticks / speed)
+ : (((fade_ticks / speed) - frame->mode_tick + 1) /
+ (fade_ticks / speed)));
+ t = 5 * (1 - t);
+ if (frame->from_top_p) t = -t;
+ glTranslatef (0, t, 0);
+ }
+
+ if (body_p) /* Draw the image quad. */
+ {
+ if (! wire)
+ {
+ glColor3f (1, 1, 1);
+ glNormal3f (0, 0, 1);
+ glEnable (GL_TEXTURE_2D);
+ glBegin (GL_QUADS);
+ glNormal3f (0, 0, 1);
+ glTexCoord2f (texx1, texy2); glVertex3f (0, 0, 0);
+ glTexCoord2f (texx2, texy2); glVertex3f (1, 0, 0);
+ glTexCoord2f (texx2, texy1); glVertex3f (1, aspect, 0);
+ glTexCoord2f (texx1, texy1); glVertex3f (0, aspect, 0);
+ glEnd();
+ }
+
+ /* Draw a box around it.
+ */
+ glLineWidth (2.0);
+ glColor3f (0.5, 0.5, 0.5);
+ glDisable (GL_TEXTURE_2D);
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (1, 0, 0);
+ glVertex3f (1, aspect, 0);
+ glVertex3f (0, aspect, 0);
+ glEnd();
+
+ }
+ else /* Draw a title under the image. */
+ {
+ XCharStruct e;
+ int sw, sh;
+ GLfloat scale = 0.05;
+ char *title = frame->current.title ? frame->current.title : "(untitled)";
+ texture_string_metrics (ss->texfont, title, &e, 0, 0);
+ sw = e.width;
+ sh = e.ascent + e.descent;
+
+ glTranslatef (0, -scale, 0);
+
+ scale /= sh;
+ glScalef (scale, scale, scale);
+
+ glTranslatef (((1/scale) - sw) / 2, 0, 0);
+ glColor3f (1, 1, 1);
+
+ if (!wire)
+ {
+ glEnable (GL_TEXTURE_2D);
+ print_texture_string (ss->texfont, title);
+ }
+ else
+ {
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (sw, 0, 0);
+ glVertex3f (sw, sh, 0);
+ glVertex3f (0, sh, 0);
+ glEnd();
+ }
+ }
+
+ glPopMatrix();
+}
+
+
+ENTRYPOINT void
+draw_carousel (ModeInfo *mi)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+
+ if (!ss->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+
+ if (ss->awaiting_first_images_p)
+ if (!load_initial_images (mi))
+ return;
+
+ /* Only check the wall clock every 10 frames */
+ {
+ if (ss->now == 0 || ss->draw_tick++ > 10)
+ {
+ ss->now = time((time_t *) 0);
+ if (ss->last_time == 0) ss->last_time = ss->now;
+ ss->draw_tick = 0;
+ }
+ }
+
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+
+ /* Run the startup "un-shrink" animation.
+ */
+ switch (ss->mode)
+ {
+ case IN:
+ if (--ss->mode_tick <= 0)
+ {
+ ss->mode = NORMAL;
+ ss->last_time = time((time_t *) 0);
+ }
+ break;
+ case NORMAL:
+ break;
+ default:
+ abort();
+ }
+
+
+ /* Scale as per the startup "un-shrink" animation.
+ */
+ if (ss->mode != NORMAL)
+ {
+ GLfloat s = (ss->mode == OUT
+ ? ss->mode_tick / (fade_ticks / speed)
+ : (((fade_ticks / speed) - ss->mode_tick + 1) /
+ (fade_ticks / speed)));
+ glScalef (s, s, s);
+ }
+
+ /* Rotate and tilt as per the user, and the motion modeller.
+ */
+ {
+ double x, y, z;
+ gltrackball_rotate (ss->trackball);
+
+ /* Tilt the tube up or down by up to 30 degrees */
+ get_position (ss->rot, &x, &y, &z, !ss->button_down_p);
+ if (tilt_x_p)
+ glRotatef (15 - (x * 30), 1, 0, 0);
+ if (tilt_y_p)
+ glRotatef (7 - (y * 14), 0, 0, 1);
+
+ /* Only use the Y component of the rotator. */
+ get_rotation (ss->rot, &x, &y, &z, !ss->button_down_p);
+ glRotatef (y * 360, 0, 1, 0);
+ }
+
+ /* First draw each image, then draw the titles. GL insists that you
+ draw back-to-front in order to make alpha blending work properly,
+ so we need to draw all of the 100% opaque images before drawing
+ any of the not-100%-opaque titles.
+ */
+ for (i = 0; i < ss->nframes; i++)
+ draw_frame (mi, ss->frames[i], ss->now, True);
+ if (titles_p)
+ for (i = 0; i < ss->nframes; i++)
+ draw_frame (mi, ss->frames[i], ss->now, False);
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
+XSCREENSAVER_MODULE ("Carousel", carousel)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/carousel.man b/hacks/glx/carousel.man
new file mode 100644
index 0000000..d5c9e43
--- /dev/null
+++ b/hacks/glx/carousel.man
@@ -0,0 +1,109 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+carousel - displays multiple images rotating in a circular formation
+.SH SYNOPSIS
+.B carousel
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-count \fIint\fP]
+[\-zoom | \-no\-zoom]
+[\-tilt \fIXY\fP]
+[\-titles | \-no\-titles]
+[\-font \fIfont\fP]
+[\-speed \fIratio\fP]
+[\-duration \fIseconds\fP]
+[\-fps]
+[\-debug]
+[\-wireframe]
+.SH DESCRIPTION
+Loads several random images, and displays them flying in a circular
+formation. The circle changes speed and direction randomly, tilts on
+its axis, and the images move in and out.
+
+This program requires a good video card capable of supporting large
+textures.
+
+To specify the directory that images are loaded from, run
+.BR xscreensaver-demo (1)
+and click on the "Advanced" tab.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-count \fIint\fP
+How many images to display. Default 7.
+.TP 8
+.B \-zoom \fB| \-no\-zoom\fP
+Whether the images should move in and out (toward and away from the
+axis of rotation). Default true.
+.TP 8
+.B \-tilt \fIXY\fP \fB| \-no\-tilt\fP
+Whether the axis of rotation should tilt, and how. \fB-tilt X\fP
+means that it will tilt toward and away from the viewer.
+\fB-tilt Y\fP means that it will tilt to the left and right of the
+screen. \fB-tilt XY\fP (the default) means it will do both.
+.TP 8
+.B \-titles \fB| \-no\-titles\fP
+Whether to display the file names of the images beneath them. Default: yes.
+.TP 8
+.B \-font \fIfont-name\fP
+The font to use for titles. Note that the size of the font affects
+the clarity of the characters, not their size (it is auto-scaled.)
+.TP 8
+.B \-duration \fIseconds\fP
+Every \fIduration\fP seconds, one of the images will be replaced
+with a new one. Default 20 seconds.
+.TP 8
+.B \-speed \fIratio\fP
+Speed up or slow down the animation. 0.5 means half as fast as the
+default; 2.0 means twice as fast.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-debug
+Prints debugging info to stderr.
+.TP 8
+.B \-wireframe
+Another debug mode.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver-demo (1)
+.BR xscreensaver-getimage (1)
+.BR xscreensaver (1)
+.BR glslideshow (MANSUFFIX)
+.BR photopile (MANSUFFIX)
+.SH COPYRIGHT
+Copyright \(co 2005 by Jamie Zawinski.
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/chessgames.h b/hacks/glx/chessgames.h
new file mode 100644
index 0000000..28f5c57
--- /dev/null
+++ b/hacks/glx/chessgames.h
@@ -0,0 +1,343 @@
+/*
+ * endgame -- plays through a chess game ending. enjoy.
+ *
+ * Copyright (C) 2002 Blair Tennessy (tennessy@cs.ubc.ca)
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifndef __CHESSGAMES_H__
+#define __CHESSGAMES_H__
+
+/** structure for a chess game */
+typedef struct {
+
+ /** original board configuration */
+ int board[BOARDSIZE][BOARDSIZE];
+
+ /** total moves */
+ int movecount;
+
+ /**
+ moves in game. this is a slight hack: moves are encoded in
+ integer pairs (x,y). the first pair, _from_, determines the
+ piece to move. the second pair, _to_, determines where to move.
+
+ in case _to_ is held by another piece, that piece is taken.
+ (see drawTakePiece(), draw_chess())
+
+ in case the move promotes a pawn, we assume a queening.
+ (see drawMovingPiece())
+
+ what's lacking?
+ castling, en passant, under-promotions.
+ */
+ int moves[40][4];
+} ChessGame;
+
+#define GAMES 7
+static ChessGame games[GAMES] = {
+
+ /**
+ game 1:
+
+ E. N. Somov-Nasimovitsch
+ White to play and win.
+
+ "Zadachi I Etiudi"
+ 1928
+ */
+ {
+ {
+ { 0, 0, 0, 0, 0, BKING, 0, 0},
+ { BPAWN, 0, BPAWN, 0, BPAWN, 0, 0, 0},
+ { 0, 0, BPAWN, 0, BPAWN, 0, 0, KNIGHT},
+ { PAWN, 0, ROOK, 0, 0, 0, 0, 0},
+ { PAWN, 0, 0, 0, KING, PAWN, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { BPAWN, 0, 0, 0, 0, 0, 0, PAWN},
+ { BBISHOP,0, 0, 0, 0, 0, 0, 0},
+ },
+
+ 24,
+
+ {
+ {3, 2, 6, 2},
+ {7, 0, 6, 1},
+ {6, 2, 6, 6},
+ {0, 5, 0, 4},
+ {6, 6, 0, 6},
+ {0, 4, 1, 3},
+ {2, 7, 1, 5},
+ {2, 2, 3, 2},
+ {0, 6, 0, 3},
+ {1, 3, 2, 2},
+ {0, 3, 6, 3},
+ {3, 2, 4, 2}, /* pawn to bishop 5 */
+ {1, 5, 0, 3}, /* check */
+ {2, 2, 3, 2},
+ {0, 3, 2, 4}, /* takes pawn */
+ {3, 2, 2, 2},
+ {2, 4, 0, 3},
+ {2, 2, 3, 2},
+ {6, 3, 6, 1}, /* rook takes bishop */
+ {6, 0, 7, 0},
+ {6, 1, 3, 1},
+ {3, 2, 2, 3},
+ {3, 1, 3, 3},
+ {0, 0, 2, 3},
+ }
+ },
+
+ /**
+ game 2:
+
+ K. A. L. Kubbel
+ White to play and win.
+
+ "Chess in the USSR"
+ 1936
+ */
+ {
+ {
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, BPAWN},
+ { 0, 0, 0, 0, BPAWN, KING, 0, BKING},
+ { 0, 0, 0, 0, 0, ROOK, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0,BBISHOP, 0, 0, BROOK, 0, PAWN, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0,BISHOP, 0, 0},
+ },
+
+ 10,
+
+ {
+ {3, 5, 6, 5},
+ {5, 1, 7, 3},
+ {6, 5, 6, 7}, /* check */
+ {7, 3, 3, 7},
+ {7, 5, 6, 4},
+ {5, 4, 6, 4},
+ {5, 6, 4, 6}, /* ! */
+ {6, 4, 6, 7},
+ {4, 6, 3, 6},
+ {0, 0, 2, 7}
+ }
+ },
+
+ /**
+ game 3:
+
+ J. Hasek
+ White to play and win.
+
+ "Le Strategie"
+ 1929
+ */
+ {
+ {
+ { 0, 0, 0, KNIGHT, 0, 0, 0, KNIGHT},
+ { 0, KING, BPAWN, BPAWN, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, BKING, 0, 0, 0, 0, 0, 0},
+ { 0, PAWN, 0, 0, 0, BPAWN, 0, 0},
+ { PAWN, 0, PAWN, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ },
+
+ 11,
+
+ {
+ {0, 3, 2, 2},
+ {1, 3, 2, 2},
+ {0, 7, 2, 6},
+ {4, 5, 5, 5},
+ {2, 6, 3, 4},
+ {5, 5, 6, 5},
+ {3, 4, 5, 3}, /* ! */
+ {6, 5, 7, 5},
+ {5, 3, 6, 1},
+ {0, 0, 0, 0}, /* mull it over... */
+ {0, 0, 3, 1}
+ }
+ },
+
+ /**
+ game 4:
+
+ M.B. Newman
+ White to play and win.
+
+ "Chess Amateur"
+ 1913
+ */
+ {
+ {
+ { 0, 0, 0, 0, BQUEEN, 0, 0, 0},
+ {BKNIGHT, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, PAWN},
+ { BKING, 0, BISHOP, 0, KNIGHT, 0, 0, 0},
+ { PAWN, 0, 0, 0, KNIGHT, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { KING, 0, 0, 0, 0, 0, 0, 0},
+ },
+
+ 15,
+
+ {
+ {4, 2, 3, 1},
+ {0, 4, 3, 1}, /* queen wins bishop */
+ {4, 4, 5, 2},
+ {4, 0, 5, 0}, /* king takes pawn */
+ {5, 2, 3, 1}, /* knight takes queen, check */
+ {1, 0, 3, 1}, /* knight takes knight */
+ {3, 7, 2, 7}, /* pawn advances */
+ {3, 1, 2, 3},
+ {5, 4, 4, 2},
+ {2, 3, 4, 2},
+ {2, 7, 1, 7}, /* pawn advances */
+ {4, 2, 2, 3},
+ {1, 7, 0, 7},
+ {0, 0, 0, 0},
+ {0, 0, 5, 0}
+ }
+ },
+
+ /**
+ game 5:
+
+ V.A. Korolikov
+ White to play and win
+
+ First Prize - "Truda"
+ 1935
+ */
+ {
+ {
+ { 0, 0, BISHOP, 0, 0, 0, 0, 0},
+ { BPAWN, ROOK, 0, 0, 0, 0, 0, 0},
+ { 0, 0, BPAWN, PAWN, 0, BKING, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, KING, BBISHOP},
+ { 0, 0, 0, 0, BPAWN, 0, PAWN, 0},
+ { 0, 0, 0, 0, 0, BPAWN, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ },
+
+ 21,
+
+ {
+ {2, 3, 1, 3}, /* pawn to q7 */
+ {2, 5, 1, 4}, /* cover with king */
+ {1, 1, 0, 1},
+ {4, 7, 5, 6}, /* bishop takes pawn */
+ {0, 1, 0, 0}, /* r - r8 */
+ {6, 5, 7, 5}, /* queened */
+ {1, 3, 0, 3}, /* white pawn promoted */
+ {1, 4, 0, 3}, /* king takes queen */
+ {0, 2, 2, 0}, /* discovered check */
+ {5, 6, 0, 1}, /* pull back bishop */
+ {2, 0, 7, 5}, /* bishop takes queen */
+ {0, 3, 1, 2},
+ {7, 5, 2, 0}, /* save rook */
+ {5, 4, 6, 4},
+ {2, 0, 6, 4}, /* bishop takes pawn */
+ {1, 2, 1, 1}, /* king moves in */
+ {6, 4, 5, 5},
+ {1, 1, 0, 0},
+ {5, 5, 2, 2},
+ {0, 0, 0, 0},
+ {0, 0, 0, 0}
+ }
+ },
+
+ /**
+ game 6:
+
+ T.B. Gorgiev
+ White to play and win
+
+ First Prize - "64"
+ 1929
+ */
+ {
+ {
+ { 0, 0, 0, 0, 0, 0, KNIGHT, 0},
+ { BKNIGHT, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, BKING, BKNIGHT, 0, 0, 0},
+ { KING, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, KNIGHT, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, BISHOP, 0, 0, 0},
+ },
+
+ 13,
+
+ {
+ {3, 0, 2, 1}, /* king on move */
+ {1, 0, 0, 2}, /* check */
+ {2, 1, 1, 1},
+ {0, 2, 1, 4}, /* knight moves on */
+ {7, 4, 5, 6}, /* bishop puts king in check */
+ {2, 3, 1, 3}, /* king moves back */
+ {0, 6, 2, 5}, /* knight moves in, check */
+ {1, 3, 0, 3}, /* king moves back queen */
+ {5, 6, 1, 2}, /* bishop - b7 ch!! */
+ {2, 4, 1, 2}, /* black knight takes bishop */
+ {4, 6, 3, 4}, /* knight to k5 */
+ {0, 0, 0, 0}, /* mate */
+ {0, 0, 0, 0}
+ }
+ },
+
+ /**
+ game 7:
+
+ K. A. L. Kubbel
+ White to play and win
+
+ "Schachmatny Listok"
+ 1922
+ */
+ {
+ {
+ { 0, KNIGHT, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ { KING, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, BKING, 0, 0, 0, 0},
+ { 0, 0, 0, BPAWN, 0, 0, 0, BISHOP},
+ { BPAWN, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, PAWN, PAWN, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0, 0, 0},
+ },
+
+ 12,
+
+ {
+ {0, 1, 2, 2}, /* kt-b6 */
+ {3, 3, 2, 2}, /* k x kt */
+ {4, 7, 2, 5}, /* b-b6 */
+ {2, 2, 3, 3}, /* king back to original position */
+ {6, 3, 5, 3}, /* p-q3! */
+ {5, 0, 6, 0}, /* p-r7 */
+ {6, 2, 4, 2}, /* p-b4ch */
+ {3, 3, 3, 2}, /* king moves, black cannot capture in passing */
+ {2, 0, 1, 1}, /* k-kt7! */
+ {6, 0, 7, 0}, /* promo */
+ {2, 5, 1, 4}, /* mate */
+ {0, 0, 3, 2},
+ }
+ },
+};
+
+#endif /* __CHESSGAMES_H__ */
diff --git a/hacks/glx/chessmodels.c b/hacks/glx/chessmodels.c
new file mode 100644
index 0000000..7dd7eca
--- /dev/null
+++ b/hacks/glx/chessmodels.c
@@ -0,0 +1,1738 @@
+/*
+ * models for the xss chess screensavers
+ * hacked from:
+ *
+ * glChess - A 3D chess interface
+ *
+ * Copyright (C) 2006 John-Paul Gignac
+ *
+ * Copyright (C) 2002 Robert Ancell
+ * Michael Duelli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* chessmodels.c: Contains the code for piece model creation */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include
+#include
+
+#ifndef HAVE_JWXYZ
+# include
+# include
+#endif
+
+#ifdef HAVE_ANDROID
+#include
+#define Bool int
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+#include "chessmodels.h"
+
+/* End of Data */
+#define ENDOFDATA 65535
+
+/* Section headers */
+#define SPIN 65534
+#define VERTICES 65533
+#define QUADS 65532
+#define TRIANGLES 65531
+#define POLARQUADSTRIP 65530
+#define QUADSTRIP 65529
+
+/* Special spin-related commands */
+#define SEAM 65528
+#define PATTERN 65527
+#define STEPUP 65526
+#define STEPDOWN 65525
+#define SETBACKREF 65524
+#define BACKREF 65523
+
+static unsigned short classic_pawn_data[] = {
+ SPIN,16,
+ 350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880,
+ SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340,
+ ENDOFDATA
+};
+
+static unsigned short classic_rook_data[] = {
+ SPIN,16,
+ 380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300,
+ ENDOFDATA
+};
+
+static unsigned short classic_knight_data[] = {
+ SPIN,16,
+ 410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580,
+
+ VERTICES,
+ 260,580,260, -260,580,260, -260,580,-80, 260,580,-80, 80,1620,400,
+ 100,1680,340, -100,1680,340, -80,1620,400, 100,1680,340, 100,1680,300,
+ -100,1680,300, -100,1680,340, 100,1680,300, 50,1680,160, -50,1680,160,
+ -100,1680,300, 50,1680,160, 100,1680,20, -100,1680,20, -50,1680,160,
+ 100,1680,20, 100,1680,-20, -100,1680,-20, -100,1680,20, 100,1680,-20,
+ 40,1680,-110, -40,1680,-110, -100,1680,-20, 40,1680,-110,
+ 100,1680,-200, -100,1680,-200, -40,1680,-110, 100,1680,-200,
+ 100,1680,-440, -100,1680,-440, -100,1680,-200, -100,1680,-440,
+ 100,1680,-440, 100,1500,-440, -100,1500,-440, -100,1500,-440,
+ 100,1500,-440, 55,1480,-280, -55,1480,-280, -100,1680,300, -50,1680,160,
+ -100,1400,130, -120,1380,240, -50,1680,160, -80,1680,20, -120,1380,20,
+ -100,1400,130, -83,1660,20, -80,1680,20, -100,1680,-20, -100,1660,-38,
+ -120,1380,20, -88,1620,20, -100,1620,-74, -120,1360,-20, -120,1360,-20,
+ -100,1620,-74, -100,1580,-110, -60,1400,-140, -100,1680,-200,
+ -55,1480,-280, -60,1400,-140, -100,1580,-110, -100,1680,-200,
+ -100,1680,-440, -100,1500,-440, -55,1480,-280, 100,1680,300,
+ 120,1380,240, 100,1400,130, 50,1680,160, 50,1680,160, 100,1400,130,
+ 120,1380,20, 80,1680,20, 83,1660,20, 100,1660,-38, 100,1680,-20,
+ 80,1680,20, 120,1380,20, 120,1360,-20, 100,1620,-74, 88,1620,20,
+ 120,1360,-20, 60,1400,-140, 100,1580,-110, 100,1620,-74, 100,1680,-200,
+ 100,1580,-110, 60,1400,-140, 55,1480,-280, 100,1680,-200, 55,1480,-280,
+ 100,1500,-440, 100,1680,-440, 88,1620,20, 100,1620,-74, 80,1640,-56,
+ 61,1640,20, 61,1640,20, 80,1640,-56, 100,1660,-38, 83,1660,20,
+ -88,1620,20, -61,1640,20, -80,1640,-56, -100,1620,-74, -61,1640,20,
+ -83,1660,20, -100,1660,-38, -80,1640,-56, 35,1780,-80, 35,1780,-440,
+ -35,1780,-440, -35,1780,-80, 35,1780,-80, 35,1680,-80, 35,1680,-440,
+ 35,1780,-440, -35,1780,-80, -35,1780,-440, -35,1680,-440, -35,1680,-80,
+ 35,1780,-80, -35,1780,-80, -35,1680,-80, 35,1680,-80, 35,1780,-440,
+ 35,1680,-440, -35,1680,-440, -35,1780,-440, -100,1400,130, -120,1380,20,
+ 120,1380,20, 100,1400,130, -100,1400,130, 100,1400,130, 120,1380,240,
+ -120,1380,240, -260,580,-80, -55,1480,-280, 0,1500,-360, 0,780,-400,
+ 260,580,-80, 0,780,-400, 0,1500,-360, 55,1480,-280, -50,1380,40,
+ -200,880,400, 200,880,400, 50,1380,40, -200,880,400, -260,580,260,
+ 260,580,260, 200,880,400, -50,1380,40, -140,1220,-40, -260,580,260,
+ -200,880,400, -140,1220,-40, -114,1220,-222, -260,580,-80, -260,580,260,
+ -55,1480,-280, -114,1220,-222, -140,1220,-40, -60,1400,-140,
+ 50,1380,40, 200,880,400, 260,580,260, 140,1220,-40, 140,1220,-40,
+ 260,580,260, 260,580,-80, 114,1220,-222, 55,1480,-280, 60,1400,-140,
+ 140,1220,-40, 114,1220,-222, 260,580,-80, 144,580,-260, 0,780,-400,
+ 144,580,-260, -144,580,-260, 0,780,-400, -260,580,-80, 0,780,-400,
+ -144,580,-260, 0,1400,400, 80,1620,400, -80,1620,400, 0,1400,400,
+ -80,1620,400, -120,1380,240, -120,1380,240, -80,1620,400, -100,1680,340,
+ -120,1380,240, -100,1680,340, -100,1680,300, 0,1400,400, 120,1380,240,
+ 80,1620,400, 120,1380,240, 100,1680,340, 80,1620,400, 120,1380,240,
+ 100,1680,300, 100,1680,340, 0,1400,400, -120,1380,240, 120,1380,240,
+ -60,1400,-140, -140,1220,-40, -45,1380,-20, -45,1380,-20, -140,1220,-40,
+ -50,1380,40, 60,1400,-140, 45,1380,-20, 140,1220,-40, 45,1380,-20,
+ 50,1380,40, 140,1220,-40, 60,1400,-140, 120,1360,-20, 45,1380,-20,
+ 50,1380,40, 45,1380,-20, 120,1360,-20, 50,1380,40, 120,1360,-20,
+ 120,1380,20, -60,1400,-140, -45,1380,-20, -120,1360,-20, -50,1380,40,
+ -120,1360,-20, -45,1380,-20, -50,1380,40, -120,1380,20, -120,1360,-20,
+ 88,1620,20, 61,1640,20, 83,1660,20, 100,1620,-74, 100,1660,-38,
+ 80,1640,-56, -88,1620,20, -83,1660,20, -61,1640,20, -100,1620,-74,
+ -80,1640,-56, -100,1660,-38, -40,1680,-110, -100,1680,-200,
+ -100,1580,-110, -100,1680,-20, -40,1680,-110, -100,1580,-110,
+ 40,1680,-110, 100,1580,-110, 100,1680,-200, 100,1680,-20, 100,1580,-110,
+ 40,1680,-110,
+
+ QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19,
+ 20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39,
+ 40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59,
+ 60,61,62,63, 64,65,66,67, 68,69,70,71, 72,73,74,75, 76,77,78,79,
+ 80,81,82,83, 84,85,86,87, 88,89,90,91, 92,93,94,95, 96,97,98,99,
+ 100,101,102,103, 104,105,106,107, 108,109,110,111, 112,113,114,115,
+ 116,117,118,119, 120,121,122,123, 124,125,126,127, 128,129,130,131,
+ 132,133,134,135, 136,137,138,139, 140,141,142,143, 144,145,146,147,
+ 148,149,150,151, 152,153,154,155, 156,157,158,159, 160,161,162,163,
+ 164,165,166,167, 168,169,170,171, 172,173,174,175, 176,177,178,179,
+ 180,181,182,183,
+
+ TRIANGLES, 184,185,186, 187,188,189, 190,191,192, 193,194,195,
+ 196,197,198, 199,200,201, 202,203,204, 205,206,207, 208,209,210,
+ 211,212,213, 214,215,216, 217,218,219, 220,221,222, 223,224,225,
+ 226,227,228, 229,230,231, 232,233,234, 235,236,237, 238,239,240,
+ 241,242,243, 244,245,246, 247,248,249, 250,251,252, 253,254,255,
+ 256,257,258, 259,260,261, 262,263,264, 265,266,267, 268,269,270,
+
+ ENDOFDATA
+};
+
+static unsigned short classic_bishop_data[] = {
+ SPIN,16,
+ 400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940,
+ SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480,
+ SEAM,100,1600,SEAM,80,1700,SEAM,120,1770,SEAM,80,1840,0,1840,
+ ENDOFDATA
+};
+
+static unsigned short classic_queen_data[] = {
+ SPIN,16,
+ 480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180,
+ SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920,
+ SEAM,240,2000,SEAM,170,2000,SEAM,95,2080,SEAM,70,2080,SEAM,90,2140,
+ SEAM,70,2200,0,2200,
+ ENDOFDATA
+};
+
+static unsigned short classic_king_data[] = {
+ SPIN,16,
+ 500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260,
+ SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970,
+ SEAM,160,2010,0,2010,
+
+ VERTICES,
+ -30,2010,35, 30,2010,35, 30,2310,35, -30,2310,35, -90,2110,35,
+ -30,2110,35, -30,2210,35, -90,2210,35, 90,2110,35, 90,2210,35,
+ 30,2210,35, 30,2110,35, 30,2010,-35, -30,2010,-35, -30,2310,-35,
+ 30,2310,-35, -30,2110,-35, -90,2110,-35, -90,2210,-35, -30,2210,-35,
+ 30,2110,-35, 30,2210,-35, 90,2210,-35, 90,2110,-35, -90,2110,35,
+ -90,2210,35, -90,2210,-35, -90,2110,-35, -30,2010,35, -30,2110,35,
+ -30,2110,-35, -30,2010,-35, -30,2210,30, -30,2310,30, -30,2310,-30,
+ -30,2210,-30, 90,2110,-35, 90,2210,-35, 90,2210,35, 90,2110,35,
+ 30,2010,-35, 30,2110,-35, 30,2110,35, 30,2010,35, 30,2210,-35,
+ 30,2310,-35, 30,2310,35, 30,2210,35, -90,2210,-35, -90,2210,35,
+ -30,2210,35, -30,2210,-35, 30,2210,-35, 30,2210,35, 90,2210,35,
+ 90,2210,-35, -30,2310,-35, -30,2310,35, 30,2310,35, 30,2310,-35,
+
+ QUADS, 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19,
+ 20,21,22,23, 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39,
+ 40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59,
+
+ ENDOFDATA
+};
+
+static unsigned short knight_data[] = {
+ VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611,
+ 6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611,
+ 2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517,
+ -2705,8863,7173, -3955,8863,6611, -5084,8863,5847, -6059,8863,4907,
+ -6850,8863,3817, -7433,8863,2611, -7790,8863,1326, -7910,8863,0,
+ -7790,8863,-1326, -7433,8863,-2611, -6850,8863,-3817,
+ -6059,8863,-4907, -5066,8863,-5896, -3955,8863,-6611,
+ -2705,8863,-7173, -1373,8863,-7517, 0,8863,-7633, 1373,8863,-7517,
+ 2705,8863,-7173, 3955,8863,-6611, 5066,8863,-5896, 6059,8863,-4907,
+ 6850,8863,-3817, 7433,8863,-2611, 7790,8863,-1326, -1183,11744,7939,
+ -1183,12003,7939, -1183,14019,6547, -1183,16307,5288,
+ -1183,16555,5281, -1183,20128,2191, -1134,20304,2131,
+ -1183,20516,2156, -1417,21874,1842, -1417,23109,2185,
+ -1417,23961,3121, -1417,24001,4252, 0,23917,5637, -1418,23893,5418,
+ -1151,23389,6664, -1151,23501,6906, -1151,23806,6987,
+ -1151,24102,6987, -1151,24209,7189, -1151,24371,7513,
+ -1151,24605,7715, -1151,24939,7674, -1313,25568,7149,
+ -1313,25695,7149, -1598,26707,7610, 0,26837,7841, 0,27354,8076,
+ -1598,27262,7839, -1598,27842,7723, 0,27919,7998, 0,28449,7606,
+ -1598,28309,7303, -1302,28414,6723, 0,28544,6980, 0,28540,6197,
+ -1187,28523,5990, -1304,28447,4204, -1158,28789,1627,
+ -561,28931,-1220, -357,29608,-1244, -357,30527,-1441,
+ -357,31249,-1837, -357,31511,-2627, -357,31511,-3484,
+ -357,31118,-4143, -357,30264,-4538, -436,29406,-5256, 0,29409,-5243,
+ -2207,29018,-6763, -914,28658,-6964, 0,26292,-7237, -1305,26324,-7143,
+ -806,23401,-6784, -812,20723,-6228, -796,16757,-6210,
+ -1559,24934,7435, -1566,24633,7460, -1531,24429,7334,
+ -1475,24293,7131, -1440,24203,7004, -1372,23935,7015,
+ -1364,23606,6868, -1389,23515,6705, -1687,28010,6952,
+ -1687,27926,7343, -1687,27629,7491, -1687,27324,7552,
+ -1687,27032,7432, -1687,26791,7148, -1642,27135,7165,
+ -1642,27254,7304, -1642,27397,7364, -1642,27546,7334,
+ -1642,27693,7261, -1642,27737,7088, -1611,10591,8159,
+ -888,9327,-8560, -4491,13292,1032, -3840,15084,786, -3412,17397,397,
+ -2937,20005,-35, -5108,11669,1240, -6344,10251,1395, -6345,10246,1248,
+ -5109,11664,1092, -2964,20022,-132, -3413,17393,250, -3841,15079,638,
+ -4491,13288,885, -3743,13207,-535, -3085,15092,-710, -2727,17642,-878,
+ -2569,20636,-797, -4348,11575,-324, -5584,10108,-169,
+ -5403,10079,-1732, -4167,11644,-1888, -2465,20842,-2651,
+ -2522,18130,-2392, -2905,15407,-2077, -3562,13227,-1951,
+ -3901,13568,-3294, -3243,15993,-3519, -2861,18863,-3735,
+ -2776,22447,-4309, -4486,11792,-3132, -5783,9930,-2931,
+ -5783,9930,-3054, -4486,11792,-3255, -2776,22438,-4430,
+ -2861,18863,-3858, -3243,15993,-3641, -3901,13568,-3417,
+ -6199,9466,4558, -5766,10642,5726, -5228,11829,6090, -4801,12891,6048,
+ -4155,14560,5246, -3546,16847,3719, -3334,17643,2937,
+ -2860,20062,1230, -4822,12054,7102, -5325,10909,7208,
+ -5732,9938,6026, -4026,14701,5522, -2852,20170,1447, -3319,17801,3175,
+ -3538,16955,3935, -4090,13256,1679, -2874,20073,676, -3706,15083,1464,
+ -3301,17348,1117, -5931,10206,1996, -4695,11624,1840,
+ -4445,11658,2844, -5681,10240,3000, -3074,17398,2202,
+ -3456,15117,2468, -3840,13290,2683, -4642,13358,4019,
+ -4257,15194,3908, -6017,10188,3746, -5237,11714,4039,
+ -5621,11218,5077, -5026,12862,5058, -5134,10861,-3154,
+ -4193,12680,-3336, -2832,20609,-4118, -3052,17428,-3750,
+ -3572,14780,-3529, -3579,14774,-3623, -3059,17422,-3843,
+ -2839,20596,-4211, -4200,12674,-3429, -5141,10855,-3248,
+ -3908,13562,-3510, -3250,15987,-3735, -2868,18857,-3952,
+ -4492,11786,-3348, -5789,9924,-3148, -4817,11321,-3298,
+ -5465,10389,-3198, -4054,13118,-3470, -4346,12230,-3389,
+ -2853,19681,-4056, -2825,21511,-4367, -3155,16705,-3789,
+ -2963,18140,-3897, -3744,14168,-3567, -3415,15381,-3679,
+ -845,13482,-6604, -945,10997,-7893, -981,11110,-7735,
+ -859,13469,-6526, -899,9307,-8439, -813,16486,-6146, -832,20681,-6100,
+ -826,23358,-6656, -882,10149,-8148, -913,12323,-7139,
+ -822,14910,-6353, -817,18235,-6210, -827,21937,-6382,
+ -846,21937,-6341, -841,14912,-6313, -931,12326,-7098,
+ -901,10152,-8107, -844,23359,-6615, -851,20681,-6059,
+ -831,16487,-6105, -919,9307,-8399, -869,13482,-6492, -999,11113,-7694,
+ -860,9726,-8255, -942,10578,-7958, -962,11715,-7413, -900,12896,-6796,
+ -863,14065,-6404, -818,15760,-6221, -828,17367,-6171,
+ -854,19800,-5994, -848,21309,-6200, -843,22566,-6482,
+ -3407,15409,-3785, -3736,14196,-3673, -2911,18365,-4048,
+ -3147,16733,-3895, -2726,21608,-4455, -2808,19905,-4191,
+ -4338,12259,-3495, -4046,13146,-3576, -5457,10418,-3304,
+ -4809,11349,-3404, -4484,11815,-3454, -2715,22288,-4534,
+ -2832,19035,-4066, -3242,16015,-3841, -3900,13590,-3616,
+ -5133,10883,-3354, -4171,12742,-3524, -2803,20773,-4339,
+ -3051,17450,-3949, -3571,14803,-3729, -4979,11072,-3368,
+ -5619,10185,-3279, -4119,12924,-3556, -4411,12037,-3475,
+ -2801,20363,-4269, -2721,21826,-4489, -3099,17092,-3922,
+ -2887,18618,-4038, -3653,14499,-3701, -3325,15712,-3813,
+ -3489,15106,-3757, -3818,13893,-3645, -3011,17758,-3971,
+ -3194,16374,-3868, -2755,21085,-4385, -2815,19494,-4139,
+ -4265,12481,-3515, -3973,13368,-3596, -5304,10595,-3318,
+ -4664,11477,-3407, -5441,10207,-3361, -5350,10338,-3375,
+ -5139,10672,-3428, -5058,10742,-3431, -4831,11101,-3457,
+ -4742,11228,-3470, -4516,11559,-3504, -4423,11693,-3518,
+ -4277,12079,-3558, -4232,12180,-3571, -4138,12522,-3597,
+ -4094,12603,-3609, -3979,12935,-3675, -3943,13043,-3671,
+ -3852,13383,-3699, -3813,13496,-3705, -3692,13947,-3767,
+ -3653,14073,-3790, -3506,14587,-3772, -3467,14685,-3777,
+ -3349,15192,-3888, -3308,15317,-3887, -3162,15800,-3957,
+ -3119,15954,-3961, -3009,16528,-3946, -3002,16637,-3937,
+ -2914,17260,-4014, -2909,17347,-4006, -2834,17893,-4049,
+ -2813,18060,-4060, -2760,18849,-4232, -2746,18968,-4242,
+ -850,22569,-6438, -855,21313,-6156, -861,19804,-5949,
+ -834,17371,-6127, -824,15765,-6176, -869,14070,-6360,
+ -906,12901,-6751, -968,11720,-7368, -948,10645,-7895, -865,9731,-8211,
+ -1006,11164,-7630, -875,13487,-6447, -926,9310,-8354,
+ -837,16490,-6061, -857,20684,-6015, -867,23379,-6515,
+ -907,10157,-8062, -937,12331,-7053, -847,14917,-6268,
+ -842,18236,-6111, -852,21941,-6297, -885,9891,-8156, -985,10905,-7724,
+ -947,11969,-7255, -885,13125,-6649, -858,14493,-6314,
+ -839,16049,-6111, -836,17735,-6083, -859,20244,-5982,
+ -891,21559,-6157, -848,22883,-6508, -851,22255,-6367,
+ -856,20999,-6085, -867,19042,-6000, -836,16930,-6094,
+ -835,15341,-6222, -880,13646,-6405, -916,12540,-6953,
+ -981,11337,-7564, -927,10370,-7988, -932,9518,-8285, -931,9583,-8174,
+ -863,9671,-8145, -892,9982,-8037, -903,10075,-7996, -952,10454,-7865,
+ -961,10550,-7832, -1008,10963,-7617, -1018,11105,-7567,
+ -996,11458,-7405, -992,11582,-7342, -972,12080,-7057,
+ -968,12210,-6984, -935,12620,-6792, -931,12759,-6714,
+ -914,13199,-6441, -910,13346,-6359, -915,13767,-6194,
+ -910,13941,-6175, -890,14633,-6107, -886,14783,-6091,
+ -864,15476,-6035, -859,15645,-6017, -870,16062,-5957,
+ -873,16231,-5936, -853,17048,-5965, -861,17185,-5974,
+ -879,17812,-5997, -885,17961,-5997, -851,18486,-6138,
+ -865,18526,-5933, -872,18761,-5875, -870,19337,-5971,
+ -864,19470,-5784, -937,19590,-5786, -833,19023,-6126,
+ -851,20344,-5894, -851,20576,-5912, -855,21086,-5973,
+ -854,21224,-6003, -871,21651,-6070, -852,21853,-6116,
+ -850,22332,-6224, -849,22490,-6259, -831,22924,-6338,
+ -834,23240,-6364, -2743,19661,-4287, -2740,19863,-4312,
+ -2723,20501,-4469, -2705,20711,-4503, -2661,21262,-4565,
+ -2658,21427,-4593, -2687,22088,-4631, -2695,22209,-4643,
+ -2774,23170,-4392, -2633,23103,-4527, -2681,22439,-4516,
+ -2656,22665,-4573, -2552,22727,-4653, -2534,23015,-4628,
+ -2607,23397,-4556, -2759,23681,-4398, -2740,24136,-4370,
+ -2610,24100,-4580, -2412,24481,-5089, -2671,24389,-4569,
+ -2397,24935,-5652, -2562,25022,-5528, -939,23708,-6566,
+ -1009,24359,-6776, -1095,24912,-6886, -1049,24117,-6493,
+ -990,23894,-6415, -2290,23837,-4814, -2312,23612,-4723,
+ -2183,24804,-5574, -2191,24632,-5391, -1156,24771,-6650,
+ -1154,24624,-6586, -1104,24526,-6656, -1281,9161,-8432,
+ -2524,9161,-8046, -3691,9161,-7572, -4745,9161,-6945,
+ -5662,9127,-6096, -3697,9192,-7581, -2531,9192,-8056,
+ -4753,9183,-6951, -5664,9161,-6101, -5664,9185,-6101,
+ -4753,9207,-6951, -2531,9216,-8055, -3697,9216,-7581,
+ -3684,9232,-7560, -2518,9232,-8034, -4740,9223,-6930,
+ -5651,9200,-6080, -2828,20259,1366, -2798,20256,1187, -2820,20237,692,
+ -2843,20292,-25, -2874,20473,735, -2975,20508,90, -2474,20772,-759,
+ -2660,20879,-691, -2471,21553,-1445, -2498,22175,-1940,
+ -2471,24346,-2830, -2556,22373,-1903, -2528,21595,-1351,
+ -2493,24314,-2936, -2576,22239,-2123, -2548,21461,-1571,
+ -2823,20635,1307, -2741,20503,1328, -1490,23972,5392,
+ -1489,24080,4226, -1489,24040,3095, -1489,23188,2159,
+ -1489,21953,1816, -2479,22156,182, -1515,23830,2117, -1605,24415,3131,
+ -1599,24460,4263, -1580,24357,5431, -1448,23885,6743,
+ -1252,24770,5442, -1271,24873,4274, -1277,24828,3142,
+ -1389,24618,2016, -1479,24733,1993, -1301,25010,3165,
+ -1295,25055,4297, -1391,24890,5460, -1512,25216,5507,
+ -1602,25353,4317, -1608,25308,3186, -1979,23458,-29, -1320,25312,1928,
+ -1495,25055,546, -2438,25790,-488, -1605,25585,5599, -1583,26793,6150,
+ -1850,26272,4298, -1578,27435,7117, -1658,27625,6884,
+ -1671,27398,6846, -1678,27176,6937, -1715,27784,6626,
+ -1744,27323,6551, -1753,26904,6776, -1884,28809,-1688,
+ -1555,28655,1620, -1658,28252,4204, -1581,28263,5997,
+ -1567,28312,6790, -1935,27827,4220, -1818,28249,1603,
+ -1570,27742,6195, -1532,27288,6120, -2038,27074,4245, -1418,28416,228,
+ -413,30264,-4539, -424,31094,-4152, -418,31478,-3497,
+ -410,31453,-2653, -410,31190,-1863, -410,30468,-1467,
+ -410,29550,-1270, -411,31041,-1902, -448,31253,-2696,
+ -449,31323,-3466, -425,31182,-3496, -411,31060,-2738,
+ -387,30899,-1932, -316,30806,-1957, -335,30952,-2766,
+ -353,31089,-3521, -322,31007,-3540, -303,30871,-2786,
+ -284,30725,-1976, -304,30630,-1993, -323,30776,-2802,
+ -342,30912,-3557, -396,30843,-3565, -378,30707,-2811,
+ -358,30561,-2001, -414,30477,-2013, -433,30623,-2822,
+ -452,30759,-3576, -474,30560,-3616, -456,30424,-2861,
+ -436,30278,-2052, -349,30194,-2077, -368,30340,-2886,
+ -386,30477,-3641, -309,30389,-3665, -291,30253,-2911,
+ -271,30107,-2102, -267,29996,-2124, -286,30142,-2933,
+ -305,30278,-3688, -376,30179,-3700, -357,30043,-2945,
+ -338,29897,-2136, -420,29789,-2150, -439,29935,-2959,
+ -458,30071,-3713, -500,29883,-3751, -463,29601,-2187,
+ -470,30974,-4049, -462,30153,-4391, -466,30563,-4220,
+ -410,30009,-1368, -725,29372,-3225, -677,29335,-5130,
+ -908,29205,-3300, -632,29533,-4803, -2587,28768,-3408,
+ -2730,28611,-3456, -2404,28568,-6916, -2413,28849,-6612,
+ -1904,26715,1801, -1394,25919,831, -2224,27270,-3994,
+ -2730,28438,-3011, -2587,28570,-2864, -2826,28152,-3163,
+ -2476,28668,-6523, -2476,28433,-6776, -2787,28338,-3507,
+ -2216,27658,-3972, -2207,27950,-5907, -2311,28216,-6128,
+ -2320,27876,-3971, -2311,28118,-6301, -2311,27845,-6252,
+ -2320,27703,-3749, -2320,27084,-3798, -2320,26986,-4070,
+ -2698,26705,-4014, -2557,26974,-3547, -2557,27739,-3485,
+ -2572,27738,-6362, -2436,28204,-6533, -2436,28421,-6303,
+ -2556,28092,-3822, -2431,28142,-6975, -2544,27863,-6726,
+ -2266,28229,-1686, -1939,28156,-1065, -2569,27943,-2270,
+ -2381,27545,-1682, -2799,27594,-3104, -2750,27866,-2738,
+ -2539,27578,-6309, -2720,26853,-3133, -2788,26461,-3776,
+ -1061,27543,-7078, -1780,27941,135, -1859,27747,-527, -1756,27784,691,
+ -1855,27001,736, -1950,26711,19, -1964,27006,-630, -2342,26955,-1898,
+ -2595,25515,-3113, -2147,27855,132, -2126,27722,601, -2213,27691,-428,
+ -2210,27061,639, -2290,26816,34, -2302,27065,-515, -2347,27680,100,
+ -2335,27602,376, -2386,27584,-229, -2385,27213,398, -2432,27069,42,
+ -2439,27215,-281, -2481,27452,103, -1786,24263,399, -2278,24851,-562,
+ -2372,25143,-1163, 7383,9172,0, 7270,9172,-1487, 6937,9172,-2929,
+ 6393,9172,-4281, 1282,9172,-8433, 0,9172,-8563, 1301,9439,8159,
+ 2371,9313,7844, 3857,9286,7355, 4477,9172,6559, 5704,9174,5179,
+ 6393,9172,4281, 6937,9172,2929, 7270,9172,1487, -7270,9172,-1487,
+ -6937,9172,-2929, -6393,9172,-4281, -1282,9172,-8433, 0,9339,8274,
+ -1301,9439,8159, -2371,9313,7844, -3857,9286,7355, -4477,9172,6559,
+ -5704,9174,5179, -6393,9172,4281, -6937,9172,2929, -7270,9172,1487,
+ -796,9467,8260, 0,9503,8356, 0,9667,8438, -796,9666,8325,
+ -807,10584,8327, -7383,9172,0, 796,9467,8260, 796,9666,8325,
+ 807,10584,8327, 0,10584,8457, 0,11744,8130, 1183,11744,7939,
+ 1183,12003,7939, 0,12003,8130, 0,14019,6737, 1183,14019,6547,
+ 1183,16307,5288, 0,16307,5479, 0,16555,5472, 1183,16555,5281,
+ 1183,20128,2191, 0,20128,2382, 0,20304,2322, 1134,20304,2131,
+ 1183,20516,2156, 0,20516,2346, 0,21898,2060, 1417,21874,1842,
+ 1417,23109,2185, 0,23133,2404, 0,23985,3339, 1417,23961,3121,
+ 1417,24001,4252, 0,24025,4470, 1418,23893,5418, 1151,23389,6664,
+ 0,23394,6882, 0,23506,7125, 1151,23501,6906, 1151,23806,6987,
+ 0,23811,7205, 0,24107,7205, 1151,24102,6987, 1151,24209,7189,
+ 0,24213,7407, 0,24376,7731, 1151,24371,7513, 1151,24605,7715,
+ 0,24610,7933, 0,24944,7892, 1151,24939,7674, 1313,25568,7149,
+ 0,25562,7367, 0,25689,7367, 1313,25695,7149, 1598,26707,7610,
+ 1598,27262,7839, 1598,27842,7723, 1598,28309,7303, 1302,28414,6723,
+ 1187,28523,5990, 1304,28447,4204, 0,28469,4435, 0,28654,1893,
+ 1158,28789,1627, 561,28931,-1220, 0,29310,-864, 0,29574,-1062,
+ 357,29608,-1244, 357,30527,-1441, 0,30496,-1259, 0,31221,-1655,
+ 357,31249,-1837, 357,31511,-2627, 0,31485,-2445, 0,31485,-3302,
+ 357,31511,-3484, 357,31118,-4143, 0,31089,-3961, 0,30233,-4356,
+ 357,30264,-4538, 436,29406,-5256, 0,29018,-6407, 2207,29018,-6763,
+ 914,28658,-6964, 0,28472,-7040, 1305,26324,-7143, 806,23401,-6784,
+ 0,23246,-6890, 0,20735,-6319, 812,20723,-6228, 796,16757,-6210,
+ 0,17171,-6133, 1559,24934,7435, 1566,24633,7460, 1531,24429,7334,
+ 1475,24293,7131, 1440,24203,7004, 1372,23935,7015, 1364,23606,6868,
+ 1389,23515,6705, 1687,28010,6952, 1687,27926,7343, 1687,27629,7491,
+ 1687,27324,7552, 1687,27032,7432, 1687,26791,7148, 1642,27135,7165,
+ 1642,27254,7304, 1642,27397,7364, 1642,27546,7334, 1642,27693,7261,
+ 1642,27737,7088, 1611,10591,8159, 888,9327,-8560, 4491,13292,1032,
+ 3840,15084,786, 3412,17397,397, 2937,20005,-35, 5108,11669,1240,
+ 6344,10251,1395, 6345,10246,1248, 5109,11664,1092, 2964,20022,-132,
+ 3413,17393,250, 3841,15079,638, 4491,13288,885, 3743,13207,-535,
+ 3085,15092,-710, 2727,17642,-878, 2569,20636,-797, 4348,11575,-324,
+ 5584,10108,-169, 5403,10079,-1732, 4167,11644,-1888,
+ 2465,20842,-2651, 2522,18130,-2392, 2905,15407,-2077,
+ 3562,13227,-1951, 3901,13568,-3294, 3243,15993,-3519,
+ 2861,18863,-3735, 2776,22447,-4309, 4486,11792,-3132, 5783,9930,-2931,
+ 5783,9930,-3054, 4486,11792,-3255, 2776,22438,-4430, 2861,18863,-3858,
+ 3243,15993,-3641, 3901,13568,-3417, 6199,9466,4558, 5766,10642,5726,
+ 5228,11829,6090, 4801,12891,6048, 4155,14560,5246, 3546,16847,3719,
+ 3334,17643,2937, 2860,20062,1230, 4822,12054,7102, 5325,10909,7208,
+ 5732,9938,6026, 4026,14701,5522, 2852,20170,1447, 3319,17801,3175,
+ 3538,16955,3935, 4090,13256,1679, 2874,20073,676, 3706,15083,1464,
+ 3301,17348,1117, 5931,10206,1996, 4695,11624,1840, 4445,11658,2844,
+ 5681,10240,3000, 3074,17398,2202, 3456,15117,2468, 3840,13290,2683,
+ 4642,13358,4019, 4257,15194,3908, 6017,10188,3746, 5237,11714,4039,
+ 5621,11218,5077, 5026,12862,5058, 5134,10861,-3154, 4193,12680,-3336,
+ 2832,20609,-4118, 3052,17428,-3750, 3572,14780,-3529,
+ 3579,14774,-3623, 3059,17422,-3843, 2839,20596,-4211,
+ 4200,12674,-3429, 5141,10855,-3248, 3908,13562,-3510,
+ 3250,15987,-3735, 2868,18857,-3952, 4492,11786,-3348, 5789,9924,-3148,
+ 4817,11321,-3298, 5465,10389,-3198, 4054,13118,-3470,
+ 4346,12230,-3389, 2853,19681,-4056, 2825,21511,-4367,
+ 3155,16705,-3789, 2963,18140,-3897, 3744,14168,-3567,
+ 3415,15381,-3679, 0,14037,-6616, 845,13482,-6604, 945,10997,-7893,
+ 0,11066,-7866, 981,11110,-7735, 859,13469,-6526, 899,9307,-8439,
+ 813,16486,-6146, 832,20681,-6100, 826,23358,-6656, 882,10149,-8148,
+ 913,12323,-7139, 822,14910,-6353, 817,18235,-6210, 827,21937,-6382,
+ 846,21937,-6341, 841,14912,-6313, 931,12326,-7098, 901,10152,-8107,
+ 844,23359,-6615, 851,20681,-6059, 831,16487,-6105, 919,9307,-8399,
+ 869,13482,-6492, 999,11113,-7694, 860,9726,-8255, 942,10578,-7958,
+ 962,11715,-7413, 900,12896,-6796, 863,14065,-6404, 818,15760,-6221,
+ 828,17367,-6171, 854,19800,-5994, 848,21309,-6200, 843,22566,-6482,
+ 3407,15409,-3785, 3736,14196,-3673, 2911,18365,-4048,
+ 3147,16733,-3895, 2726,21608,-4455, 2808,19905,-4191,
+ 4338,12259,-3495, 4046,13146,-3576, 5457,10418,-3304,
+ 4809,11349,-3404, 4484,11815,-3454, 2715,22288,-4534,
+ 2832,19035,-4066, 3242,16015,-3841, 3900,13590,-3616,
+ 5133,10883,-3354, 4171,12742,-3524, 2803,20773,-4339,
+ 3051,17450,-3949, 3571,14803,-3729, 4979,11072,-3368,
+ 5619,10185,-3279, 4119,12924,-3556, 4411,12037,-3475,
+ 2801,20363,-4269, 2721,21826,-4489, 3099,17092,-3922,
+ 2887,18618,-4038, 3653,14499,-3701, 3325,15712,-3813,
+ 3489,15106,-3757, 3818,13893,-3645, 3011,17758,-3971,
+ 3194,16374,-3868, 2755,21085,-4385, 2815,19494,-4139,
+ 4265,12481,-3515, 3973,13368,-3596, 5304,10595,-3318,
+ 4664,11477,-3407, 5441,10207,-3361, 5350,10338,-3375,
+ 5139,10672,-3428, 5058,10742,-3431, 4831,11101,-3457,
+ 4742,11228,-3470, 4516,11559,-3504, 4423,11693,-3518,
+ 4277,12079,-3558, 4232,12180,-3571, 4138,12522,-3597,
+ 4094,12603,-3609, 3979,12935,-3675, 3943,13043,-3671,
+ 3852,13383,-3699, 3813,13496,-3705, 3692,13947,-3767,
+ 3653,14073,-3790, 3506,14587,-3772, 3467,14685,-3777,
+ 3349,15192,-3888, 3308,15317,-3887, 3162,15800,-3957,
+ 3119,15954,-3961, 3009,16528,-3946, 3002,16637,-3937,
+ 2914,17260,-4014, 2909,17347,-4006, 2834,17893,-4049,
+ 2813,18060,-4060, 2760,18849,-4232, 2746,18968,-4242, 850,22569,-6438,
+ 855,21313,-6156, 860,19804,-5949, 834,17371,-6127, 824,15765,-6176,
+ 869,14070,-6360, 906,12901,-6751, 968,11720,-7368, 948,10645,-7895,
+ 865,9731,-8211, 1006,11164,-7630, 875,13487,-6447, 926,9310,-8354,
+ 837,16490,-6061, 857,20684,-6015, 867,23379,-6515, 907,10157,-8062,
+ 937,12331,-7053, 847,14917,-6268, 842,18236,-6111, 852,21941,-6297,
+ 885,9891,-8156, 985,10905,-7724, 947,11969,-7255, 885,13125,-6649,
+ 858,14493,-6314, 839,16049,-6111, 836,17735,-6083, 859,20244,-5982,
+ 891,21559,-6157, 848,22883,-6508, 851,22255,-6367, 856,20999,-6085,
+ 867,19042,-6000, 836,16930,-6094, 835,15341,-6222, 880,13646,-6405,
+ 916,12540,-6953, 981,11337,-7564, 927,10370,-7988, 932,9518,-8285,
+ 931,9583,-8174, 863,9671,-8145, 892,9982,-8037, 903,10075,-7996,
+ 952,10454,-7865, 961,10550,-7832, 1008,10963,-7617, 1018,11105,-7567,
+ 996,11458,-7405, 992,11582,-7342, 972,12080,-7057, 968,12210,-6984,
+ 935,12620,-6792, 931,12759,-6714, 914,13199,-6441, 910,13346,-6359,
+ 915,13767,-6194, 910,13941,-6175, 890,14633,-6107, 886,14783,-6091,
+ 864,15476,-6035, 859,15645,-6017, 870,16062,-5957, 873,16231,-5936,
+ 853,17048,-5965, 861,17185,-5974, 879,17812,-5997, 885,17961,-5997,
+ 851,18486,-6138, 865,18526,-5933, 872,18761,-5875, 870,19337,-5971,
+ 864,19470,-5784, 937,19590,-5786, 833,19023,-6126, 851,20344,-5894,
+ 851,20576,-5912, 855,21086,-5973, 854,21224,-6003, 871,21651,-6070,
+ 852,21853,-6116, 850,22332,-6224, 849,22490,-6259, 831,22924,-6338,
+ 834,23240,-6364, 2743,19661,-4287, 2740,19863,-4312, 2723,20501,-4469,
+ 2705,20711,-4503, 2661,21262,-4565, 2658,21427,-4593,
+ 2687,22088,-4631, 2695,22209,-4643, 2774,23170,-4392,
+ 2633,23103,-4527, 2681,22439,-4516, 2656,22665,-4573,
+ 2552,22727,-4653, 2534,23015,-4628, 2607,23397,-4556,
+ 2759,23681,-4398, 2740,24136,-4370, 2610,24100,-4580,
+ 2412,24481,-5089, 2671,24389,-4569, 2397,24935,-5652,
+ 2562,25022,-5528, 939,23708,-6566, 1009,24359,-6776, 1095,24912,-6886,
+ 1049,24117,-6493, 990,23894,-6415, 2290,23837,-4814, 2312,23612,-4723,
+ 2183,24804,-5574, 2191,24632,-5391, 1156,24771,-6650,
+ 1154,24624,-6586, 1104,24526,-6656, 0,9161,-8562, 1281,9161,-8432,
+ 2524,9161,-8046, 3691,9161,-7572, 4745,9161,-6945, 5662,9127,-6096,
+ 3697,9192,-7581, 2531,9192,-8056, 4753,9183,-6951, 5664,9161,-6101,
+ 5664,9185,-6101, 4753,9207,-6951, 2531,9216,-8055, 3697,9216,-7581,
+ 3684,9232,-7560, 2518,9232,-8034, 4740,9223,-6930, 5651,9200,-6080,
+ 2828,20259,1366, 2798,20256,1187, 2820,20237,692, 2843,20292,-25,
+ 2874,20473,735, 2975,20508,90, 2474,20772,-759, 2660,20879,-691,
+ 2471,21553,-1445, 2498,22175,-1940, 2471,24346,-2830,
+ 2556,22373,-1903, 2528,21595,-1351, 2493,24314,-2936,
+ 2576,22239,-2123, 2548,21461,-1571, 2823,20635,1307, 2741,20503,1328,
+ 1490,23972,5392, 1489,24080,4226, 1489,24040,3095, 1489,23188,2159,
+ 1489,21953,1816, 2479,22156,182, 1515,23830,2117, 1605,24415,3131,
+ 1599,24460,4263, 1580,24357,5431, 1448,23885,6743, 1252,24770,5442,
+ 1271,24873,4274, 1277,24828,3142, 1389,24618,2016, 1479,24733,1993,
+ 1301,25010,3165, 1295,25055,4297, 1391,24890,5460, 1512,25216,5507,
+ 1602,25353,4317, 1608,25308,3186, 1979,23458,-29, 1320,25312,1928,
+ 1495,25055,546, 2438,25790,-488, 1605,25585,5599, 1583,26793,6150,
+ 1850,26272,4298, 1578,27435,7117, 1658,27625,6884, 1671,27398,6846,
+ 1678,27176,6937, 1715,27784,6626, 1744,27323,6551, 1753,26904,6776,
+ 1884,28809,-1688, 1555,28655,1620, 1658,28252,4204, 1581,28263,5997,
+ 1567,28312,6790, 1935,27827,4220, 1818,28249,1603, 1570,27742,6195,
+ 1532,27288,6120, 2038,27074,4245, 1418,28416,228, 413,30264,-4539,
+ 424,31094,-4152, 418,31478,-3497, 410,31453,-2653, 410,31190,-1863,
+ 410,30468,-1467, 410,29550,-1270, 411,31041,-1902, 448,31253,-2696,
+ 449,31323,-3466, 425,31182,-3496, 411,31060,-2738, 387,30899,-1932,
+ 316,30806,-1957, 335,30952,-2766, 353,31089,-3521, 322,31007,-3540,
+ 303,30871,-2786, 284,30725,-1976, 304,30630,-1993, 323,30776,-2802,
+ 342,30912,-3557, 396,30843,-3565, 378,30707,-2811, 358,30561,-2001,
+ 414,30477,-2013, 433,30623,-2822, 452,30759,-3576, 474,30560,-3616,
+ 456,30424,-2861, 436,30278,-2052, 349,30194,-2077, 368,30340,-2886,
+ 386,30477,-3641, 309,30389,-3665, 291,30253,-2911, 271,30107,-2102,
+ 267,29996,-2124, 286,30142,-2933, 305,30278,-3688, 376,30179,-3700,
+ 357,30043,-2945, 338,29897,-2136, 420,29789,-2150, 439,29935,-2959,
+ 458,30071,-3713, 500,29883,-3751, 463,29601,-2187, 470,30974,-4049,
+ 462,30153,-4391, 466,30563,-4220, 410,30009,-1368, 725,29372,-3225,
+ 677,29335,-5130, 908,29205,-3300, 632,29533,-4803, 2587,28768,-3408,
+ 2730,28611,-3456, 2404,28568,-6916, 2413,28849,-6612,
+ 1904,26715,1801, 1394,25919,831, 2224,27270,-3994, 2730,28438,-3011,
+ 2587,28570,-2864, 2826,28152,-3163, 2476,28668,-6523,
+ 2476,28433,-6776, 2787,28338,-3507, 2216,27658,-3972,
+ 2207,27950,-5907, 2311,28216,-6128, 2320,27876,-3971,
+ 2311,28118,-6301, 2311,27845,-6252, 2320,27703,-3749,
+ 2320,27084,-3798, 2320,26986,-4070, 2698,26705,-4014,
+ 2557,26974,-3547, 2557,27739,-3485, 2572,27738,-6362,
+ 2436,28204,-6533, 2436,28421,-6303, 2556,28092,-3822,
+ 2431,28142,-6975, 2544,27863,-6726, 2266,28229,-1686,
+ 1939,28156,-1065, 2569,27943,-2270, 2381,27545,-1682,
+ 2799,27594,-3104, 2750,27866,-2738, 2539,27578,-6309,
+ 2720,26853,-3133, 2788,26461,-3776, 1061,27543,-7078, 1780,27941,135,
+ 1859,27747,-527, 1756,27784,691, 1855,27001,736, 1950,26711,19,
+ 1964,27006,-630, 2342,26955,-1898, 2595,25515,-3113, 2147,27855,132,
+ 2126,27722,601, 2213,27691,-428, 2210,27061,639, 2290,26816,34,
+ 2302,27065,-515, 2347,27680,100, 2335,27602,376, 2386,27584,-229,
+ 2385,27213,398, 2432,27069,42, 2439,27215,-281, 2481,27452,103,
+ 1786,24263,399, 2278,24851,-562, 2372,25143,-1163, -2567,23141,-2607,
+ -2513,23156,-2494, 2513,23156,-2494, 2567,23141,-2607,
+
+ TRIANGLES, 657,656,159, 100,506,99, 1003,900,995, 1048,1009,901,
+ 1051,901,1009, 1070,1073,1071, 1070,803,808, 1071,1077,1070,
+ 1072,1006,1073, 1072,808,915, 1073,808,1072, 1077,1071,1076,
+ 1078,1283,1127, 1081,1078,1079, 1081,1079,1080, 1083,1082,1086,
+ 1083,747,1274, 1084,888,1085, 1085,878,1086, 1085,1086,1095,
+ 1086,747,1083, 1093,1095,1086, 1094,1095,1093, 658,657,149,
+ 1101,637,32, 1103,638,1108, 1105,637,1101, 1106,637,1105,
+ 1108,638,1111, 111,36,158, 111,653,665, 111,665,36, 1110,858,1112,
+ 1111,988,1110, 1111,638,891, 1111,891,988, 1112,858,1113,
+ 1113,637,1106, 1117,779,784, 112,214,207, 112,651,210, 1124,1297,1154,
+ 1125,1123,1128, 1125,1302,1154, 1127,1077,1078, 1129,791,796,
+ 1130,1118,1137, 1136,1130,1137, 1137,1118,1119, 1137,1119,1121,
+ 1137,1121,1126, 1142,758,759, 1142,759,760, 1142,760,761,
+ 1147,1146,1154, 1150,755,756, 1150,756,757, 1154,1302,1124,
+ 1155,1147,1154, 1155,1297,1156, 1155,1154,1297, 1156,1240,1155,
+ 1156,1298,1157, 1157,1240,1156, 1157,1299,1273, 1157,1282,1281,
+ 1158,1151,1152, 1161,768,1164, 1162,773,1161, 1162,1161,1163,
+ 1163,1161,1164, 1165,1172,762, 1168,726,1178, 1168,1267,1266,
+ 1169,1178,725, 1171,1172,1165, 1171,720,1172, 1171,1165,1175,
+ 1178,1169,1174, 1178,1174,1278, 1179,1229,1228, 118,660,168,
+ 1180,1229,1179, 1185,726,1226, 1186,1183,1184, 1186,1184,1191,
+ 119,660,118, 1191,1184,1192, 1192,1184,1197, 1197,1184,1198,
+ 1198,1184,1203, 1203,1184,1204, 121,116,451, 1210,1209,1230,
+ 1215,1210,1230, 1216,1215,1230, 1221,1216,1230, 1222,1185,1226,
+ 1222,1221,1230, 1223,1222,1226, 1224,1223,1225, 1225,1223,1226,
+ 1226,726,1231, 1227,1188,1189, 1227,1189,1194, 1227,1194,1195,
+ 1227,1195,1200, 1227,1200,1201, 1227,1201,1206, 1228,1224,1225,
+ 1228,1225,1234, 1229,1207,1212, 1229,1212,1213, 1229,1213,1218,
+ 1229,1218,1219, 1229,1219,1224, 1229,1180,1227, 1229,1224,1228,
+ 1230,729,1185, 1230,1185,1222, 1231,1225,1226, 1232,1179,1234,
+ 1233,744,1232, 1234,1179,1228, 1234,1225,1231, 1235,744,1233,
+ 1237,744,1238, 1239,1155,1240, 1240,1157,1239, 1243,1168,1266,
+ 1248,1241,1249, 1250,1249,1252, 1252,1249,1253, 1254,1248,1251,
+ 1256,1241,1255, 1259,1244,1270, 1264,745,1237, 1265,1260,1272,
+ 1267,1168,1178, 1267,1178,1277, 1269,1282,1270, 1270,1282,1273,
+ 1271,1268,1269, 1271,1269,1270, 1273,1283,1274, 1274,1078,1081,
+ 1274,1081,1083, 1274,747,1275, 1275,745,1264, 1275,1264,1265,
+ 1275,1265,1272, 1275,1272,1274, 1276,1178,1278, 1277,1178,1276,
+ 1280,1157,1281, 1281,1269,1277, 1282,1157,1273, 1282,1269,1281,
+ 1283,1078,1274, 1292,1290,1296, 1295,1292,1296, 1296,1290,1291,
+ 1296,1291,1293, 1296,1293,1294, 1296,1294,1295, 1297,1298,1156,
+ 1297,1124,1298, 1298,1124,1299, 1299,1124,1273, 1299,1157,1298,
+ 660,659,168, 133,128,463, 137,182,141, 138,185,137, 139,184,138,
+ 140,183,139, 141,181,142, 141,182,144, 142,181,143, 143,649,142,
+ 143,197,195, 144,196,181, 144,199,194, 145,183,140, 145,201,183,
+ 145,140,405, 146,184,139, 146,139,183, 146,203,184, 147,185,138,
+ 147,138,184, 147,205,185, 148,198,182, 148,137,185, 149,657,159,
+ 150,149,159, 151,150,157, 152,151,157, 153,152,157, 157,150,158,
+ 157,38,160, 157,37,38, 158,150,159, 160,153,157, 160,39,163,
+ 160,38,39, 162,41,161, 163,39,40, 168,659,171, 172,155,156,
+ 176,153,154, 176,154,155, 177,658,149, 179,149,150, 179,150,151,
+ 180,152,153, 181,197,143, 181,141,144, 181,196,190, 182,199,144,
+ 182,137,148, 182,198,189, 183,200,146, 184,202,147, 185,204,148,
+ 186,204,185, 186,267,204, 186,185,205, 187,202,184, 187,265,202,
+ 187,184,203, 188,200,183, 188,263,200, 188,183,201, 189,275,199,
+ 189,261,255, 190,277,197, 190,259,254, 191,276,198, 191,148,204,
+ 192,205,147, 192,147,202, 192,268,205, 193,203,146, 193,146,200,
+ 193,266,203, 194,278,196, 194,262,249, 196,259,190, 196,144,194,
+ 196,278,248, 197,181,190, 197,260,195, 197,277,247, 198,261,189,
+ 198,148,191, 198,276,246, 199,182,189, 199,262,194, 199,275,245,
+ 200,274,193, 201,273,188, 202,272,192, 203,271,187, 204,270,191,
+ 205,269,186, 206,215,209, 206,216,90, 207,215,206, 207,214,208,
+ 208,231,215, 208,230,228, 209,233,216, 209,232,227, 210,229,214,
+ 210,651,226, 211,235,217, 211,234,225, 212,237,218, 212,236,224,
+ 212,386,236, 213,238,223, 213,421,88, 214,230,208, 214,112,210,
+ 214,229,222, 215,207,208, 215,232,209, 215,231,221, 216,206,209,
+ 216,234,211, 216,233,220, 217,90,211, 217,386,212, 218,89,212,
+ 218,238,213, 218,237,219, 219,342,238, 219,340,331, 220,346,234,
+ 220,336,329, 221,348,232, 221,334,328, 222,350,230, 222,332,327,
+ 223,341,326, 224,343,237, 224,339,325, 225,345,235, 225,337,324,
+ 226,351,229, 226,651,445, 227,347,233, 227,335,322, 228,349,231,
+ 228,333,321, 229,332,222, 229,210,226, 229,351,320, 230,214,222,
+ 230,333,228, 230,350,319, 231,334,221, 231,208,228, 231,349,318,
+ 232,215,221, 232,335,227, 232,348,317, 233,336,220, 233,209,227,
+ 233,347,316, 234,216,220, 234,337,225, 234,346,315, 235,211,225,
+ 235,345,314, 236,339,224, 236,383,313, 236,344,383, 237,340,219,
+ 237,212,224, 237,343,312, 238,218,219, 238,341,223, 238,342,311,
+ 239,269,205, 239,205,268, 240,270,204, 240,204,267, 241,271,203,
+ 241,203,266, 242,272,202, 242,202,265, 243,273,201, 243,201,264,
+ 244,274,200, 244,200,263, 250,145,407, 251,266,193, 251,193,274,
+ 252,268,192, 252,192,272, 253,191,270, 256,263,188, 256,188,273,
+ 257,265,187, 257,187,271, 258,267,186, 258,186,269, 259,196,248,
+ 22,650,435, 260,197,247, 261,198,246, 262,199,245, 21,650,22,
+ 275,189,255, 276,191,253, 277,190,254, 278,194,249, 323,226,445,
+ 330,217,235, 330,235,338, 332,229,320, 333,230,319, 334,231,318,
+ 335,232,317, 336,233,316, 337,234,315, 338,235,314, 339,236,313,
+ 664,653,661, 340,237,312, 341,238,311, 342,219,331, 343,224,325,
+ 344,236,386, 345,225,324, 346,220,329, 347,227,322, 348,221,328,
+ 349,228,321, 665,653,664, 350,222,327, 351,226,323, 380,217,330,
+ 405,408,145, 405,412,406, 406,408,405, 407,145,408, 408,341,407,
+ 411,406,412, 413,412,461, 414,413,416, 415,414,416, 416,413,608,
+ 418,87,421, 418,416,608, 419,223,326, 420,213,223, 420,223,419,
+ 421,417,418, 421,213,420, 421,430,428, 421,87,88, 428,430,429,
+ 430,421,420, 435,650,439, 439,650,440, 440,650,447, 442,651,437,
+ 444,195,323, 444,323,445, 445,651,442, 446,195,444, 447,650,195,
+ 447,195,446, 453,452,471, 455,453,471, 460,455,471, 461,617,413,
+ 462,457,459, 465,43,44, 471,452,464, 471,464,470, 486,485,492,
+ 488,458,1301, 488,631,458, 488,1301,459, 488,480,481, 488,481,489,
+ 489,574,490, 490,631,489, 490,574,491, 490,632,631, 491,632,490,
+ 495,105,106, 495,106,107, 495,107,108, 495,108,109, 495,109,110,
+ 495,110,496, 497,495,496, 498,105,495, 498,495,497, 499,506,505,
+ 505,68,71, 506,68,505, 506,67,68, 508,503,512, 509,499,505,
+ 512,74,502, 512,502,601, 513,563,514, 518,517,520, 518,564,76,
+ 519,75,564, 519,74,75, 523,522,561, 525,518,520, 526,518,525,
+ 528,523,561, 529,528,561, 531,518,526, 532,518,531, 534,529,561,
+ 535,534,561, 537,518,532, 538,518,537, 540,535,561, 546,541,563,
+ 547,546,563, 552,547,563, 553,552,563, 556,519,564, 558,553,563,
+ 559,557,558, 559,558,562, 560,74,519, 560,519,556, 560,556,557,
+ 560,557,559, 560,559,565, 561,514,563, 562,563,513, 562,558,563,
+ 562,513,568, 564,543,544, 564,544,549, 564,549,550, 564,550,555,
+ 564,555,556, 565,74,560, 565,559,568, 566,84,567, 567,84,569,
+ 568,559,562, 568,513,566, 571,85,598, 571,84,85, 572,84,571,
+ 573,491,574, 574,489,573, 583,575,582, 585,582,588, 586,583,584,
+ 587,583,586, 589,575,590, 598,85,609, 599,598,609, 653,111,654,
+ 600,601,502, 600,502,577, 603,602,605, 604,578,593, 604,616,603,
+ 604,603,605, 606,594,599, 606,599,609, 607,633,491, 607,616,604,
+ 607,491,616, 607,458,633, 608,87,418, 608,617,607, 608,606,609,
+ 608,413,617, 609,87,608, 609,86,87, 610,512,611, 611,512,601,
+ 611,603,615, 612,508,512, 612,512,610, 615,616,491, 615,491,614,
+ 615,603,616, 625,624,630, 627,625,630, 628,627,630, 629,628,630,
+ 630,624,626, 630,626,629, 631,488,489, 632,458,631, 632,491,633,
+ 633,458,632, 639,651,112, 641,774,640, 32,637,33, 667,640,668,
+ 668,640,669, 669,640,774, 67,506,100, 672,669,774, 676,673,820,
+ 677,676,823, 680,677,826, 688,685,1131, 712,711,754, 720,719,1172,
+ 721,720,1171, 725,1178,726, 729,726,1185, 729,1230,730, 73,512,503,
+ 730,1230,1184, 74,512,73, 743,82,83, 745,744,1237, 745,743,744,
+ 745,1275,746, 746,85,743, 746,743,745, 746,609,85, 746,1275,86,
+ 747,86,1275, 748,747,1086, 748,883,751, 748,1086,878, 751,882,752,
+ 752,881,870, 76,564,75, 762,1172,763, 763,1172,719, 769,768,1161,
+ 770,769,1161, 771,770,1161, 772,771,1161, 773,772,1161, 774,641,642,
+ 775,638,639, 781,647,782, 655,654,111, 800,848,801, 801,847,802,
+ 801,848,810, 802,846,803, 802,847,809, 803,846,808, 804,845,800,
+ 805,844,804, 805,636,806, 806,844,805, 806,860,844, 807,845,804,
+ 807,804,844, 807,862,845, 808,1073,1070, 809,863,846, 809,866,856,
+ 810,865,847, 810,868,855, 811,800,845, 811,867,848, 812,644,645,
+ 812,645,840, 813,812,842, 814,813,842, 816,815,843, 817,816,839,
+ 818,817,839, 819,818,835, 820,813,814, 820,814,815, 820,815,816,
+ 820,816,823, 821,672,774, 821,813,820, 822,642,643, 822,643,644,
+ 822,644,812, 822,812,813, 822,813,821, 823,676,820, 824,681,825,
+ 826,677,823, 83,742,743, 831,646,647, 831,647,781, 834,646,831,
+ 844,859,807, 845,861,811, 846,864,808, 846,802,809, 846,863,851,
+ 847,866,809, 847,801,810, 847,865,850, 848,868,810, 848,800,811,
+ 848,867,849, 849,934,868, 849,932,923, 85,84,743, 850,936,866,
+ 850,930,922, 851,938,864, 851,928,921, 852,861,845, 852,926,861,
+ 852,845,862, 853,859,844, 853,924,859, 853,844,860, 854,811,861,
+ 854,935,867, 855,937,865, 855,933,917, 856,939,863, 856,931,916,
+ 857,862,807, 857,807,859, 857,927,862, 858,637,1113, 858,860,806,
+ 858,925,860, 859,943,857, 86,609,746, 860,942,853, 861,941,854,
+ 862,940,852, 863,928,851, 863,809,856, 863,939,909, 864,846,851,
+ 864,938,908, 865,930,850, 865,810,855, 865,937,907, 866,847,850,
+ 866,931,856, 866,936,906, 867,932,849, 867,811,854, 867,935,905,
+ 868,848,849, 868,933,855, 868,934,904, 870,880,871, 871,879,775,
+ 873,879,871, 873,895,879, 873,871,880, 874,880,870, 874,897,880,
+ 874,870,881, 875,638,775, 875,775,879, 876,881,752, 876,899,881,
+ 876,752,882, 877,882,751, 877,1051,882, 877,751,883, 878,883,748,
+ 878,903,883, 879,894,875, 88,218,213, 880,896,873, 881,898,874,
+ 882,900,876, 883,902,877, 884,902,883, 884,1005,902, 884,883,903,
+ 885,898,881, 885,1001,898, 885,881,899, 886,896,880, 886,999,896,
+ 886,880,897, 887,894,879, 887,997,894, 887,879,895, 888,878,1085,
+ 888,903,878, 888,1006,903, 889,901,877, 889,1004,901, 889,877,902,
+ 89,217,212, 89,218,88, 890,899,876, 890,1002,899, 890,876,900,
+ 891,638,875, 891,875,894, 892,897,874, 892,1000,897, 892,874,898,
+ 893,895,873, 893,998,895, 893,873,896, 894,1016,891, 895,1015,887,
+ 896,1014,893, 897,1013,886, 898,1012,892, 899,1011,885, 656,655,159,
+ 90,216,211, 90,217,89, 900,1010,890, 900,882,995, 901,1051,877,
+ 902,1008,889, 903,1007,884, 91,57,58, 910,940,862, 910,862,927,
+ 911,941,861, 911,861,926, 912,942,860, 912,860,925, 913,943,859,
+ 913,859,924, 914,927,857, 914,857,943, 918,854,941, 919,924,853,
+ 919,853,942, 920,926,852, 920,852,940, 928,863,909, 929,864,908,
+ 93,92,484, 930,865,907, 931,866,906, 932,867,905, 933,868,904,
+ 934,849,923, 935,854,918, 936,850,922, 937,855,917, 938,851,921,
+ 939,856,916, 94,93,484, 96,95,476, 97,96,476, 976,903,1006,
+ 976,1007,903, 977,902,1005, 977,1008,902, 978,901,1004, 978,1048,901,
+ 979,900,1003, 979,1010,900, 98,97,476, 980,899,1002, 980,1011,899,
+ 981,898,1001, 981,1012,898, 982,897,1000, 982,1013,897, 983,1014,896,
+ 983,896,999, 984,1015,895, 984,895,998, 985,1016,894, 985,894,997,
+ 986,893,1014, 986,998,893, 987,892,1012, 987,1000,892, 988,891,1016,
+ 988,858,1110, 989,890,1010, 989,1002,890, 99,506,499, 990,889,1008,
+ 990,1004,889, 991,888,1084, 991,1006,888, 992,887,1015, 992,997,887,
+ 993,886,1013, 993,999,886, 994,885,1011, 994,1001,885, 995,882,1045,
+ 996,884,1007, 996,1005,884,
+
+ QUADS, 648,666,130,131, 648,649,20,19, 657,658,15,14,
+ 1000,987,1032,1031, 1001,994,1036,1035, 1002,989,1040,1039,
+ 1003,995,1044,1043, 1004,990,1053,1052, 1005,996,1057,1056,
+ 1006,991,1061,1060, 1007,976,1059,1058, 1008,977,1055,1054,
+ 1009,906,973,1047, 101,64,67,100, 1010,979,1042,1041,
+ 1011,980,1038,1037, 1012,981,1034,1033, 1013,982,1030,1029,
+ 1014,983,1026,1025, 1015,984,1022,1021, 1016,985,1018,1017,
+ 102,63,64,101, 103,60,63,102, 104,59,60,103, 1045,882,1051,1009,
+ 1045,1009,1047,1046, 1048,978,1050,1049, 105,104,103,106,
+ 106,103,102,107, 1061,991,1071,1075, 1062,939,1004,1052,
+ 1062,1052,1053,1063, 1063,909,939,1062, 1064,928,1008,1054,
+ 1064,1054,1055,1065, 1065,921,928,1064, 1066,938,1005,1056,
+ 1066,1056,1057,1067, 1067,908,938,1066, 1068,929,1007,1058,
+ 1068,1058,1059,1069, 1069,915,929,1068, 107,102,101,108,
+ 1071,991,1084,1076, 1072,915,976,1006, 1073,1006,1060,1074,
+ 1074,1060,1061,1075, 1075,1071,1073,1074, 1078,1077,1076,1079,
+ 108,101,100,109, 1080,1079,1085,1095, 1081,1080,1082,1083,
+ 1082,1080,1092,1091, 1084,1085,1087,1088, 1085,1079,1089,1087,
+ 1086,1082,1091,1093, 1088,1087,1089,1090, 1089,1079,1076,1090,
+ 109,100,99,110, 1090,1076,1084,1088, 1092,1080,1095,1094,
+ 1093,1091,1092,1094, 1096,27,26,431, 1097,638,1103,1098,
+ 658,659,16,15, 110,99,499,496, 1100,1099,1102,1104,
+ 1101,1100,1104,1105, 1102,1099,1098,1103, 1106,1105,1104,1107,
+ 1107,1104,1102,1109, 1109,1102,1103,1108, 1110,1109,1108,1111,
+ 1112,1107,1109,1110, 1113,1106,1107,1112, 1115,819,828,1116,
+ 1117,784,791,1120, 1118,1116,1117,1119, 1119,1117,1120,1121,
+ 1120,791,1129,1122, 1121,1120,1122,1126, 1122,1123,1125,1126,
+ 1126,1125,1154,1137, 1127,1124,1302,1303, 1128,1123,1122,1129,
+ 1128,803,1070,1303, 1129,796,803,1128, 113,114,123,124,
+ 1130,1115,1116,1118, 1131,1114,1115,1130, 1132,1133,1140,1141,
+ 1133,1134,1139,1140, 1134,1135,1138,1139, 1136,688,1131,1130,
+ 1138,1135,1136,1137, 1138,1137,1154,1146, 1139,1138,1146,1145,
+ 114,115,122,123, 1140,1139,1145,1144, 1141,1140,1144,1143,
+ 1142,761,1132,1141, 1143,758,1142,1141, 1143,1144,1149,1150,
+ 1144,1145,1148,1149, 1145,1146,1147,1148, 1148,1147,1155,1153,
+ 1149,1148,1153,1152, 115,116,121,122, 115,114,166,167,
+ 1150,757,758,1143, 1150,1149,1152,1151, 1151,754,755,1150,
+ 1158,712,754,1151, 1158,1152,1160,1159, 1160,1152,1153,1155,
+ 1160,1155,1239,1177, 1165,762,773,1162, 1165,1162,1163,1166,
+ 1166,1163,1164,1167, 1167,1159,1176,1166, 1169,1170,1173,1174,
+ 1173,1170,1171,1175, 1174,1173,1177,1239, 1175,1165,1166,1176,
+ 1176,1159,1160,1177, 1177,1173,1175,1176, 1182,1183,1186,1187,
+ 1187,1186,1191,1190, 1188,1181,1182,1187, 1189,1188,1187,1190,
+ 119,118,117,120, 1190,1191,1192,1193, 1193,1192,1197,1196,
+ 1194,1189,1190,1193, 1195,1194,1193,1196, 1196,1197,1198,1199,
+ 1199,1198,1203,1202, 659,660,17,16, 659,658,177,171, 120,117,113,124,
+ 1200,1195,1196,1199, 1201,1200,1199,1202, 1202,1203,1204,1205,
+ 1204,1184,1230,1209, 1205,1204,1209,1208, 1206,1201,1202,1205,
+ 1207,1206,1205,1208, 1208,1209,1210,1211, 1211,1210,1215,1214,
+ 1212,1207,1208,1211, 1213,1212,1211,1214, 1214,1215,1216,1217,
+ 1217,1216,1221,1220, 1218,1213,1214,1217, 1219,1218,1217,1220,
+ 122,121,128,127, 1220,1221,1222,1223, 1224,1219,1220,1223,
+ 1227,1180,1181,1188, 1227,1206,1207,1229, 123,122,127,126,
+ 1231,726,1168,1233, 1233,1168,1243,1235, 1234,1231,1233,1232,
+ 1236,1235,1243,1242, 1236,1242,1244,1247, 1237,1238,1245,1246,
+ 1238,744,1235,1236, 1239,1157,1280,1279, 124,123,126,125,
+ 1244,1242,1271,1270, 1245,1238,1236,1247, 1246,1245,1262,1261,
+ 1247,1244,1259,1263, 1249,1241,1256,1253, 125,126,135,136,
+ 1251,1248,1249,1250, 1251,1250,1262,1263, 1254,1251,1263,1259,
+ 1255,1241,1248,1254, 1257,1256,1255,1258, 1258,1255,1254,1259,
+ 126,127,134,135, 1260,1253,1256,1257, 1261,1252,1253,1260,
+ 1262,1250,1252,1261, 1262,1245,1247,1263, 1264,1237,1246,1265,
+ 1265,1246,1261,1260, 1268,1243,1266,1269, 1269,1266,1267,1277,
+ 127,128,133,134, 1271,1242,1243,1268, 1272,1260,1257,1274,
+ 1273,1258,1259,1270, 1273,1124,1127,1283, 1274,1257,1258,1273,
+ 1278,1174,1239,1279, 128,121,451,454, 1284,1276,1278,1285,
+ 1285,1278,1279,1287, 1286,1277,1276,1284, 1287,1279,1280,1288,
+ 1288,1280,1281,1289, 1289,1281,1277,1286, 129,120,124,125,
+ 1290,1284,1285,1291, 1291,1285,1287,1293, 1292,1286,1284,1290,
+ 1293,1287,1288,1294, 1294,1288,1289,1295, 1295,1289,1286,1292,
+ 660,666,18,17, 130,666,660,119, 130,119,120,129, 1301,458,461,1300,
+ 1301,1300,462,459, 1303,1070,1077,1127, 1303,1302,1125,1128,
+ 131,130,129,132, 132,129,125,136, 134,133,140,139, 135,134,139,138,
+ 136,135,138,137, 140,133,463,462, 141,132,136,137, 142,131,132,141,
+ 154,153,160,163, 158,36,37,157, 159,655,111,158, 161,156,155,162,
+ 161,41,42,448, 162,155,154,163, 163,40,41,162, 164,113,117,169,
+ 164,169,170,174, 165,116,115,167, 165,156,449,450, 166,114,113,164,
+ 167,166,173,172, 169,117,118,168, 170,169,168,171, 172,156,165,167,
+ 173,166,164,174, 174,170,178,175, 175,178,179,180, 176,155,172,173,
+ 176,173,174,175, 177,149,179,178, 178,170,171,177, 179,151,152,180,
+ 180,153,176,175, 649,648,131,142, 649,650,21,20, 201,145,250,264,
+ 206,90,753,869, 207,206,869,872, 263,256,400,399, 264,250,404,403,
+ 265,257,306,305, 266,251,310,309, 267,258,298,297, 268,252,302,301,
+ 269,239,300,299, 270,240,296,295, 271,241,308,307, 272,242,304,303,
+ 273,243,402,401, 274,244,398,397, 279,260,247,280, 280,247,320,353,
+ 281,277,254,282, 282,254,327,355, 283,259,248,284, 284,248,319,357,
+ 285,278,249,286, 286,249,321,359, 287,262,245,288, 288,245,318,361,
+ 289,275,255,290, 19,18,666,648, 290,255,328,363, 291,261,246,292,
+ 292,246,317,365, 293,276,253,294, 294,253,322,367, 296,240,316,369,
+ 298,258,329,371, 650,649,143,195, 300,239,315,373, 302,252,324,375,
+ 304,242,314,377, 306,257,330,379, 308,241,344,382, 661,653,652,662,
+ 310,251,313,385, 311,250,407,341, 312,256,273,340, 313,251,274,339,
+ 314,242,265,338, 315,239,268,337, 316,240,267,336, 317,246,276,335,
+ 318,245,275,334, 319,248,278,333, 662,667,668,663, 320,247,277,332,
+ 321,249,262,349, 322,253,270,347, 323,195,260,351, 324,252,272,345,
+ 325,244,263,343, 327,254,259,350, 328,255,261,348, 329,258,269,346,
+ 663,668,669,670, 330,257,271,380, 331,243,264,342, 332,277,281,354,
+ 333,278,285,358, 334,275,289,362, 335,276,293,366, 336,267,297,370,
+ 337,268,301,374, 338,265,305,378, 339,274,397,387, 664,661,662,663,
+ 340,273,401,391, 342,264,403,393, 343,263,399,389, 344,241,266,383,
+ 345,272,303,376, 346,269,299,372, 347,270,295,368, 348,261,291,364,
+ 349,262,287,360, 665,664,663,670, 350,259,283,356, 351,260,279,352,
+ 352,279,280,353, 353,320,351,352, 354,281,282,355, 355,327,332,354,
+ 356,283,284,357, 357,319,350,356, 358,285,286,359, 359,321,333,358,
+ 36,665,670,671, 360,287,288,361, 361,318,349,360, 362,289,290,363,
+ 363,328,334,362, 364,291,292,365, 365,317,348,364, 366,293,294,367,
+ 367,322,335,366, 368,295,296,369, 369,316,347,368, 37,36,671,674,
+ 370,297,298,371, 371,329,336,370, 372,299,300,373, 373,315,346,372,
+ 374,301,302,375, 375,324,337,374, 376,303,304,377, 377,314,345,376,
+ 378,305,306,379, 379,330,338,378, 38,37,674,675, 380,271,307,381,
+ 381,307,308,382, 382,344,380,381, 383,266,309,384, 384,309,310,385,
+ 385,313,383,384, 386,217,380,344, 388,325,339,387, 388,387,397,398,
+ 39,38,675,678, 390,312,343,389, 390,389,399,400, 392,331,340,391,
+ 392,391,401,402, 394,311,342,393, 394,393,403,404, 395,341,408,409,
+ 396,326,341,395, 396,395,409,410, 398,244,325,388, 40,39,678,679,
+ 400,256,312,390, 402,243,331,392, 404,250,311,394, 405,140,462,1300,
+ 406,326,396,410, 408,406,410,409, 41,40,679,682, 411,412,413,414,
+ 411,414,424,425, 412,405,1300,461, 417,415,416,418, 419,326,406,411,
+ 419,411,425,423, 42,41,682,683, 420,414,415,430, 422,420,419,423,
+ 424,414,420,422, 424,422,423,425, 426,417,421,428, 427,415,417,426,
+ 427,426,428,429, 43,42,683,686, 430,415,427,429, 431,651,639,1096,
+ 431,26,25,432, 432,25,24,433, 432,433,436,437, 433,24,23,434,
+ 434,23,22,435, 436,433,434,438, 436,438,441,443, 437,651,431,432,
+ 437,436,443,442, 438,434,435,439, 438,439,440,441, 44,43,686,687,
+ 441,440,447,446, 442,443,444,445, 443,441,446,444, 448,42,43,465,
+ 449,156,161,448, 449,448,465,464, 45,44,687,690, 450,449,464,452,
+ 451,116,165,450, 451,450,452,453, 454,451,453,455, 456,454,455,460,
+ 456,457,462,463, 459,457,456,460, 46,45,690,691, 461,458,607,617,
+ 463,128,454,456, 465,44,470,464, 466,98,476,475, 466,49,50,98,
+ 467,47,49,466, 468,46,47,467, 469,45,46,468, 47,46,691,694,
+ 470,44,45,469, 470,469,472,471, 472,469,468,473, 473,468,467,474,
+ 474,467,466,475, 476,95,477,475, 478,474,475,477, 479,473,474,478,
+ 48,695,696,697, 480,472,473,479, 481,480,479,482, 482,479,478,483,
+ 483,478,477,484, 486,483,484,485, 487,482,483,486, 487,486,494,489,
+ 488,459,460,471, 488,471,472,480, 489,481,482,487, 49,47,694,48,
+ 492,58,59,493, 493,59,104,501, 494,486,492,493, 494,493,510,511,
+ 497,496,499,500, 498,497,500,501, 652,640,667,662, 652,653,10,9,
+ 50,49,48,697, 500,499,509,510, 501,104,105,498, 502,74,565,567,
+ 504,72,73,503, 505,71,72,504, 505,504,507,509, 507,504,503,508,
+ 509,507,511,510, 51,50,697,698, 510,493,501,500, 511,507,508,573,
+ 513,81,82,566, 514,80,81,513, 515,79,80,514, 515,514,561,522,
+ 516,78,79,515, 516,515,522,521, 517,77,78,516, 518,76,77,517,
+ 52,51,698,701, 520,517,516,521, 521,522,523,524, 524,523,528,527,
+ 525,520,521,524, 526,525,524,527, 527,528,529,530, 53,52,701,702,
+ 530,529,534,533, 531,526,527,530, 532,531,530,533, 533,534,535,536,
+ 536,535,540,539, 537,532,533,536, 538,537,536,539, 539,540,541,542,
+ 54,53,702,705, 541,540,561,563, 542,541,546,545, 543,538,539,542,
+ 544,543,542,545, 545,546,547,548, 548,547,552,551, 549,544,545,548,
+ 55,54,705,706, 550,549,548,551, 551,552,553,554, 554,553,558,557,
+ 555,550,551,554, 556,555,554,557, 56,55,706,709, 564,518,538,543,
+ 566,82,743,84, 567,565,568,566, 569,84,572,570, 57,56,709,710,
+ 570,572,579,581, 573,489,494,511, 573,508,612,613, 577,502,567,569,
+ 577,569,570,576, 577,576,605,602, 578,576,570,581, 579,572,571,580,
+ 58,57,710,713, 580,571,598,599, 581,579,596,597, 582,575,589,588,
+ 583,582,585,584, 586,584,596,595, 587,586,595,594, 588,589,592,593,
+ 589,590,591,592, 59,58,713,714, 590,575,583,587, 590,587,594,591,
+ 591,594,606,608, 592,591,608,607, 593,578,581,597, 593,592,607,604,
+ 595,580,599,594, 596,579,580,595, 596,584,585,597, 597,585,588,593,
+ 653,654,11,10, 60,59,714,61, 600,577,602,603, 601,600,603,611,
+ 605,576,578,604, 61,716,717,62, 610,611,620,618, 611,615,623,620,
+ 612,610,618,619, 613,612,619,621, 614,491,573,613, 614,613,621,622,
+ 615,614,622,623, 618,620,626,624, 619,618,624,625, 62,717,718,65,
+ 620,623,629,626, 621,619,625,627, 622,621,627,628, 623,622,628,629,
+ 63,60,61,62, 639,638,1097,1096, 64,63,62,65, 647,634,793,782,
+ 1,647,646,2, 2,646,645,3, 65,718,719,66, 3,645,644,4, 4,644,643,5,
+ 5,643,642,6, 6,642,641,7, 7,641,640,8, 8,640,652,9, 28,27,1096,1097,
+ 29,28,1097,1098, 66,719,720,69, 30,29,1098,1099, 31,30,1099,1100,
+ 32,31,1100,1101, 33,637,636,34, 34,636,635,35, 35,635,634,0,
+ 0,634,647,1, 67,64,65,66, 670,669,672,671, 671,672,673,674,
+ 673,672,821,820, 674,673,676,675, 675,676,677,678, 678,677,680,679,
+ 679,680,681,682, 68,67,66,69, 681,680,826,825, 682,681,684,683,
+ 683,684,685,686, 684,681,824,1114, 685,684,1114,1131,
+ 686,685,688,687, 687,688,689,690, 689,688,1136,1135, 69,720,721,70,
+ 690,689,692,691, 691,692,693,694, 692,689,1135,1134,
+ 693,692,1134,1133, 694,693,695,48, 695,693,1133,1132,
+ 696,695,1132,761, 697,696,699,698, 698,699,700,701, 699,696,761,760,
+ 654,655,12,11, 70,721,722,723, 700,699,760,759, 701,700,703,702,
+ 702,703,704,705, 703,700,759,758, 704,703,758,757, 705,704,707,706,
+ 706,707,708,709, 707,704,757,756, 708,707,756,755, 709,708,711,710,
+ 71,68,69,70, 710,711,712,713, 711,708,755,754, 713,712,715,714,
+ 714,715,716,61, 715,712,1158,1159, 716,715,767,766, 717,716,766,765,
+ 718,717,765,764, 719,718,764,763, 72,71,70,723, 722,721,1171,1170,
+ 723,722,725,724, 724,725,726,727, 725,722,1170,1169, 727,726,729,728,
+ 728,729,730,731, 73,72,723,724, 731,730,733,732, 732,733,734,735,
+ 733,730,1184,1183, 734,733,1183,1182, 735,734,737,736,
+ 736,737,738,739, 737,734,1182,1181, 738,737,1181,1180,
+ 739,738,741,740, 74,73,724,727, 740,741,742,83, 741,738,1180,1179,
+ 742,741,1179,1232, 743,742,1232,744, 749,748,751,750, 75,74,727,728,
+ 750,751,752,753, 753,752,870,869, 76,75,728,731, 762,763,772,773,
+ 763,764,771,772, 764,765,770,771, 765,766,769,770, 766,767,768,769,
+ 767,715,1159,1167, 768,767,1167,1164, 77,76,731,732, 774,642,822,821,
+ 775,639,872,871, 776,780,783,787, 776,777,829,827, 778,779,828,830,
+ 78,77,732,735, 780,781,782,783, 780,776,827,832, 781,780,832,831,
+ 783,782,793,792, 784,779,778,785, 785,778,777,786, 786,777,776,787,
+ 787,783,792,788, 788,792,795,799, 789,786,787,788, 79,78,735,736,
+ 790,785,786,789, 791,784,785,790, 792,793,794,795, 793,634,635,794,
+ 794,635,636,805, 795,794,805,804, 796,791,790,797, 797,790,789,798,
+ 798,789,788,799, 799,795,804,800, 655,656,13,12, 80,79,736,739,
+ 801,798,799,800, 802,797,798,801, 803,796,797,802, 806,636,637,858,
+ 81,80,739,740, 815,814,842,843, 817,818,825,826, 818,819,824,825,
+ 82,81,740,83, 823,816,817,826, 824,819,1115,1114, 827,829,836,837,
+ 828,779,1117,1116, 828,819,835,830, 829,777,778,830, 831,832,833,834,
+ 833,832,827,837, 834,833,841,840, 835,818,839,836, 836,829,830,835,
+ 837,836,839,838, 839,816,843,838, 840,645,646,834, 841,833,837,838,
+ 842,812,840,841, 842,841,838,843, 86,747,748,749, 869,870,871,872,
+ 872,639,112,207, 88,87,86,749, 89,88,749,750, 656,657,14,13,
+ 90,89,750,753, 91,58,492,485, 910,927,952,953, 911,926,956,957,
+ 912,925,944,945, 913,924,948,949, 914,943,950,951, 915,808,864,929,
+ 918,941,958,959, 919,942,946,947, 92,91,485,484, 92,56,57,91,
+ 920,940,954,955, 924,919,992,1015, 925,858,988,1016, 926,920,993,1013,
+ 927,914,986,1014, 928,909,990,1008, 929,908,996,1007, 93,55,56,92,
+ 930,907,979,1003, 931,906,1009,1048, 932,905,981,1001,
+ 933,904,980,1002, 934,923,994,1011, 935,918,987,1012,
+ 936,922,995,1045, 937,917,989,1010, 938,921,977,1005,
+ 939,916,978,1004, 94,54,55,93, 940,910,983,999, 941,911,982,1000,
+ 942,912,985,997, 943,913,984,998, 944,925,1016,1017,
+ 945,944,1017,1018, 946,942,997,1019, 947,946,1019,1020,
+ 948,924,1015,1021, 949,948,1021,1022, 95,94,484,477, 95,53,54,94,
+ 950,943,998,1023, 951,950,1023,1024, 952,927,1014,1025,
+ 953,952,1025,1026, 954,940,999,1027, 955,954,1027,1028,
+ 956,926,1013,1029, 957,956,1029,1030, 958,941,1000,1031,
+ 959,958,1031,1032, 96,52,53,95, 960,935,1012,1033, 961,960,1033,1034,
+ 961,905,935,960, 962,932,1001,1035, 963,962,1035,1036,
+ 963,923,932,962, 964,934,1011,1037, 965,964,1037,1038,
+ 965,904,934,964, 966,933,1002,1039, 967,966,1039,1040,
+ 967,917,933,966, 968,937,1010,1041, 969,968,1041,1042,
+ 969,907,937,968, 97,51,52,96, 970,930,1003,1043, 971,970,1043,1044,
+ 971,922,930,970, 972,936,1045,1046, 973,972,1046,1047,
+ 973,906,936,972, 974,931,1048,1049, 975,974,1049,1050,
+ 975,916,931,974, 976,915,1069,1059, 977,921,1065,1055,
+ 978,916,975,1050, 979,907,969,1042, 98,50,51,97, 980,904,965,1038,
+ 981,905,961,1034, 982,911,957,1030, 983,910,953,1026,
+ 984,913,949,1022, 985,912,945,1018, 986,914,951,1024,
+ 987,918,959,1032, 989,917,967,1040, 990,909,1063,1053,
+ 992,919,947,1020, 993,920,955,1028, 994,923,963,1036,
+ 995,922,971,1044, 996,908,1067,1057, 997,992,1020,1019,
+ 998,986,1024,1023, 999,993,1028,1027,
+
+ /* The base of the knight */
+ SPIN,18,
+ 9510,0, 9510,756, SEAM, 9134,1129, 9447,1487,
+ 9447,1951, 9103,2371, STEPDOWN, 8211,3083,
+ 7167,4242, 6662,5664, 7040,7142, STEPUP, SEAM, 7935,8560,
+ STEPUP, BACKREF,0,
+
+ ENDOFDATA
+};
+
+static unsigned short bishop_data[] = {
+ VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790,
+ 4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532,
+ 1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154,
+ -1790,26960,4918, -2617,26960,4532, -3364,26960,4009,
+ -4009,26960,3364, -4532,26960,2617, -4918,26960,1790,
+ -5154,26960,909, -5233,26960,0, -5154,26960,-909, -4918,26960,-1790,
+ -4532,26960,-2617, -4009,26960,-3364, -3364,26960,-4009,
+ -2617,26960,-4532, -1790,26960,-4918, -909,26960,-5154, 0,26833,-5233,
+ 909,26960,-5154, 1790,26960,-4918, 2617,26960,-4532, 3364,26960,-4009,
+ 4009,26960,-3364, 4532,26960,-2617, 4918,26960,-1790, 5154,26960,-909,
+ SETBACKREF,1, 3812,31178,0, 3765,31144,729, 3624,31040,1435,
+ 3395,30872,2153, 3084,30642,2820, 2701,30360,3389, 2076,29899,4102,
+ 1492,30015,4340, 845,30033,4442, 0,30044,4511, -657,30063,4443,
+ -1481,30081,4214, -2190,30081,3884, -2830,30081,3435,
+ -3383,30081,2883, -3831,30081,2242, -4162,30081,1534,
+ -4364,30081,779, -4432,30081,0, -4364,30081,-779, -4162,30081,-1534,
+ -3831,30081,-2242, -3383,30081,-2883, -2830,30081,-3435,
+ -2190,30081,-3884, -1481,30081,-4214, -657,30063,-4443, 0,30044,-4511,
+ 845,30033,-4442, 1492,30015,-4340, 2076,29899,-4102, 2701,30360,-3388,
+ 3084,30642,-2820, 3395,30872,-2153, 3624,31040,-1435, 3765,31144,-729,
+ 240,28546,-4957, 884,29021,-4784, 1490,29467,-4537, 2076,29899,-4102,
+ 2701,30360,-3388, 3084,30642,-2820, 3395,30872,-2153,
+ 3624,31040,-1435, 3765,31144,-729, 2177,28477,4637, 1021,27605,5037,
+ 1021,27605,-5042, 2170,28478,-4644, 0,26833,-5233, 0,26833,5233,
+ -3153,28619,-3758, 240,28546,4957, 884,29021,4784, 2076,29899,4102,
+ 2701,30360,3389, 3084,30642,2820, 3395,30872,2153, 3624,31040,1435,
+ 3765,31144,729, -719,28582,4883, 4863,28569,977, 4560,28569,1925,
+ 4064,28569,2815, 3465,28569,3723, 2622,28569,4448, 2621,28583,-4401,
+ 3473,28588,-3691, 4064,28569,-2815, 4560,28569,-1925, 4863,28569,-977,
+ 4965,28569,0, -1678,28619,4610, -3153,28619,3758, -2453,28619,4248,
+ -4248,28619,2453, -3758,28619,3153, -4831,28619,852, -4906,28619,0,
+ -4831,28619,-852, -4610,28619,-1678, -4248,28619,-2453,
+ -3758,28619,-3153, -1678,28619,-4610, -2453,28619,-4248,
+ -644,27895,5037, -644,27895,-5037, -4610,28619,1678, -719,28582,-4883,
+ 2170,28478,-4644, 1021,27605,-5042, 1021,27605,5037, 2177,28477,4637,
+ 0,26833,-5233, 0,26833,5233, -644,27895,-5037, -644,27895,5037,
+ -644,27895,5037, -644,27895,-5037, 1490,29467,-4537, 884,29021,-4784,
+ 240,28546,-4957, 240,28546,4957, 884,29021,4784, 3812,31178,0,
+ 4349,30116,-867, 4197,30001,-1705, 3948,29813,-2492, 3610,29558,-3203,
+ 3193,29244,-3817, 2711,28880,-4315, 4349,30116,-867, 4197,30001,-1705,
+ 3948,29813,-2492, 3610,29558,-3203, 3193,29244,-3817,
+ 2711,28880,-4315, 1608,28047,-4906, 1608,28047,4901, 2711,28880,4310,
+ 3193,29244,3812, 3610,29558,3198, 3948,29813,2487, 4197,30001,1701,
+ 4349,30116,862, 4401,30155,-176, 1490,29467,4537, 1490,29467,4537,
+ 4401,30155,-176, 4349,30116,862, 4197,30001,1701, 3948,29813,2487,
+ 3610,29558,3198, 3193,29244,3812, 2711,28880,4310, 1608,28047,4901,
+ 1608,28047,-4906,
+
+ TRIANGLES, 8,127,9, 7,128,154, 2,98,3, 121,96,10, 121,10,9, 121,138,96,
+ 122,27,26, 27,126,28, 66,135,65, 162,42,43, 165,164,141, 80,140,95,
+ 103,151,150, 102,125,152, 101,155,128, 100,157,156, 124,137,122,
+ 33,105,34, 29,153,125, 26,124,122,
+
+ QUADS, 22,118,87,23, 21,117,118,22, 20,116,117,21, 19,115,116,20,
+ 18,114,115,19, 17,113,114,18, 16,123,113,17, 15,111,123,16, 14,112,111,15,
+ 13,109,112,14, 12,110,109,13, 11,108,110,12, 7,154,127,8, 110,108,47,48,
+ 135,136,64,65, 136,137,63,64, 138,139,44,45, 139,162,43,44, 109,110,48,49,
+ 147,161,107,106, 166,165,141,142, 167,166,142,143, 168,167,143,144,
+ 169,168,144,145, 112,109,49,50, 170,169,145,146, 171,81,84,172,
+ 111,112,50,51, 72,88,133,134, 73,89,88,72, 74,163,89,73, 75,90,163,74,
+ 76,91,90,75, 77,92,91,76, 78,93,92,77, 79,94,93,78, 80,95,94,79,
+ 81,170,146,84, 82,171,172,83, 86,82,83,85, 130,129,131,132, 123,111,51,52,
+ 113,123,52,53, 114,113,53,54, 115,114,54,55, 116,115,55,56, 117,116,56,57,
+ 118,117,57,58, 87,118,58,59, 120,87,59,60, 119,120,60,61, 107,161,160,97,
+ 106,107,0,35, 105,148,147,106, 105,106,35,34, 104,149,148,105,
+ 104,105,33,32, 103,150,149,104, 103,104,32,31, 102,152,151,103,
+ 102,103,31,30, 101,128,7,6, 100,101,6,5, 100,156,155,101, 99,100,5,4,
+ 99,158,157,100, 98,99,4,3, 98,159,158,99, 97,98,2,1, 97,160,159,98,
+ 96,108,11,10, 96,138,45,46, 124,119,61,62, 47,108,96,46, 63,137,124,62,
+ 0,107,97,1, 29,125,102,30, 28,126,153,29, 25,119,124,26, 24,120,119,25,
+ 23,87,120,24,
+
+ /* Everything above the slit */
+ SPIN,18,
+ 8870,0,8870,731,SEAM,8519,1091,8811,1438,8811,1886,8626,2292,
+ STEPDOWN,6989,2980,5927,4133,5548,5735,
+ STEPUP,5388,7642,5228,7807,STEPDOWN,4427,8149,4057,8434,
+ 3493,9185,2816,13524,SEAM,2690,18532,5301,18690,
+ STEPUP,6810,19005,6861,19277,6804,19625,STEPDOWN,6502,19845,
+ SEAM,4305,20394,STEPUP,4796,20522,4924,20759,4778,20979,
+ STEPDOWN,SEAM,3727,21207,SEAM,3726,22181,STEPUP,SEAM,4546,22705,
+ SEAM,3846,23385,4718,24227,5226,25516,STEPUP,BACKREF,0,
+
+ /* Everything below the slit */
+ SPIN,36,
+ BACKREF,1,STEPDOWN,3548,31590,STEPDOWN,2724,32633,SEAM,1581,33500,
+ 2013,33901,STEPUP,2281,34500,2281,34936,STEPDOWN,1947,35372,
+ STEPDOWN,1233,35734,STEPDOWN,0,35891,
+
+ ENDOFDATA
+};
+
+static unsigned short king_data[] = {
+ SPIN,20,
+ 11378,0,11378,856,SEAM,10928,1152,
+ 11302,1684,11302,2209,11065,2684,
+ STEPDOWN,8964,3490,7603,4841,7116,6717,
+ STEPUP,6911,8950,6705,9144,STEPDOWN,5678,9545,5204,9878,
+ 4481,10758,3696,14808,SEAM,3065,26979,
+ 5813,27155,STEPUP,7145,27507,7424,27812,7352,28288,7131,28533,
+ 5477,28882,5397,29010,5406,29363,4903,29934,
+ STEPDOWN,SEAM,3944,30227,
+ SEAM,3974,31478,4703,31849,STEPUP,4832,32092,4756,32370,
+ SEAM,3975,32620,6899,39055,6877,39351,2833,39514,
+ 2786,39612,2786,39807,2734,39856,STEPDOWN,STEPDOWN,2590,39905,0,39969,
+ /* The cross */
+ SETBACKREF,0,
+ QUADSTRIP,-1613,39866,0,-1543,39866,702,-1651,40481,0,-1580,40590,702,
+ -1531,40917,0,-1465,41008,702,
+ QUADSTRIP,-1531,40917,0,-1465,41008,702,-2956,41104,0,-2829,41187,702,
+ -3075,41520,0,-2943,41585,702,-3075,43849,0,-2943,43805,702,
+ -2862,44347,0,-2739,44282,702,-1116,44636,0,-1068,44554,702,
+ QUADSTRIP,-1116,44636,0,-1068,44554,702,-1102,45692,0,-1054,45576,702,
+ -973,45829,0,-973,45747,702,973,45829,0,973,45747,702,1102,45692,0,
+ 1054,45576,702,1116,44636,0,1068,44554,702,
+ QUADSTRIP,1116,44636,0,1068,44554,702,2862,44347,0,2739,44282,702,
+ 3075,43849,0,2943,43805,702,3075,41520,0,2943,41585,702,2956,41104,0,
+ 2829,41187,702,1531,40917,0,1465,41008,702,
+ QUADSTRIP,1531,40917,0,1465,41008,702,1651,40481,0,1580,40590,702,
+ 1613,39866,0,1543,39866,702,
+ QUADSTRIP,-1543,39866,702,1543,39866,702,-1580,40590,702,
+ 1580,40590,702,-1465,41008,702,1465,41008,702,-2829,41187,702,
+ 2829,41187,702,-2943,41585,702,2943,41585,702,-2943,43805,702,
+ 2943,43805,702,-2739,44282,702,2739,44282,702,-1068,44554,702,
+ 1068,44554,702,-1054,45576,702,1054,45576,702,-973,45747,702,
+ 973,45747,702,
+ QUADSTRIP,-1543,39866,-702,BACKREF,0,0,-1580,40590,-702,BACKREF,0,2,
+ -1465,41008,-702,BACKREF,0,4,
+ QUADSTRIP,-1465,41008,-702,BACKREF,0,6,-2829,41187,-702,BACKREF,0,8,
+ -2943,41585,-702,BACKREF,0,10,-2943,43805,-702,BACKREF,0,12,
+ -2739,44282,-702,BACKREF,0,14,-1068,44554,-702,BACKREF,0,16,
+ QUADSTRIP,-1068,44554,-702,BACKREF,0,18,-1054,45576,-702,
+ BACKREF,0,20,-973,45747,-702,BACKREF,0,22,973,45747,-702,BACKREF,0,24,
+ 1054,45576,-702,BACKREF,0,26,1068,44554,-702,BACKREF,0,28,
+ QUADSTRIP,1068,44554,-702,BACKREF,0,30,2739,44282,-702,
+ BACKREF,0,32,2943,43805,-702,BACKREF,0,34,2943,41585,-702,BACKREF,0,36,
+ 2829,41187,-702,BACKREF,0,38,1465,41008,-702,BACKREF,0,40,
+ QUADSTRIP,1465,41008,-702,BACKREF,0,42,1580,40590,-702,
+ BACKREF,0,44,1543,39866,-702,BACKREF,0,46,
+ QUADSTRIP,1543,39866,-702,-1543,39866,-702,1580,40590,-702,
+ -1580,40590,-702,1465,41008,-702,-1465,41008,-702,2829,41187,-702,
+ -2829,41187,-702,2943,41585,-702,-2943,41585,-702,2943,43805,-702,
+ -2943,43805,-702,2739,44282,-702,-2739,44282,-702,1068,44554,-702,
+ -1068,44554,-702,1054,45576,-702,-1054,45576,-702,973,45747,-702,
+ -973,45747,-702,
+ ENDOFDATA
+};
+
+static unsigned short queen_data[] = {
+ SPIN,24,
+ 11092,0,11092,914,SEAM,10653,1284,
+ 11018,1798,11018,2358,10787,2866,
+ STEPDOWN,8739,3726,7412,5168,6937,7171,
+ STEPUP,6737,9556,6537,9762,STEPDOWN,5536,10191,5073,10546,
+ 4368,11485,3678,15137,SEAM,3259,26879,
+ 5966,27091,STEPUP,7332,27515,7619,27882,7545,28455,7317,28751,
+ 5654,29177,5538,29326,5542,29982,5377,30278,
+ STEPDOWN,SEAM,4194,30585,
+ SEAM,4226,31822,5002,32218,STEPUP,5139,32477,5058,32774,
+ SEAM,4227,33040,STEPDOWN,4421,34778,5042,36612,5874,38429,
+ STEPUP,SEAM,PATTERN,3,6018,39660,6018,39660,6804,39977,
+ SEAM,PATTERN,3,5015,41139,5015,41139,5673,41460,
+ SEAM,4349,40044,
+ STEPDOWN,SEAM,1381,41188,
+ 1396,42332,STEPDOWN,1082,43072,481,43476,0,43543,
+ ENDOFDATA
+};
+
+static unsigned short pawn_data[] = {
+ SPIN,16,
+ 7395,0,7395,609,
+ SEAM,7102,910,7345,1199,7345,1572,7191,1910,
+ STEPDOWN,5826,2484,4941,3446,4625,4781,
+ STEPUP,4492,6371,4358,6508,
+ STEPDOWN,3691,6794,2912,7657,2473,10091,
+ SEAM,2100,15344,
+ STEPUP,4518,15697,4695,15900,4649,16218,4509,16382,
+ STEPDOWN,SEAM,3150,16755,STEPUP,3858,17678,4303,18752,4455,19905,
+ 4303,21058,3858,22132,
+ STEPDOWN,3150,23055,2227,23763,STEPDOWN,1153,24208,0,24360,
+ ENDOFDATA
+};
+
+static unsigned short rook_data[] = {
+ SPIN,20,
+ 9374,0,9374,756,SEAM,9003,1062,9311,1487,
+ 9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595,
+ 6167,7812,6138,8066,5926,8460,5216,12608,
+ SEAM,4883,21434,
+ SEAM,5140,21608,
+ SEAM,5176,22792,
+ SEAM,5953,23030,
+/* SEAM,PATTERN,5,6103,26819,6143,27971,6143,27971,6143,27971,6103,26819, */
+/* SEAM,PATTERN,5, 5020,26819,5053,27971,5053,27971,5053,27971, 5020,26819, */
+ SETBACKREF,0,
+ 6103,26819,
+
+ SETBACKREF,1,
+ SPIN,20,
+ 5020,26819,5020,26114,4906,25858,0,25666,
+
+ POLARQUADSTRIP,20,BACKREF,0,1,1,6143,27971,BACKREF,0,2,2,6143,27971,
+ BACKREF,0,3,3,6143,27971,BACKREF,0,4,4,6143,27971,
+ POLARQUADSTRIP,20,BACKREF,0,6,6,6143,27971,BACKREF,0,7,7,6143,27971,
+ BACKREF,0,8,8,6143,27971,BACKREF,0,9,9,6143,27971,
+ POLARQUADSTRIP,20,BACKREF,0,11,11,6143,27971,BACKREF,0,12,12,6143,27971,
+ BACKREF,0,13,13,6143,27971,BACKREF,0,14,14,6143,27971,
+ POLARQUADSTRIP,20,BACKREF,0,16,16,6143,27971,BACKREF,0,17,17,6143,27971,
+ BACKREF,0,18,18,6143,27971,BACKREF,0,19,19,6143,27971,
+
+ POLARQUADSTRIP,20,1,5053,27971,BACKREF,1,1,2,5053,27971,BACKREF,1,2,
+ 3,5053,27971,BACKREF,1,3,4,5053,27971,BACKREF,1,4,
+ POLARQUADSTRIP,20,6,5053,27971,BACKREF,1,6,7,5053,27971,BACKREF,1,7,
+ 8,5053,27971,BACKREF,1,8,9,5053,27971,BACKREF,1,9,
+ POLARQUADSTRIP,20,11,5053,27971,BACKREF,1,11,12,5053,27971,BACKREF,1,12,
+ 13,5053,27971,BACKREF,1,13,14,5053,27971,BACKREF,1,14,
+ POLARQUADSTRIP,20,16,5053,27971,BACKREF,1,16,17,5053,27971,BACKREF,1,17,
+ 18,5053,27971,BACKREF,1,18,19,5053,27971,BACKREF,1,19,
+
+ POLARQUADSTRIP,20,1,5020,26819,1,6103,26819,
+ 0,5020,26819,0,6103,26819,19,5020,26819,19,6103,26819,
+ POLARQUADSTRIP,20,6,5020,26819,6,6103,26819,
+ 5,5020,26819,5,6103,26819,4,5020,26819,4,6103,26819,
+ POLARQUADSTRIP,20,11,5020,26819,11,6103,26819,
+ 10,5020,26819,10,6103,26819,9,5020,26819,9,6103,26819,
+ POLARQUADSTRIP,20,16,5020,26819,16,6103,26819,
+ 15,5020,26819,15,6103,26819,14,5020,26819,14,6103,26819,
+
+ POLARQUADSTRIP,20,1,5053,27971,1,6143,27971,1,5020,26819,1,6103,26819,
+ POLARQUADSTRIP,20,4,5020,26819,4,6103,26819,4,5053,27971,4,6143,27971,
+ POLARQUADSTRIP,20,6,5053,27971,6,6143,27971,6,5020,26819,6,6103,26819,
+ POLARQUADSTRIP,20,9,5020,26819,9,6103,26819,9,5053,27971,9,6143,27971,
+ POLARQUADSTRIP,20,11,5053,27971,11,6143,27971,11,5020,26819,11,6103,26819,
+ POLARQUADSTRIP,20,14,5020,26819,14,6103,26819,14,5053,27971,14,6143,27971,
+ POLARQUADSTRIP,20,16,5053,27971,16,6143,27971,16,5020,26819,16,6103,26819,
+ POLARQUADSTRIP,20,19,5020,26819,19,6103,26819,19,5053,27971,19,6143,27971,
+
+ POLARQUADSTRIP,20,1,6143,27971,1,5053,27971,2,6143,27971,2,5053,27971,
+ 3,6143,27971,3,5053,27971,4,6143,27971,4,5053,27971,
+ POLARQUADSTRIP,20,6,6143,27971,6,5053,27971,7,6143,27971,7,5053,27971,
+ 8,6143,27971,8,5053,27971,9,6143,27971,9,5053,27971,
+ POLARQUADSTRIP,20,11,6143,27971,11,5053,27971,12,6143,27971,12,5053,27971,
+ 13,6143,27971,13,5053,27971,14,6143,27971,14,5053,27971,
+ POLARQUADSTRIP,20,16,6143,27971,16,5053,27971,17,6143,27971,17,5053,27971,
+ 18,6143,27971,18,5053,27971,19,6143,27971,19,5053,27971,
+
+ ENDOFDATA
+};
+
+static double piece_size;
+
+static int
+enumerate_ring_vertices( int steps, unsigned short *data, void *h,
+ void (*process_vertex)(void *h,double x,double y,double z))
+{
+ int patlen = 1,i;
+ unsigned short *pts = data;
+ double dtheta = M_PI * 2 / steps;
+
+ if( data[0] == PATTERN) {
+ patlen = data[1];
+ pts += 2;
+ }
+
+ if( pts[0] == 0) steps = 1;
+
+ for( i=0; i < steps; i++) {
+ double r = pts[(i % patlen)*2] * piece_size;
+ double y = pts[(i % patlen)*2+1] * piece_size;
+ double theta = dtheta * i;
+
+ process_vertex( h, r * cos(theta), y, r * sin(theta));
+ }
+
+ return pts + patlen * 2 - data;
+}
+
+static void
+enumerate_vertices( unsigned short *data, void *h,
+ void (*process_vertex)(void *h,double x,double y,double z))
+{
+ while(1) {
+ if( data[0] == SPIN) {
+ int steps;
+ steps = data[1];
+ data += 2;
+
+ while(data[0] <= SEAM) {
+ if( data[0] == SETBACKREF || data[0] == BACKREF) {
+ data += 2;
+ continue;
+ } else if( data[0] == STEPUP) {
+ steps *= 2;
+ data++;
+ continue;
+ } else if( data[0] == STEPDOWN) {
+ steps /= 2;
+ data++;
+ continue;
+ } else if( data[0] == SEAM) {
+ data ++;
+ /* Visit seam vertices twice */
+ enumerate_ring_vertices( steps, data,
+ h, process_vertex);
+ data += enumerate_ring_vertices( steps, data,
+ h, process_vertex);
+ } else {
+ data += enumerate_ring_vertices( steps, data,
+ h, process_vertex);
+ }
+ }
+ } else if( data[0] == POLARQUADSTRIP) {
+ int steps = data[1];
+ double dtheta;
+ data += 2;
+
+ dtheta = M_PI * 2 / steps;
+
+ while(data[0] <= SEAM) {
+ if( data[0] != BACKREF) {
+ double theta = dtheta * data[0];
+ double r = data[1] * piece_size;
+ double y = data[2] * piece_size;
+ process_vertex( h, r * cos(theta), y, r * sin(theta));
+ }
+ data += 3;
+ }
+ } else if( data[0] == QUADSTRIP || data[0] == VERTICES) {
+ data ++;
+
+ while(data[0] <= SEAM) {
+ if( data[0] == SETBACKREF) {
+ data += 2;
+ continue;
+ }
+
+ if( data[0] != BACKREF) {
+ double x = (signed short)data[0] * piece_size;
+ double y = data[1] * piece_size;
+ double z = (signed short)data[2] * piece_size;
+ process_vertex( h, x, y, z);
+ }
+ data += 3;
+ }
+ } else if( data[0] == QUADS || data[0] == TRIANGLES) {
+ data ++;
+ while( data[0] <= SEAM) data++;
+ } else {
+ break;
+ }
+ }
+}
+
+static void
+enumerate_ring_faces( int basevertex, int steps,
+ int prevbase, int prevsteps, void *h, int *count_ret,
+ void (*process_face)(void *h,int v1,int v2,int v3,int v4))
+{
+ int i,j;
+
+ if( steps == 1) {
+ for( i=0; i < prevsteps; i++) {
+ process_face( h,
+ basevertex,
+ prevbase + i,
+ prevbase + (i ? i-1 : prevsteps-1),
+ -1);
+ if (count_ret) (*count_ret)++;
+ }
+ } else if( steps == prevsteps) {
+ for( i=0; i < steps; i++) {
+ process_face( h,
+ basevertex + i,
+ prevbase + i,
+ prevbase + (i ? i-1 : steps-1),
+ basevertex + (i ? i-1 : steps-1));
+ if (count_ret) (*count_ret)++;
+ }
+ } else {
+ j = 0;
+ for( i=0;; i++) {
+ while( j < prevsteps && steps*(1+2*j) < prevsteps*(1+2*i)) {
+ process_face( h,
+ basevertex + (i%steps),
+ prevbase + ((j+1)%prevsteps),
+ prevbase + j,
+ -1);
+ if (count_ret) (*count_ret)++;
+ j++;
+ }
+ if( i == steps) break;
+ process_face( h,
+ basevertex + i,
+ basevertex + ((i+1)%steps),
+ prevbase + (j%prevsteps),
+ -1);
+ if (count_ret) (*count_ret)++;
+ }
+ }
+}
+
+static void
+enumerate_faces( unsigned short *data, void *h, int *count_ret,
+ void (*process_face)(void *h,int v1,int v2,int v3,int v4))
+{
+ int basevertex = 0, startofvertices = 0;
+ int backrefs[5];
+
+ while(1) {
+ if( data[0] == SPIN) {
+ int steps;
+ int prevsteps = -1,prevbase = 0;
+
+ steps = data[1];
+ data += 2;
+
+ while( data[0] <= SEAM) {
+ if( data[0] == SETBACKREF) {
+ backrefs[data[1]] = basevertex;
+ data += 2;
+ continue;
+ }
+
+ if( data[0] == STEPUP) {
+ steps *= 2;
+ data++;
+ continue;
+ } else if( data[0] == STEPDOWN) {
+ steps /= 2;
+ data++;
+ continue;
+ }
+
+ if( data[0] == BACKREF) {
+ if( prevsteps != -1) {
+ enumerate_ring_faces( backrefs[data[1]], steps,
+ prevbase, prevsteps, h,
+ count_ret, process_face);
+ }
+
+ prevbase = backrefs[data[1]];
+ data += 2;
+ } else {
+ int isseam = 0;
+ if( data[0] == SEAM) {
+ isseam = 1;
+ data++;
+ }
+
+ if( data[0] == PATTERN) {
+ data += 2 + data[1]*2;
+ } else {
+ if( data[0] == 0) steps = 1;
+ data += 2;
+ }
+
+ if( prevsteps != -1) {
+ enumerate_ring_faces( basevertex, steps,
+ prevbase, prevsteps, h,
+ count_ret, process_face);
+ }
+
+ if( isseam) basevertex += steps;
+ prevbase = basevertex;
+ basevertex += steps;
+ }
+
+ prevsteps = steps;
+ }
+ } else if( data[0] == POLARQUADSTRIP || data[0] == QUADSTRIP) {
+ int v0=-1,v1=0,v2,v3;
+ if( data[0] == POLARQUADSTRIP) data += 2;
+ else data ++;
+ while(data[0] <= SEAM) {
+ if( data[0] == BACKREF) {
+ v2 = backrefs[data[1]]+data[2];
+ } else {
+ v2 = basevertex;
+ basevertex++;
+ }
+ if( data[3] == BACKREF) {
+ v3 = backrefs[data[4]]+data[5];
+ } else {
+ v3 = basevertex;
+ basevertex++;
+ }
+ data += 6;
+ if( v0 != -1) {
+ process_face( h, v0, v1, v3, v2);
+ if (count_ret) (*count_ret)++;
+ }
+ v0 = v2;
+ v1 = v3;
+ }
+ } else if( data[0] == VERTICES) {
+ data ++;
+ startofvertices = basevertex;
+ while( data[0] <= SEAM) {
+ if( data[0] == SETBACKREF) {
+ backrefs[data[1]] = basevertex;
+ data += 2;
+ continue;
+ }
+ data += 3;
+ basevertex ++;
+ }
+ } else if( data[0] == QUADS) {
+ data ++;
+ while( data[0] <= SEAM) {
+ process_face( h,
+ data[0] + startofvertices,
+ data[1] + startofvertices,
+ data[2] + startofvertices,
+ data[3] + startofvertices);
+ if (count_ret) (*count_ret)++;
+ data += 4;
+ }
+ } else if( data[0] == TRIANGLES) {
+ data ++;
+ while( data[0] <= SEAM) {
+ process_face( h,
+ data[0] + startofvertices,
+ data[1] + startofvertices,
+ data[2] + startofvertices, -1);
+ if (count_ret) (*count_ret)++;
+ data += 3;
+ }
+ } else {
+ break;
+ }
+ }
+}
+
+static void
+normalize( float v[3]) {
+ float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
+
+ if( d == 0.0) {
+ /* The direction is undefined - normalize it anyway */
+ v[0] = 1.0;
+ v[1] = 0.0;
+ v[2] = 0.0;
+ return;
+ }
+
+ v[0] /= d;
+ v[1] /= d;
+ v[2] /= d;
+}
+
+static void
+normcrossprod( float v1[3], float v2[3], float out[3])
+{
+ out[0] = v1[1] * v2[2] - v1[2] * v2[1];
+ out[1] = v1[2] * v2[0] - v1[0] * v2[2];
+ out[2] = v1[0] * v2[1] - v1[1] * v2[0];
+ normalize( out);
+}
+
+#define vectordiff(v1,v2,out) \
+ ((out)[0] = (v1)[0] - (v2)[0], \
+ (out)[1] = (v1)[1] - (v2)[1], \
+ (out)[2] = (v1)[2] - (v2)[2])
+
+#define vectoradd(v1,v2) \
+ ((v1)[0] += (v2)[0], \
+ (v1)[1] += (v2)[1], \
+ (v1)[2] += (v2)[2])
+
+static int numverts;
+static float *vertices;
+static float *normals;
+
+static void
+count_vertex( void *dummy, double x, double y, double z)
+{
+ numverts++;
+}
+
+static void
+add_normal( void *dummy, int v1, int v2, int v3, int v4)
+{
+ float surfnormal[3],d1[3],d2[3];
+
+ if( v4 == -1) {
+ vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1);
+ vectordiff( vertices + 3 * v3, vertices + 3 * v1, d2);
+ normcrossprod( d1, d2, surfnormal);
+ vectoradd( normals + 3 * v1, surfnormal);
+ vectoradd( normals + 3 * v2, surfnormal);
+ vectoradd( normals + 3 * v3, surfnormal);
+ } else {
+ vectordiff( vertices + 3 * v2, vertices + 3 * v1, d1);
+ vectordiff( vertices + 3 * v4, vertices + 3 * v1, d2);
+ normcrossprod( d1, d2, surfnormal);
+ vectoradd( normals + 3 * v1, surfnormal);
+ vectordiff( vertices + 3 * v3, vertices + 3 * v2, d1);
+ vectordiff( vertices + 3 * v1, vertices + 3 * v2, d2);
+ normcrossprod( d1, d2, surfnormal);
+ vectoradd( normals + 3 * v2, surfnormal);
+ vectordiff( vertices + 3 * v4, vertices + 3 * v3, d1);
+ vectordiff( vertices + 3 * v2, vertices + 3 * v3, d2);
+ normcrossprod( d1, d2, surfnormal);
+ vectoradd( normals + 3 * v3, surfnormal);
+ vectordiff( vertices + 3 * v1, vertices + 3 * v4, d1);
+ vectordiff( vertices + 3 * v3, vertices + 3 * v4, d2);
+ normcrossprod( d1, d2, surfnormal);
+ vectoradd( normals + 3 * v4, surfnormal);
+ }
+}
+
+static void
+collect_vertex( void *curvert, double x, double y, double z)
+{
+ (*(float**)curvert)[0] = x;
+ (*(float**)curvert)[1] = y;
+ (*(float**)curvert)[2] = z;
+ (*(float**)curvert) += 3;
+}
+
+static void
+draw_face( void *dummy, int v1, int v2, int v3, int v4)
+{
+ glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS);
+ glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]);
+ glVertex3f( vertices[v1*3], vertices[v1*3+1], vertices[v1*3+2]);
+ glNormal3f( normals[v2*3], normals[v2*3+1], normals[v2*3+2]);
+ glVertex3f( vertices[v2*3], vertices[v2*3+1], vertices[v2*3+2]);
+ glNormal3f( normals[v3*3], normals[v3*3+1], normals[v3*3+2]);
+ glVertex3f( vertices[v3*3], vertices[v3*3+1], vertices[v3*3+2]);
+ if( v4 != -1) {
+ glNormal3f( normals[v4*3], normals[v4*3+1], normals[v4*3+2]);
+ glVertex3f( vertices[v4*3], vertices[v4*3+1], vertices[v4*3+2]);
+ }
+ glEnd();
+}
+
+static int
+draw_piece( unsigned short *piece_data)
+{
+ int i;
+ float *curvert;
+ int count = 0;
+
+ /* Count how many vertices this piece has */
+ enumerate_vertices( piece_data, NULL, count_vertex);
+
+ /* Allocate memory for the vertices and for the vertex normals */
+ vertices = malloc( sizeof(float) * 3 * numverts);
+ normals = malloc( sizeof(float) * 3 * numverts);
+ if( !vertices || !normals) exit(1);
+
+ /* Collect the vertex coordinates */
+ curvert = vertices;
+ enumerate_vertices( piece_data, &curvert, collect_vertex);
+
+ /* Zero out the normals */
+ for( i=0; i < numverts * 3; i++) {
+ normals[i] = 0.0;
+ }
+
+ /* Add up all the face normals at each vertex */
+ enumerate_faces( piece_data, NULL, NULL, add_normal);
+
+ /* Normalize the vertex normals */
+ for( i=0; i < numverts; i++) {
+ normalize( normals + i * 3);
+ }
+
+ /* Now draw the faces */
+ enumerate_faces( piece_data, NULL, &count, draw_face);
+
+ free( normals);
+ free( vertices);
+
+ if (count <= 1) abort();
+ return count;
+}
+
+void chessmodels_gen_lists( int classic, int poly_count[PIECES]) {
+
+ Bool queen_only_p = classic < 0;
+ if (classic < 0) classic = 0;
+
+ piece_size = classic ? 0.095 / 100 : 0.3 / 8192;
+
+ glGenLists (20); /* this is horrible! List numbers are hardcoded! */
+
+ glNewList(QUEEN, GL_COMPILE);
+ poly_count[QUEEN] = draw_piece( classic ? classic_queen_data : queen_data);
+ glEndList();
+
+ if (queen_only_p) return;
+
+ glNewList(KING, GL_COMPILE);
+ poly_count[KING] = draw_piece( classic ? classic_king_data : king_data);
+ glEndList();
+
+ glNewList(BISHOP, GL_COMPILE);
+ poly_count[BISHOP] = draw_piece( classic ? classic_bishop_data : bishop_data);
+ glEndList();
+
+ glNewList(KNIGHT, GL_COMPILE);
+ poly_count[KNIGHT] = draw_piece( classic ? classic_knight_data : knight_data);
+ glEndList();
+
+ glNewList(ROOK, GL_COMPILE);
+ poly_count[ROOK] = draw_piece( classic ? classic_rook_data : rook_data);
+ glEndList();
+
+ glNewList(PAWN, GL_COMPILE);
+ poly_count[PAWN] = draw_piece( classic ? classic_pawn_data : pawn_data);
+ glEndList();
+}
diff --git a/hacks/glx/chessmodels.h b/hacks/glx/chessmodels.h
new file mode 100644
index 0000000..6e41e22
--- /dev/null
+++ b/hacks/glx/chessmodels.h
@@ -0,0 +1,44 @@
+/*
+ * models for the xss chess screensavers
+ * hacked from:
+ *
+ * glChess - A 3D chess interface
+ *
+ * Copyright (C) 2006 John-Paul Gignac
+ *
+ * Copyright (C) 2002 Robert Ancell
+ * Michael Duelli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ugggggggly */
+#define PIECES 7
+#define NONE 0
+#define KING 1
+#define QUEEN 2
+#define BISHOP 3
+#define KNIGHT 4
+#define ROOK 5
+#define PAWN 6
+#define BKING 8
+#define BQUEEN 9
+#define BBISHOP 10
+#define BKNIGHT 11
+#define BROOK 12
+#define BPAWN 13
+
+extern void chessmodels_gen_lists( int classic, int poly_count[PIECES]);
+
diff --git a/hacks/glx/circuit.c b/hacks/glx/circuit.c
new file mode 100644
index 0000000..744e4b6
--- /dev/null
+++ b/hacks/glx/circuit.c
@@ -0,0 +1,2094 @@
+/*
+ * circuit - Random electronic components floating around
+ *
+ * version 1.4
+ *
+ * Since version 1.1: added to-220 transistor, added fuse
+ * Since version 1.2: random display digits, LED improvements (flickering)
+ * Since version 1.3: ICs look better, font textures, improved normals to
+ * eliminate segmenting on curved surfaces, speedups
+ * Since version 1.4: Added RCA connector, 3.5mm connector, slide switch,
+ * surface mount, to-92 markings. Fixed ~5min crash.
+ * Better LED illumination. Other minor changes.
+ *
+ * Copyright (C) 2001-2015 Ben Buxton (bb@cactii.net)
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* Written over a few days in a (successful) bid to learn GL coding
+ *
+ * -seven option is dedicated to all the Slarkeners
+ *
+ * This hack uses lookup tables for sin, cos and tan - it can do a lot
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*suppressRotationAnimation: True\n" \
+ "*componentFont: -*-courier-bold-r-normal-*-*-140-*-*-*-*-*-*"
+
+# define release_circuit 0
+# define circuit_handle_event xlockmore_no_events
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#define DEF_SPIN "True"
+#define DEF_SEVEN "False"
+#define DEF_PARTS "10"
+#define DEF_ROTATESPEED "1"
+#define DEF_LIGHT "True"
+
+/* lifted from lament.c */
+#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+
+#ifdef USE_GL
+
+#include "texfont.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static int maxparts;
+static int rotatespeed;
+static int spin;
+static int uselight;
+static int seven;
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static XrmOptionDescRec opts[] = {
+ {"-parts", ".circuit.parts", XrmoptionSepArg, 0 },
+ {"-rotate-speed", ".circuit.rotatespeed", XrmoptionSepArg, 0 },
+ {"+spin", ".circuit.spin", XrmoptionNoArg, "false" },
+ {"-spin", ".circuit.spin", XrmoptionNoArg, "true" },
+ {"+light", ".circuit.light", XrmoptionNoArg, "false" },
+ {"-light", ".circuit.light", XrmoptionNoArg, "true" },
+ {"+seven", ".circuit.seven", XrmoptionNoArg, "false" },
+ {"-seven", ".circuit.seven", XrmoptionNoArg, "true" },
+};
+
+static argtype vars[] = {
+ {&maxparts, "parts", "Parts", DEF_PARTS, t_Int},
+ {&rotatespeed, "rotatespeed", "Rotatespeed", DEF_ROTATESPEED, t_Int},
+ {&spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&uselight, "light", "Light", DEF_LIGHT, t_Bool},
+ {&seven, "seven", "Seven", DEF_SEVEN, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt circuit_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct circuit_description =
+{"circuit", "init_circuit", "draw_circuit", NULL,
+ "draw_circuit", "init_circuit", "free_circuit", &circuit_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Flying electronic components", 0, NULL};
+
+#endif
+
+#define MAX_COMPONENTS 400
+#define MOVE_MULT 0.02
+
+static float f_rand(void)
+{
+ return ((float)RAND(10000)/(float)10000);
+}
+
+#define RAND_RANGE(min, max) ((min) + (max - min) * f_rand())
+
+/* Represents a band on a resistor/diode/etc */
+typedef struct {
+ float pos; /* relative position from start/previous band */
+ GLfloat r, g, b; /* colour of the band */
+ float len; /* length as a fraction of total length */
+} Band;
+
+typedef struct {
+ Band *b1, *b2, *b3, *b4; /* bands */
+ int b[4];
+} Resistor;
+
+typedef struct {
+ Band *band;
+ GLfloat r, g, b; /* body colour */
+} Diode;
+
+static const char * const transistortypes[] = {
+ "TIP2955",
+ "TIP32C",
+ "LM 350T",
+ "IRF730",
+ "ULN2577",
+ "7805T",
+ "7912T",
+ "TIP120",
+ "2N6401",
+ "BD239",
+ "2SC1590",
+ "MRF485",
+ "SC141D"
+};
+
+static const char * const to92types[] = {
+ "C\n548",
+ "C\n848",
+ "74\nL05",
+ "C\n858",
+ "BC\n212L",
+ "BC\n640",
+ "BC\n337",
+ "BC\n338",
+ "S817",
+ "78\nL12",
+ "TL\n431",
+ "LM\n35DZ",
+};
+
+static const char * const smctypes[] = {
+ "1M-",
+ "1K",
+ "1F",
+ "B10",
+ "S14",
+ "Q3",
+ "4A"
+};
+
+typedef struct {
+ int type; /* package type. 0 = to-92, 1 = to-220 */
+ const char *text;
+} Transistor;
+
+typedef struct {
+ GLfloat r,g,b; /* LED colour */
+ int light; /* are we the light source? */
+} LED;
+
+typedef struct {
+ int type; /* 0 = electro, 1 = ceramic */
+ float width; /* width of an electro/ceramic */
+ float length; /* length of an electro */
+} Capacitor;
+
+/* 3.5 mm plug */
+typedef struct {
+ int blah;
+} ThreeFive;
+
+/* slide switch */
+typedef struct {
+ int position;
+} Switch;
+
+typedef struct {
+ int pins;
+ const char *val;
+} ICTypes;
+
+static const ICTypes ictypes[] = {
+ {8, "NE 555"},
+ {8, "LM 386N"},
+ {8, "ADC0831"},
+ {8, "LM 383T"},
+ {8, "TL071"},
+ {8, "LM 311"},
+ {8, "LM393"},
+ {8, "LM 3909"},
+
+ {14, "LM 380N"},
+ {14, "NE 556"},
+ {14, "TL074"},
+ {14, "LM324"},
+ {14, "LM339"},
+ {14, "MC1488"},
+ {14, "MC1489"},
+ {14, "LM1877-9"},
+ {14, "4011"},
+ {14, "4017"},
+ {14, "4013"},
+ {14, "4024"},
+ {14, "4066"},
+
+ {16, "4076"},
+ {16, "4049"},
+ {16, "4094"},
+ {16, "4043"},
+ {16, "4510"},
+ {16, "4511"},
+ {16, "4035"},
+ {16, "RS232"},
+ {16, "MC1800"},
+ {16, "ULN2081"},
+ {16, "UDN2953"},
+
+ {24, "ISD1416P"},
+ {24, "4515"},
+ {24, "TMS6264L"},
+ {24, "MC146818"}
+};
+
+typedef struct {
+ int type; /* 0 = DIL, 1 = flat square */
+ int pins;
+ char text[100];
+} IC;
+
+/* 7 segment display */
+
+typedef struct {
+ int value; /* displayed number */
+} Disp;
+
+typedef struct {
+ GLfloat l, w;
+} Fuse;
+
+typedef struct {
+ GLfloat l, w;
+ int col;
+} RCA;
+
+typedef struct {
+ GLfloat x, y, z; /* current co-ordinates */
+ GLfloat dx, dy, dz; /* current direction */
+ GLfloat rotx, roty, rotz; /* rotation vector */
+ GLfloat drot; /* rotation velocity (degrees per frame) */
+ int norm; /* Normalize this component (for shine) */
+ int rdeg; /* current rotation degrees */
+ int angle; /* angle about the z axis */
+ int alpha; /* 0 if not a transparent component */
+ int type; /* 0 = resistor, 1 = diode, 2 = transistor, 3 = LED, 4 = cap, 5=IC,
+ 6 = 7 seg disp */
+ void * c; /* pointer to the component */
+} Component;
+
+/* standard colour codes */
+
+static const GLfloat colorcodes [12][3] = {
+ {0.0,0.0,0.0}, /* black 0 */
+ {0.49,0.25,0.08}, /* brown 1 */
+ {1.0,0.0,0.0}, /* red 2 */
+ {1.0,0.5,0.0}, /* orange 3 */
+ {1.0,1.0,0.0}, /* yellow 4 */
+ {0.0,1.0,0.0}, /* green 5 */
+ {0.0,0.5,1.0}, /* blue 6 */
+ {0.7,0.2,1.0}, /* violet 7 */
+ {0.5,0.5,0.5}, /* grey 8 */
+ {1.0,1.0,1.0}, /* white 9 */
+ {0.66,0.56,0.2}, /* gold 10 */
+ {0.8,0.8,0.8}, /* silver 11 */
+};
+
+/* base values for components - we can multiply by 0 - 1M */
+static const int values [9][2] = {
+ {1,0},
+ {2,2},
+ {3,3},
+ {4,7},
+ {5,6},
+ {6,8},
+ {7,5},
+ {8,2},
+ {9,1}
+};
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+
+ int XMAX, YMAX;
+ int win_w, win_h;
+
+ /* one lucky led gets to be a light source , unless -no-light*/
+ int light;
+ int lighton;
+
+ /* stores refs to textures */
+ int s_refs[50];
+
+ GLfloat viewer[3];
+ GLfloat lightpos[4];
+
+ float sin_table[720];
+ float cos_table[720];
+ float tan_table[720];
+
+ Component *components[MAX_COMPONENTS];
+ int band_list[12];
+ int band_list_polys[12];
+
+ GLfloat grid_col[3], grid_col2[3];
+
+ int display_i;
+ GLfloat rotate_angle;
+
+ texture_font_data *font;
+ char *font_strings[50]; /* max of 40 textures */
+ int font_w[50], font_h[50];
+ int font_init;
+
+ GLfloat draw_sx, draw_sy; /* bright spot co-ords */
+ int draw_sdir; /* 0 = left-right, 1 = right-left, 2 = up->dn, 3 = dn->up */
+ int draw_s; /* if spot is enabled */
+ float draw_ds; /* speed of spot */
+
+} Circuit;
+
+static Circuit *circuit = NULL;
+
+
+static int DrawResistor(Circuit *, Resistor *);
+static int DrawDiode(Circuit *, Diode *);
+static int DrawTransistor(Circuit *, Transistor *);
+static int DrawLED(Circuit *, LED *);
+static int DrawIC(Circuit *, IC *);
+static int DrawCapacitor(Circuit *, Capacitor *);
+static int DrawDisp(Circuit *, Disp *);
+static int DrawFuse(Circuit *, Fuse *);
+static int DrawRCA(Circuit *, RCA *);
+static int DrawThreeFive(Circuit *, ThreeFive *);
+static int DrawSwitch(Circuit *, Switch *);
+
+static void reorder(Component *[]);
+static int circle(Circuit *, float, int,int);
+static int bandedCylinder(Circuit *,
+ float, float , GLfloat, GLfloat , GLfloat,
+ Band **, int);
+static int Rect(GLfloat , GLfloat , GLfloat, GLfloat , GLfloat ,GLfloat);
+static int ICLeg(GLfloat, GLfloat, GLfloat, int);
+static int HoledRectangle(Circuit *ci,
+ GLfloat, GLfloat, GLfloat, GLfloat, int);
+static Resistor *NewResistor(void);
+static Diode *NewDiode(void);
+static Transistor *NewTransistor(ModeInfo *);
+static LED * NewLED(Circuit *);
+static Capacitor *NewCapacitor(Circuit *);
+static IC* NewIC(ModeInfo *);
+static Disp* NewDisp(Circuit *);
+static Fuse *NewFuse(Circuit *);
+static RCA *NewRCA(Circuit *);
+static ThreeFive *NewThreeFive(Circuit *);
+static Switch *NewSwitch(Circuit *);
+
+/* we use trig tables to speed things up - 200 calls to sin()
+ in one frame can be a bit harsh..
+*/
+
+static void make_tables(Circuit *ci)
+{
+int i;
+float f;
+
+ f = 360 / (M_PI * 2);
+ for (i = 0 ; i < 720 ; i++) {
+ ci->sin_table[i] = sin(i/f);
+ }
+ for (i = 0 ; i < 720 ; i++) {
+ ci->cos_table[i] = cos(i/f);
+ }
+ for (i = 0 ; i < 720 ; i++) {
+ ci->tan_table[i] = tan(i/f);
+ }
+}
+
+
+static int createCylinder (Circuit *ci,
+ float length, float radius, int endcaps, int half)
+{
+ int polys = 0;
+ int a; /* current angle around cylinder */
+ int angle, norm;
+ float z1, y1, z2, y2,ex;
+ int nsegs;
+
+ glPushMatrix();
+ nsegs = radius*MAX(ci->win_w, ci->win_h)/20;
+ nsegs = MAX(nsegs, 4);
+ if (nsegs % 2)
+ nsegs += 1;
+ angle = (half) ? (180 - 90/nsegs) : 374;
+ z1 = radius; y1 = 0;
+ glBegin(GL_QUADS);
+ for (a = 0 ; a <= angle ; a+= angle/nsegs) {
+ y2=radius*(float)ci->sin_table[(int)a];
+ z2=radius*(float)ci->cos_table[(int)a];
+ glNormal3f(0, y1, z1);
+ glVertex3f(0,y1,z1);
+ glVertex3f(length,y1,z1);
+ glNormal3f(0, y2, z2);
+ glVertex3f(length,y2,z2);
+ glVertex3f(0,y2,z2);
+ polys++;
+ z1=z2;
+ y1=y2;
+ }
+ glEnd();
+ if (half) {
+ glBegin(GL_POLYGON);
+ glNormal3f(0, 1, 0);
+ glVertex3f(0, 0, radius);
+ glVertex3f(length, 0, radius);
+ glVertex3f(length, 0, 0 - radius);
+ glVertex3f(0, 0, 0 - radius);
+ polys++;
+ glEnd();
+ }
+ if (endcaps) {
+ for(ex = 0 ; ex <= length ; ex += length) {
+ z1 = radius; y1 = 0;
+ norm = (ex == length) ? 1 : -1;
+ glBegin(GL_TRIANGLES);
+ glNormal3f(norm, 0, 0);
+ for (a = 0 ; a <= angle ; a+= angle/nsegs) {
+ y2=radius*(float)ci->sin_table[(int)a];
+ z2=radius*(float)ci->cos_table[(int)a];
+ glVertex3f(ex,0, 0);
+ glVertex3f(ex,y1,z1);
+ glVertex3f(ex,y2,z2);
+ polys++;
+ z1=z2;
+ y1=y2;
+ }
+ glEnd();
+ }
+ }
+ glPopMatrix();
+ return polys;
+}
+
+static int circle(Circuit *ci, float radius, int segments, int half)
+{
+ int polys = 0;
+ float x1 = 0, x2 = 0;
+ float y1 = 0, y2 = 0;
+ int i, t, s;
+
+ if (half) {
+ t = 270; s = 90;
+ x1 = radius, y1 = 0;
+ } else {
+ t = 360, s = 0;
+ }
+ glBegin(GL_TRIANGLES);
+ glNormal3f(1, 0, 0);
+ for(i=s;i<=t;i+=10)
+ {
+ float angle=i;
+ x2=radius*(float)ci->cos_table[(int)angle];
+ y2=radius*(float)ci->sin_table[(int)angle];
+ glVertex3f(0,0,0);
+ glVertex3f(0,y1,x1);
+ glVertex3f(0,y2,x2);
+ polys++;
+ x1=x2;
+ y1=y2;
+ }
+ glEnd();
+ return polys;
+}
+
+static int wire(Circuit *ci, float len)
+{
+ int polys = 0;
+ GLfloat col[] = {0.3, 0.3, 0.3, 1.0};
+ GLfloat spec[] = {0.9, 0.9, 0.9, 1.0};
+ GLfloat nospec[] = {0.4, 0.4, 0.4, 1.0};
+ GLfloat shin = 30;
+ int n;
+
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shin);
+ n = glIsEnabled(GL_NORMALIZE);
+ if (!n) glEnable(GL_NORMALIZE);
+ polys += createCylinder(ci, len, 0.05, 1, 0);
+ if (!n) glDisable(GL_NORMALIZE);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, nospec);
+ return polys;
+}
+
+static int sphere(Circuit *ci, GLfloat r, float stacks, float slices,
+ int startstack, int endstack, int startslice,
+ int endslice)
+{
+ int polys = 0;
+ GLfloat d, d1, dr, dr1, Dr, Dr1, D, D1, z1, z2, y1, y2, Y1, Z1, Y2, Z2;
+ int a, a1, b, b1, c0, c1;
+ GLfloat step, sstep;
+
+ step = 180/stacks;
+ sstep = 360/slices;
+ a1 = startstack * step;
+ b1 = startslice * sstep;
+ y1 = z1 = Y1 = Z1 = 0;
+ c0 = (endslice / slices) * 360;
+ c1 = (endstack/stacks)*180;
+ glBegin(GL_QUADS);
+ for (a = startstack * step ; a <= c1 ; a+= step) {
+ d=ci->sin_table[a];
+ d1=ci->sin_table[a1];
+ D=ci->cos_table[a];
+ D1=ci->cos_table[a1];
+ dr = d * r;
+ dr1 = d1 * r;
+ Dr = D * r;
+ Dr1 = D1 * r;
+ for (b = b1 ; b <= c0 ; b+= sstep) {
+ y2=dr*ci->sin_table[b];
+ z2=dr*ci->cos_table[b];
+ Y2=dr1*ci->sin_table[b];
+ Z2=dr1*ci->cos_table[b];
+ glNormal3f(Dr, y1, z1);
+ glVertex3f(Dr,y1,z1);
+ glNormal3f(Dr, y2, z2);
+ glVertex3f(Dr,y2,z2);
+ glNormal3f(Dr1, Y2, Z2);
+ glVertex3f(Dr1,Y2,Z2);
+ glNormal3f(Dr1, Y1, Z1);
+ glVertex3f(Dr1,Y1,Z1);
+ polys++;
+ z1=z2;
+ y1=y2;
+ Z1=Z2;
+ Y1=Y2;
+ }
+ a1 = a;
+ }
+ glEnd();
+ return polys;
+}
+
+static int DrawComponent(Circuit *ci, Component *c, unsigned long *polysP)
+{
+ int polys = *polysP;
+ int ret = 0; /* return 1 if component is freed */
+
+ glPushMatrix();
+ glTranslatef(c->x, c->y, c->z);
+ if (c->angle > 0) {
+ glRotatef(c->angle, c->rotx, c->roty, c->rotz);
+ }
+ if (spin) {
+ glRotatef(c->rdeg, c->rotx, c->roty, c->rotz);
+ c->rdeg += c->drot;
+ }
+
+ if (c->norm)
+ glEnable(GL_NORMALIZE);
+ else
+ glDisable(GL_NORMALIZE);
+
+ /* call object draw routine here */
+ if (c->type == 0) {
+ polys += DrawResistor(ci, c->c);
+ } else if (c->type == 1) {
+ polys += DrawDiode(ci, c->c);
+ } else if (c->type == 2) {
+ polys += DrawTransistor(ci, c->c);
+ } else if (c->type == 3) {
+ if (((LED *)c->c)->light && ci->light) {
+ GLfloat lp[] = {0.1, 0, 0, 1};
+ glEnable(GL_LIGHT1);
+ glLightfv(GL_LIGHT1, GL_POSITION, lp);
+ }
+ polys += DrawLED(ci, c->c);
+ } else if (c->type == 4) {
+ polys += DrawCapacitor(ci, c->c);
+ } else if (c->type == 5) {
+ polys += DrawIC(ci, c->c);
+ } else if (c->type == 6) {
+ polys += DrawDisp(ci, c->c);
+ } else if (c->type == 7) {
+ polys += DrawFuse(ci, c->c);
+ } else if (c->type == 8) {
+ polys += DrawRCA(ci, c->c);
+ } else if (c->type == 9) {
+ polys += DrawThreeFive(ci, c->c);
+ } else if (c->type == 10) {
+ polys += DrawSwitch(ci, c->c);
+ }
+ c->x += c->dx * MOVE_MULT;
+ c->y += c->dy * MOVE_MULT;
+ if (c->x > ci->XMAX/2 || c->x < 0 - ci->XMAX/2 ||
+ c->y > ci->YMAX/2 || c->y < 0 - ci->YMAX/2) {
+ if (c->type == 3 && ((LED *)c->c)->light && ci->light) {
+ glDisable(GL_LIGHT1);
+ ci->light = 0; ci->lighton = 0;
+ }
+ if (c->type == 1)
+ free(((Diode *)c->c)->band); /* remember to free diode band */
+ free(c->c);
+ ret = 1;
+ }
+
+ glPopMatrix();
+ glDisable(GL_NORMALIZE);
+ *polysP = polys;
+ return ret;
+}
+
+/* draw a resistor */
+
+static int DrawResistor(Circuit *ci, Resistor *r)
+{
+ int polys = 0;
+ int i;
+ GLfloat col[] = {0.74, 0.62, 0.46, 1.0};
+ GLfloat spec[] = {0.8, 0.8, 0.8, 1.0};
+ GLfloat shine = 30;
+
+ glTranslatef(-4, 0, 0);
+ polys += wire(ci, 3);
+ glTranslatef(3, 0, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shine);
+ polys += createCylinder(ci, 1.8, 0.4, 1, 0);
+ glPushMatrix();
+ for (i = 0 ; i < 4 ; i++) {
+ glTranslatef(0.35, 0, 0);
+ glCallList(ci->band_list[r->b[i]]);
+ polys += ci->band_list_polys[r->b[i]];
+ }
+ glPopMatrix();
+ glTranslatef(1.8, 0, 0);
+ polys += wire(ci, 3);
+ return polys;
+}
+
+static int DrawRCA(Circuit *ci, RCA *rca)
+{
+ int polys = 0;
+ GLfloat col[] = {0.6, 0.6, 0.6, 1.0}; /* metal */
+ GLfloat red[] = {1.0, 0.0, 0.0, 1.0}; /* red */
+ GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; /* white */
+ GLfloat spec[] = {1, 1, 1, 1}; /* glass */
+
+ glPushMatrix();
+ glTranslatef(0.3, 0, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMateriali(GL_FRONT, GL_SHININESS, 40);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ polys += createCylinder(ci, 0.7, 0.45, 0, 0);
+ glTranslatef(0.4, 0, 0);
+ polys += createCylinder(ci, 0.9, 0.15, 1, 0);
+ glTranslatef(-1.9, 0, 0);
+ glMateriali(GL_FRONT, GL_SHININESS, 20);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, rca->col ? white : red);
+ polys += createCylinder(ci, 1.5, 0.6, 1, 0);
+ glTranslatef(-0.9, 0, 0);
+ polys += createCylinder(ci, 0.9, 0.25, 0, 0);
+ glTranslatef(0.1, 0, 0);
+ polys += createCylinder(ci, 0.2, 0.3, 0, 0);
+ glTranslatef(0.3, 0, 0);
+ polys += createCylinder(ci, 0.2, 0.3, 1, 0);
+ glTranslatef(0.3, 0, 0);
+ polys += createCylinder(ci, 0.2, 0.3, 1, 0);
+ glPopMatrix();
+ return polys;
+}
+
+static int DrawSwitch(Circuit *ci, Switch *f)
+{
+ int polys = 0;
+ GLfloat col[] = {0.6, 0.6, 0.6, 0}; /* metal */
+ GLfloat dark[] = {0.1, 0.1, 0.1, 1.0}; /* dark */
+ GLfloat brown[] = {0.69, 0.32, 0, 1.0}; /* brown */
+ GLfloat spec[] = {0.9, 0.9, 0.9, 1}; /* shiny */
+
+ glPushMatrix();
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_AMBIENT, dark);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMateriali(GL_FRONT, GL_SHININESS, 90);
+ polys += Rect(-0.25, 0, 0, 1.5, 0.5, 0.75);
+/* polys += Rect(-0.5, 0.5, 0, 2, 0.1, 0.75); */
+ glPushMatrix();
+ glRotatef(90, 1, 0, 0);
+ glTranslatef(-0.5, -0.4, -0.4);
+ polys += HoledRectangle(ci, 0.5, 0.75, 0.1, 0.15, 8);
+ glTranslatef(2, 0, 0);
+ polys += HoledRectangle(ci, 0.5, 0.75, 0.1, 0.15, 8);
+ glPopMatrix();
+ polys += Rect(0.1, -0.4, -0.25, 0.1, 0.4, 0.05);
+ polys += Rect(0.5, -0.4, -0.25, 0.1, 0.4, 0.05);
+ polys += Rect(0.9, -0.4, -0.25, 0.1, 0.4, 0.05);
+ polys += Rect(0.1, -0.4, -0.5, 0.1, 0.4, 0.05);
+ polys += Rect(0.5, -0.4, -0.5, 0.1, 0.4, 0.05);
+ polys += Rect(0.9, -0.4, -0.5, 0.1, 0.4, 0.05);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, dark);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ polys += Rect(0, 0.5, -0.1, 1, 0.05, 0.5);
+ polys += Rect(0, 0.6, -0.1, 0.5, 0.6, 0.5);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, brown);
+ polys += Rect(-0.2, -0.01, -0.1, 1.4, 0.1, 0.55);
+ glPopMatrix();
+ return polys;
+}
+
+
+static int DrawFuse(Circuit *ci, Fuse *f)
+{
+ int polys = 0;
+ GLfloat col[] = {0.5, 0.5, 0.5, 1.0}; /* endcaps */
+ GLfloat glass[] = {0.4, 0.4, 0.4, 0.3}; /* glass */
+ GLfloat spec[] = {1, 1, 1, 1}; /* glass */
+
+ glPushMatrix();
+ glTranslatef(-1.8, 0, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMateriali(GL_FRONT, GL_SHININESS, 40);
+ polys += createCylinder(ci, 0.8, 0.45, 1, 0);
+ glTranslatef(0.8, 0, 0);
+ glEnable(GL_BLEND);
+ glDepthMask(GL_FALSE);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, glass);
+ glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 40);
+ polys += createCylinder(ci, 2, 0.4, 0, 0);
+ polys += createCylinder(ci, 2, 0.3, 0, 0);
+ glDisable(GL_BLEND);
+ glDepthMask(GL_TRUE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMateriali(GL_FRONT, GL_SHININESS, 40);
+ glBegin(GL_LINES);
+ glVertex3f(0, 0, 0);
+ glVertex3f(2, 0. ,0);
+ glEnd();
+ glTranslatef(2, 0, 0);
+ polys += createCylinder(ci, 0.8, 0.45, 1, 0);
+ glPopMatrix();
+ return polys;
+}
+
+
+static int DrawCapacitor(Circuit *ci, Capacitor *c)
+{
+ int polys = 0;
+ GLfloat col[] = {0, 0, 0, 0};
+ GLfloat spec[] = {0.8, 0.8, 0.8, 0};
+ GLfloat brown[] = {0.84, 0.5, 0};
+ GLfloat shine = 40;
+
+ glPushMatrix();
+ if (c->type) {
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, brown);
+ polys += sphere(ci, c->width, 15, 15, 0, 4 ,0, 15);
+ glTranslatef(1.35*c->width, 0, 0);
+ polys += sphere(ci, c->width, 15, 15, 11, 15, 0, 15);
+ glRotatef(90, 0, 0, 1);
+ glTranslatef(0, 0.7*c->width, 0.3*c->width);
+ polys += wire(ci, 3*c->width);
+ glTranslatef(0, 0, -0.6*c->width);
+ polys += wire(ci, 3*c->width);
+ } else {
+ glTranslatef(0-c->length*2, 0, 0);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &shine);
+ glBegin(GL_POLYGON);
+ glVertex3f(0, 0.82*c->width, -0.1);
+ glVertex3f(3*c->length, 0.82*c->width, -0.1);
+ glVertex3f(3*c->length, 0.82*c->width, 0.1);
+ glVertex3f(0, 0.82*c->width, 0.1);
+ glEnd();
+ col[0] = 0.0;
+ col[1] = 0.2;
+ col[2] = 0.9;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ glEnable(GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset(1.0, 1.0);
+ polys += createCylinder(ci, 3.0*c->length, 0.8*c->width, 1, 0);
+ glDisable(GL_POLYGON_OFFSET_FILL);
+ col[0] = 0.7;
+ col[1] = 0.7;
+ col[2] = 0.7;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ polys += circle(ci, 0.6*c->width, 30, 0);
+ col[0] = 0;
+ col[1] = 0;
+ col[2] = 0;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ glTranslatef(3.0*c->length, 0.0, 0);
+ polys += circle(ci, 0.6*c->width, 30, 0);
+ glTranslatef(0, 0.4*c->width, 0);
+ polys += wire(ci, 3*c->length);
+ glTranslatef(0.0, -0.8*c->width, 0);
+ polys += wire(ci, 3.3*c->length);
+ }
+ glPopMatrix();
+ return polys;
+}
+
+static int DrawLED(Circuit *ci, LED *l)
+{
+ int polys = 0;
+ GLfloat col[] = {0, 0, 0, 0.6};
+ GLfloat black[] = {0, 0, 0, 0.6};
+
+ col[0] = l->r; col[1] = l->g; col[2] = l->b;
+ if (l->light && ci->light) {
+ GLfloat dir[] = {-1, 0, 0};
+ glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, dir);
+ if (!ci->lighton) {
+ glLightfv(GL_LIGHT1, GL_SPECULAR, col);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, black);
+ col[0] /= 1.5; col[1] /= 1.5; col[2] /= 1.5;
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, col);
+ glLighti(GL_LIGHT1, GL_SPOT_CUTOFF, (GLint) 90);
+ glLighti(GL_LIGHT1, GL_CONSTANT_ATTENUATION, (GLfloat)1);
+ glLighti(GL_LIGHT1, GL_LINEAR_ATTENUATION, (GLfloat)0);
+ glLighti(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, (GLfloat)0);
+ glLighti(GL_LIGHT1, GL_SPOT_EXPONENT, (GLint) 20);
+ ci->lighton = 1;
+ }
+ }
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col);
+ /* no transparency when LED is lit */
+ if (!l->light) {
+ glEnable(GL_BLEND);
+ glDepthMask(GL_FALSE);
+ glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
+ }
+ glTranslatef(-0.9, 0, 0);
+ polys += createCylinder(ci, 1.2, 0.3, 0, 0);
+ if (l->light && ci->light) {
+ glDisable(GL_LIGHTING);
+ glColor3fv(col);
+ }
+ polys += sphere(ci, 0.3, 7, 7, 3, 7, 0, 7);
+ if (l->light && ci->light) {
+ glEnable(GL_LIGHTING);
+ } else {
+ glDepthMask(GL_TRUE);
+ glDisable(GL_BLEND);
+ }
+
+ glTranslatef(1.2, 0, 0);
+ polys += createCylinder(ci, 0.1, 0.38, 1, 0);
+ glTranslatef(-0.3, 0.15, 0);
+ polys += wire(ci, 3);
+ glTranslatef(0, -0.3, 0);
+ polys += wire(ci, 3.3);
+ if (random() % 50 == 25) {
+ if (l->light) {
+ l->light = 0; ci->light = 0; ci->lighton = 0;
+ glDisable(GL_LIGHT1);
+ } else if (!ci->light) {
+ l->light = 1;
+ ci->light = 1;
+ }
+ }
+ return polys;
+}
+
+
+static int DrawThreeFive(Circuit *ci, ThreeFive *d)
+{
+ int polys = 0;
+ GLfloat shine = 40;
+ GLfloat const dark[] = {0.3, 0.3, 0.3, 0};
+ GLfloat const light[] = {0.6, 0.6, 0.6, 0};
+ GLfloat const cream[] = {0.8, 0.8, 0.6, 0};
+ GLfloat const spec[] = {0.7, 0.7, 0.7, 0};
+
+ glPushMatrix();
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shine);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cream);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+
+ glTranslatef(-2.0, 0, 0);
+ polys += createCylinder(ci, 0.7, 0.2, 0, 0);
+ glTranslatef(0.7, 0, 0);
+ polys += createCylinder(ci, 1.3, 0.4, 1, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light);
+ glTranslatef(1.3, 0, 0);
+ polys += createCylinder(ci, 1.3, 0.2, 0, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, dark);
+ glTranslatef(0.65, 0, 0);
+ polys += createCylinder(ci, 0.15, 0.21, 0, 0);
+ glTranslatef(0.3, 0, 0);
+ polys += createCylinder(ci, 0.15, 0.21, 0, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light);
+ glTranslatef(0.4, 0, 0);
+ polys += sphere(ci, 0.23, 7, 7, 0, 5, 0, 7);
+
+ glPopMatrix();
+ return polys;
+}
+
+static int DrawDiode(Circuit *ci, Diode *d)
+{
+ int polys = 0;
+ GLfloat shine = 40;
+ GLfloat col[] = {0.3, 0.3, 0.3, 0};
+ GLfloat spec[] = {0.7, 0.7, 0.7, 0};
+
+ glPushMatrix();
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shine);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glTranslatef(-4, 0, 0);
+ polys += wire(ci, 3);
+ glTranslatef(3, 0, 0);
+ polys += bandedCylinder(ci, 0.3, 1.5, d->r, d->g, d->b, &(d->band), 1);
+ glTranslatef(1.5, 0, 0);
+ polys += wire(ci, 3);
+ glPopMatrix();
+ return polys;
+}
+
+static int Rect(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h,
+ GLfloat t)
+{
+ int polys = 0;
+ GLfloat yh;
+ GLfloat xw;
+ GLfloat zt;
+
+ yh = y+h; xw = x+w; zt = z - t;
+
+ glBegin(GL_QUADS); /* front */
+ glNormal3f(0, 0, 1);
+ glVertex3f(x, y, z);
+ glVertex3f(x, yh, z);
+ glVertex3f(xw, yh, z);
+ glVertex3f(xw, y, z);
+ polys++;
+ /* back */
+ glNormal3f(0, 0, -1);
+ glVertex3f(x, y, zt);
+ glVertex3f(x, yh, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, y, zt);
+ polys++;
+ /* top */
+ glNormal3f(0, 1, 0);
+ glVertex3f(x, yh, z);
+ glVertex3f(x, yh, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, yh, z);
+ polys++;
+ /* bottom */
+ glNormal3f(0, -1, 0);
+ glVertex3f(x, y, z);
+ glVertex3f(x, y, zt);
+ glVertex3f(xw, y, zt);
+ glVertex3f(xw, y, z);
+ polys++;
+ /* left */
+ glNormal3f(-1, 0, 0);
+ glVertex3f(x, y, z);
+ glVertex3f(x, y, zt);
+ glVertex3f(x, yh, zt);
+ glVertex3f(x, yh, z);
+ polys++;
+ /* right */
+ glNormal3f(1, 0, 0);
+ glVertex3f(xw, y, z);
+ glVertex3f(xw, y, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, yh, z);
+ polys++;
+ glEnd();
+ return polys;
+}
+
+/* IC pins */
+
+static int ICLeg(GLfloat x, GLfloat y, GLfloat z, int dir)
+{
+ int polys = 0;
+ if (dir) {
+ polys += Rect(x-0.1, y, z, 0.1, 0.1, 0.02);
+ polys += Rect(x-0.1, y, z, 0.02, 0.1, 0.1);
+ polys += Rect(x-0.1, y+0.03, z-0.1, 0.02, 0.05, 0.3);
+ } else {
+ polys += Rect(x, y, z, 0.1, 0.1, 0.02);
+ polys += Rect(x+0.8*0.1, y, z, 0.02, 0.1, 0.1);
+ polys += Rect(x+0.8*0.1, y+0.03, z-0.1, 0.02, 0.05, 0.3);
+ }
+ return polys;
+}
+
+
+static int DrawIC(Circuit *ci, IC *c)
+{
+ int polys = 0;
+ GLfloat w, h, d;
+ int z;
+ GLfloat col[] = {0.1, 0.1, 0.1, 0};
+ GLfloat col2[] = {0.2, 0.2, 0.2, 0};
+ GLfloat spec[] = {0.6, 0.6, 0.6, 0};
+ GLfloat shine = 40;
+ GLfloat lspec[] = {0.6, 0.6, 0.6, 0};
+ GLfloat lcol[] = {0.4, 0.4, 0.4, 0};
+ GLfloat lshine = 40;
+
+ glPushMatrix();
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shine);
+ switch(c->pins) {
+ case 8:
+ w = 1.0; h = 1.5;
+ break;
+ case 14:
+ w = 1.0; h = 3;
+ break;
+ case 16:
+ w = 1.0; h = 3;
+ break;
+ case 24:
+ default:
+ w = 1.5; h = 3.5;
+ break;
+ }
+ w = w/2; h = h/2;
+ glEnable(GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset(1.0, 1.0);
+ glBegin(GL_QUADS);
+ glNormal3f(0, 0, 1);
+ glVertex3f(w, h, 0.1);
+ glVertex3f(w, -h, 0.1);
+ glVertex3f(-w, -h, 0.1);
+ glVertex3f(-w, h, 0.1);
+ polys++;
+ glNormal3f(0, 0, -1);
+ glVertex3f(w, h, -0.1);
+ glVertex3f(w, -h, -0.1);
+ glVertex3f(-w, -h, -0.1);
+ glVertex3f(-w, h, -0.1);
+ polys++;
+ glNormal3f(1, 0, 0);
+ glVertex3f(w, h, -0.1);
+ glVertex3f(w, -h, -0.1);
+ glVertex3f(w, -h, 0.1);
+ glVertex3f(w, h, 0.1);
+ polys++;
+ glNormal3f(0, -1, 0);
+ glVertex3f(w, -h, -0.1);
+ glVertex3f(w, -h, 0.1);
+ glVertex3f(-w, -h, 0.1);
+ glVertex3f(-w, -h, -0.1);
+ polys++;
+ glNormal3f(-1, 0, 0);
+ glVertex3f(-w, h, -0.1);
+ glVertex3f(-w, h, 0.1);
+ glVertex3f(-w, -h, 0.1);
+ glVertex3f(-w, -h, -0.1);
+ polys++;
+ glNormal3f(0, -1, 0);
+ glVertex3f(-w, h, -0.1);
+ glVertex3f(w, h, -0.1);
+ glVertex3f(w, h, 0.1);
+ glVertex3f(-w, h, 0.1);
+ polys++;
+ glEnd();
+ glDisable(GL_POLYGON_OFFSET_FILL);
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+
+ {
+ GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0};
+ GLfloat s = 0.015;
+ XCharStruct e;
+ texture_string_metrics (ci->font, c->text, &e, 0, 0);
+
+ glPushMatrix();
+ glTranslatef (0, 0, 0.1);
+ glRotatef (90, 0, 0, 1);
+ glScalef (s, s, s);
+ glTranslatef (-w/2, 0, 0);
+ glColor4fv (texfg);
+ print_texture_string (ci->font, c->text);
+ glPopMatrix();
+ }
+
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+ d = (h*2-0.1) / c->pins;
+ d*=2;
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, lcol);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, lspec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &lshine);
+ for (z = 0 ; z < c->pins/2 ; z++) {
+ polys += ICLeg(w, -h + z*d + d/2, 0, 0);
+ }
+ for (z = 0 ; z < c->pins/2 ; z++) {
+ polys += ICLeg(-w, -h + z*d + d/2, 0, 1);
+ }
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col2);
+ glTranslatef(-w+0.3, h-0.3, 0.1);
+ glRotatef(90, 0, 1, 0);
+ polys += circle(ci, 0.1, 7, 0);
+ glPopMatrix();
+ return polys;
+}
+
+static int DrawDisp(Circuit *ci, Disp *d)
+{
+ int polys = 0;
+ GLfloat col[] = {0.8, 0.8, 0.8, 1.0}; /* body colour */
+ GLfloat front[] = {0.2, 0.2, 0.2, 1.0}; /* front colour */
+ GLfloat on[] = {0.9, 0, 0, 1}; /* 'on' segment */
+ GLfloat off[] = {0.3, 0, 0, 1}; /* 'off' segment */
+ int i, j, k;
+ GLfloat x, y; /* for the pins */
+ GLfloat spec[] = {0.6, 0.6, 0.6, 0};
+ GLfloat lcol[] = {0.4, 0.4, 0.4, 0};
+ GLfloat shine = 40;
+ static const GLfloat vdata_h[6][2] = {
+ {0, 0},
+ {0.1, 0.1},
+ {0.9, 0.1},
+ {1, 0},
+ {0.9, -0.1},
+ {0.1, -0.1}
+ };
+ static const GLfloat vdata_v[6][2] = {
+ {0.27, 0},
+ {0.35, -0.1},
+ {0.2, -0.9},
+ {0.1, -1},
+ {0, -0.9},
+ {0.15, -0.15}
+ };
+
+ static const GLfloat seg_start[7][2] = {
+ {0.55, 2.26},
+ {1.35, 2.26},
+ {1.2, 1.27},
+ {0.25, 0.25},
+ {0.06, 1.25},
+ {0.25, 2.25},
+ {0.39, 1.24}
+ };
+
+ static const int nums[10][7] = {
+ {1, 1, 1, 1, 1, 1, 0}, /* 0 */
+ {0, 1, 1, 0, 0, 0, 0}, /* 1 */
+ {1, 1, 0, 1, 1, 0, 1}, /* 2 */
+ {1, 1, 1, 1, 0, 0, 1}, /* 3 */
+ {0, 1, 1, 0, 0, 1, 1}, /* 4 */
+ {1, 0, 1, 1, 0, 1, 1}, /* 5 */
+ {1, 0, 1, 1, 1, 1, 1}, /* 6 */
+ {1, 1, 1, 0, 0, 0, 0}, /* 7 */
+ {1, 1, 1, 1, 1, 1, 1}, /* 8 */
+ {1, 1, 1, 0, 0, 1, 1} /* 9 */
+ };
+
+ glTranslatef(-0.9, -1.8, 0);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ polys += Rect(0, 0, -0.01, 1.8, 2.6, 0.7);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, front);
+ glBegin(GL_QUADS);
+ glVertex2f(-0.05, -0.05);
+ glVertex2f(-0.05, 2.65);
+ glVertex2f(1.85, 2.65);
+ glVertex2f(1.85, -0.05);
+ polys++;
+ glEnd();
+ glDisable(GL_LIGHTING); /* lit segments dont need light */
+ if (!seven && (random() % 30) == 19) { /* randomly change value */
+ d->value = random() % 10;
+ }
+ for (j = 0 ; j < 7 ; j++) { /* draw the segments */
+ GLfloat xx[6], yy[6];
+ if (nums[d->value][j])
+ glColor3fv(on);
+ else
+ glColor3fv(off);
+ for (k = 0 ; k < 6 ; k++) {
+ if (j == 0 || j == 3 || j == 6) {
+ xx[k] = seg_start[j][0] + vdata_h[k][0];
+ yy[k] = seg_start[j][1] + vdata_h[k][1];
+ } else {
+ xx[k] = seg_start[j][0] + vdata_v[k][0];
+ yy[k] = seg_start[j][1] + vdata_v[k][1];
+ }
+ }
+ glBegin(GL_POLYGON);
+ for(i = 0 ; i < 6 ; i++) {
+ glVertex3f(xx[i], yy[i], 0.01);
+ }
+ polys++;
+ glEnd();
+ }
+ glColor3fv(on);
+ glPointSize(4);
+ glBegin(GL_POINTS);
+ glVertex3f(1.5, 0.2, 0.01);
+ polys++;
+ glEnd();
+ glEnable(GL_LIGHTING);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, lcol);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shine);
+ for (x = 0.35 ; x <= 1.5 ; x+= 1.15) {
+ for ( y = 0.2 ; y <= 2.4 ; y += 0.3) {
+ polys += ICLeg(x, y, -0.7, 1);
+ }
+ }
+ return polys;
+}
+
+static int HoledRectangle(Circuit *ci,
+ GLfloat w, GLfloat h, GLfloat d, GLfloat radius,
+ int p)
+{
+ int polys = 0;
+ int step, a;
+ GLfloat x1, y1, x2, y2;
+ GLfloat yr, yr1, xr, xr1, side, side1;
+ GLfloat nx, ny;
+
+ step = 360 / p;
+ x1 = radius; y1 = 0;
+ xr1 = w/2; yr1 = 0;
+ side = w/2;
+ side1 = h/2;
+ glBegin(GL_QUADS);
+ for (a = 0 ; a <= 360 ; a+= step) {
+ y2=radius*(float)ci->sin_table[(int)a];
+ x2=radius*(float)ci->cos_table[(int)a];
+
+ if (a < 45 || a > 315) {
+ xr = side;
+ yr = side1 * ci->tan_table[a];
+ nx = 1; ny = 0;
+ } else if (a <= 135 || a >= 225) {
+ xr = side/ci->tan_table[a];
+ if (a >= 225) {
+ yr = -side1;
+ xr = 0 - xr;
+ nx = 0; ny = -1;
+ } else {
+ yr = side1;
+ nx = 0; ny = 1;
+ }
+ } else {
+ xr = -side;
+ yr = -side1 * ci->tan_table[a];
+ nx = -1; ny = 0;
+ }
+
+ glNormal3f(-x1, -y1, 0); /* cylinder */
+ glVertex3f(x1,y1,0);
+ glVertex3f(x1,y1,-d);
+ glVertex3f(x2,y2,-d);
+ glVertex3f(x2,y2,0);
+ polys++;
+
+ glNormal3f(0, 0, 1); /* front face */
+ glVertex3f(x1,y1,0);
+ glVertex3f(xr1, yr1, 0);
+ glVertex3f(xr, yr, 0);
+ glVertex3f(x2, y2, 0);
+ polys++;
+
+ glNormal3f(nx, ny, 0); /* side */
+ glVertex3f(xr, yr, 0);
+ glVertex3f(xr, yr, -d);
+ glVertex3f(xr1, yr1, -d);
+ glVertex3f(xr1, yr1, 0);
+ polys++;
+
+ glNormal3f(0, 0, -1); /* back */
+ glVertex3f(xr, yr, -d);
+ glVertex3f(x2, y2, -d);
+ glVertex3f(x1, y1, -d);
+ glVertex3f(xr1, yr1, -d);
+ polys++;
+
+ x1=x2;
+ y1=y2;
+ xr1 = xr; yr1 = yr;
+ }
+ glEnd();
+ return polys;
+}
+
+static int DrawTransistor(Circuit *ci, Transistor *t)
+{
+ int polys = 0;
+ GLfloat col[] = {0.3, 0.3, 0.3, 1.0};
+ GLfloat spec[] = {0.9, 0.9, 0.9, 1.0};
+ GLfloat nospec[] = {0.4, 0.4, 0.4, 1.0};
+ GLfloat shin = 30;
+
+ glPushMatrix();
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shin);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ if (t->type == 1) { /* TO-92 style */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col);
+ glRotatef(90, 0, 1, 0);
+ glRotatef(90, 0, 0, 1);
+ polys += createCylinder(ci, 1.0, 0.4, 1, 1);
+ polys += Rect(0, -0.2, 0.4, 1, 0.2, 0.8);
+/* Draw the markings */
+
+ {
+ GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0};
+ GLfloat s = 0.015;
+ XCharStruct e;
+ int w;
+ texture_string_metrics (ci->font, t->text, &e, 0, 0);
+ w = e.width;
+ glPushMatrix();
+ glRotatef (90, 1, 0, 0);
+ glTranslatef (0.5, -0.05, 0.21);
+ glScalef (s, s, s);
+ glTranslatef (-w/2, 0, 0);
+ glColor4fv (texfg);
+ print_texture_string (ci->font, t->text);
+ glPopMatrix();
+ }
+
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+ glDepthMask(GL_TRUE);
+ glTranslatef(-2, 0, -0.2);
+ polys += wire(ci, 2);
+ glTranslatef(0, 0, 0.2);
+ polys += wire(ci, 2);
+ glTranslatef(0, 0, 0.2);
+ polys += wire(ci, 2);
+ } else if (t->type == 0) { /* TO-220 Style */
+ polys += Rect(0, 0, 0, 1.5, 1.5, 0.5);
+ {
+ GLfloat texfg[] = {0.7, 0.7, 0.7, 1.0};
+ GLfloat s = 0.015;
+ XCharStruct e;
+ int w;
+ texture_string_metrics (ci->font, t->text, &e, 0, 0);
+ w = e.width;
+ glPushMatrix();
+ glTranslatef (0.75, 0.75, 0.01);
+ glScalef (s, s, s);
+ glTranslatef (-w/2, 0, 0);
+ glColor4fv (texfg);
+ print_texture_string (ci->font, t->text);
+ glPopMatrix();
+ }
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+ glDepthMask(GL_TRUE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shin);
+ polys += Rect(0, 0, -0.5, 1.5, 1.5, 0.30);
+ if (!glIsEnabled(GL_NORMALIZE)) glEnable(GL_NORMALIZE);
+ glTranslatef(0.75, 1.875, -0.55);
+ polys += HoledRectangle(ci, 1.5, 0.75, 0.25, 0.2, 8);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, nospec);
+ glTranslatef(-0.375, -1.875, 0);
+ glRotatef(90, 0, 0, -1);
+ polys += wire(ci, 2);
+ glTranslatef(0, 0.375, 0);
+ polys += wire(ci, 2);
+ glTranslatef(0, 0.375, 0);
+ polys += wire(ci, 2);
+ } else { /* SMC transistor */
+/* Draw the body */
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col);
+ glTranslatef(-0.5, -0.25, 0.1);
+ polys += Rect(0, 0, 0, 1, 0.5, 0.2);
+/* Draw the markings */
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glDepthMask(GL_FALSE);
+ glBegin (GL_QUADS);
+ glNormal3f(0, 0, 1);
+ glTexCoord2f(0, 1);
+ glVertex3f(0.2, 0, 0.01);
+ glTexCoord2f(1, 1);
+ glVertex3f(0.8, 0, 0.01);
+ glTexCoord2f(1, 0);
+ glVertex3f(0.8, 0.5, 0.01);
+ glTexCoord2f(0, 0);
+ glVertex3f(0.2, 0.5, 0.01);
+ polys++;
+ glEnd();
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+ glDepthMask(GL_TRUE);
+/* Now draw the legs */
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT, GL_SHININESS, &shin);
+ polys += Rect(0.25, -0.1, -0.05, 0.1, 0.1, 0.2);
+ polys += Rect(0.75, -0.1, -0.05, 0.1, 0.1, 0.2);
+ polys += Rect(0.5, 0.5, -0.05, 0.1, 0.1, 0.2);
+ polys += Rect(0.25, -0.2, -0.2, 0.1, 0.15, 0.1);
+ polys += Rect(0.75, -0.2, -0.2, 0.1, 0.15, 0.1);
+ polys += Rect(0.5, 0.5, -0.2, 0.1, 0.15, 0.1);
+ }
+ glPopMatrix();
+ return polys;
+}
+
+static Component * NewComponent(ModeInfo *mi)
+{
+ Circuit *ci = &circuit[MI_SCREEN(mi)];
+ Component *c;
+ float rnd;
+
+ c = malloc(sizeof(Component));
+ c->angle = RAND_RANGE(0,360);
+ rnd = f_rand();
+ if (rnd < 0.25) { /* come from the top */
+ c->y = ci->YMAX/2;
+ c->x = RAND_RANGE(0, ci->XMAX) - ci->XMAX/2;
+ if (c->x > 0)
+ c->dx = 0 - RAND_RANGE(0.5, 2);
+ else
+ c->dx = RAND_RANGE(0.5, 2);
+ c->dy = 0 - RAND_RANGE(0.5, 2);
+ } else if (rnd < 0.5) { /* come from the bottom */
+ c->y = 0 - ci->YMAX/2;
+ c->x = RAND_RANGE(0, ci->XMAX) - ci->XMAX/2;
+ if (c->x > 0)
+ c->dx = 0 - RAND_RANGE(0.5, 2);
+ else
+ c->dx = RAND_RANGE(0.5, 2);
+ c->dy = RAND_RANGE(0.5, 2);
+ } else if (rnd < 0.75) { /* come from the left */
+ c->x = 0 - ci->XMAX/2;
+ c->y = RAND_RANGE(0, ci->YMAX) - ci->YMAX/2;
+ c->dx = RAND_RANGE(0.5, 2);
+ if (c->y > 0)
+ c->dy = 0 - RAND_RANGE(0.5, 2);
+ else
+ c->dy = RAND_RANGE(0.5, 2);
+ } else { /* come from the right */
+ c->x = ci->XMAX/2;
+ c->y = RAND_RANGE(0, ci->YMAX) - ci->YMAX/2;
+ c->dx = 0 - RAND_RANGE(0.5, 2);
+ if (c->y > 0)
+ c->dy = 0 - RAND_RANGE(0.5, 2);
+ else
+ c->dy = RAND_RANGE(0.5, 2);
+ }
+ c->z = RAND_RANGE(0, 7) - 9;
+ c->rotx = f_rand();
+ c->roty = f_rand();
+ c->rotz = f_rand();
+ c->drot = f_rand() * 3;
+ c->rdeg = 0;
+ c->dz = f_rand()*2 - 1;
+ c->norm = 0;
+ c->alpha = 0; /* explicitly set to 1 later */
+ rnd = random() % 11;
+ if (rnd < 1) {
+ c->c = NewResistor();
+ c->type = 0;
+ if (f_rand() < 0.4)
+ c->norm = 1; /* some resistors shine */
+ } else if (rnd < 2) {
+ c->c = NewDiode();
+ if (f_rand() < 0.4)
+ c->norm = 1; /* some diodes shine */
+ c->type = 1;
+ } else if (rnd < 3) {
+ c->c = NewTransistor(mi);
+ c->norm = 1;
+ c->type = 2;
+ } else if (rnd < 4) {
+ c->c = NewCapacitor(ci);
+ c->norm = 1;
+ c->type = 4;
+ } else if (rnd < 5) {
+ c->c = NewIC(mi);
+ c->type = 5;
+ c->norm = 1;
+ } else if (rnd < 6) {
+ c->c = NewLED(ci);
+ c->type = 3;
+ c->norm = 1;
+ c->alpha = 1;
+ } else if (rnd < 7) {
+ c->c = NewFuse(ci);
+ c->norm = 1;
+ c->type = 7;
+ c->alpha = 1;
+ } else if (rnd < 8) {
+ c->c = NewRCA(ci);
+ c->norm = 1;
+ c->type = 8;
+ } else if (rnd < 9) {
+ c->c = NewThreeFive(ci);
+ c->norm = 1;
+ c->type = 9;
+ } else if (rnd < 10) {
+ c->c = NewSwitch(ci);
+ c->norm = 1;
+ c->type = 10;
+ } else {
+ c->c = NewDisp(ci);
+ c->type = 6;
+ }
+ return c;
+}
+
+static Transistor *NewTransistor(ModeInfo *mi)
+{
+ Transistor *t;
+
+ t = malloc(sizeof(Transistor));
+ t->type = (random() % 3);
+ if (t->type == 0) {
+ t->text = transistortypes[random() % countof(transistortypes)];
+ } else if (t->type == 2) {
+ t->text = smctypes[random() % countof(smctypes)];
+ } else if (t->type == 1) {
+ t->text = to92types[random() % countof(to92types)];
+ }
+ return t;
+}
+
+static Capacitor *NewCapacitor(Circuit *ci)
+{
+ Capacitor *c;
+
+ c = malloc(sizeof(Capacitor));
+ c->type = (f_rand() < 0.5);
+ if (!c->type) {
+ c->length = RAND_RANGE(0.5, 1);
+ c->width = RAND_RANGE(0.5, 1);
+ } else {
+ c->width = RAND_RANGE(0.3, 1);
+ }
+ return c;
+}
+
+/* 7 segment display */
+
+static Disp *NewDisp(Circuit *ci)
+{
+ Disp *d;
+
+ d = malloc(sizeof(Disp));
+ if (seven)
+ d->value = 7;
+ else
+ d->value = RAND_RANGE(0, 10);
+ return d;
+}
+
+
+static IC *NewIC(ModeInfo *mi)
+{
+ IC *c;
+ int pins;
+ const char *val;
+ int types[countof(ictypes)], i, n = 0;
+
+ c = malloc(sizeof(IC));
+ c->type = 0;
+ switch((int)RAND_RANGE(0,4)) {
+ case 0:
+ pins = 8;
+ break;
+ case 1:
+ pins = 14;
+ break;
+ case 2:
+ pins = 16;
+ break;
+ case 3:
+ default:
+ pins = 24;
+ break;
+ }
+ for (i = 0 ; i < countof(ictypes) ; i++) {
+ if (ictypes[i].pins == pins) {
+ types[n] = i;
+ n++;
+ }
+ }
+
+ if (n > countof(types)) abort();
+ val = ictypes[types[random() % n]].val;
+ sprintf(c->text, "%s\n%02d%02d", val,
+ (int)RAND_RANGE(80, 100), (int)RAND_RANGE(1,53));
+ c->pins = pins;
+ return c;
+}
+
+static LED *NewLED(Circuit *ci)
+{
+ LED *l;
+ float r;
+
+ l = malloc(sizeof(LED));
+ r = f_rand();
+ l->light = 0;
+ if (!ci->light && (f_rand() < 0.4)) {
+ ci->light = 1;
+ l->light = 1;
+ }
+ if (r < 0.2) {
+ l->r = 0.9; l->g = 0; l->b = 0;
+ } else if (r < 0.4) {
+ l->r = 0.3; l->g = 0.9; l->b = 0;
+ } else if (r < 0.6) {
+ l->r = 0.8; l->g = 0.9; l->b = 0;
+ } else if (r < 0.8) {
+ l->r = 0.0; l->g = 0.2; l->b = 0.8;
+ } else {
+ l->r = 0.9, l->g = 0.55, l->b = 0;
+ }
+ return l;
+}
+
+static Fuse *NewFuse(Circuit *ci)
+{
+ Fuse *f;
+
+ f = malloc(sizeof(Fuse));
+ return f;
+}
+
+static RCA *NewRCA(Circuit *ci)
+{
+ RCA *r;
+
+ r = malloc(sizeof(RCA));
+ r->col = (random() % 10 < 5);
+ return r;
+}
+
+static ThreeFive *NewThreeFive(Circuit *ci)
+{
+ ThreeFive *r;
+
+ r = malloc(sizeof(ThreeFive));
+ return r;
+}
+
+static Switch *NewSwitch(Circuit *ci)
+{
+ Switch *s;
+
+ s = malloc(sizeof(Switch));
+ s->position = 0;
+ return s;
+}
+
+static Diode *NewDiode(void)
+{
+ Band *b;
+ Diode *ret;
+
+ ret = malloc(sizeof(Diode));
+ b = malloc(sizeof(Band));
+ b->pos = 0.8;
+ b->len = 0.1;
+ if (f_rand() < 0.5) {
+ b->r = 1;
+ b->g = 1;
+ b->b = 1;
+ ret->r = 0.7; ret->g = 0.1 ; ret->b = 0.1;
+ } else {
+ b->r = 1;
+ b->g = 1;
+ b->b = 1;
+ ret->r = 0.2; ret->g = 0.2 ; ret->b = 0.2;
+ }
+ ret->band = b;
+ return ret;
+}
+
+
+static Resistor * NewResistor(void)
+{
+ int v, m, t; /* value, multiplier, tolerance */
+ Resistor *ret;
+
+ v = RAND(9);
+ m = RAND(5);
+ t = (RAND(10) < 5) ? 10 : 11;
+ ret = malloc(sizeof(Resistor));
+
+ if (seven) {
+ ret->b[0] = ret->b[1] = ret->b[2] = 7;
+ } else {
+ ret->b[0] = values[v][0];
+ ret->b[1] = values[v][1];
+ ret->b[2] = m;
+ }
+ ret->b[3] = t;
+
+ return ret;
+}
+
+static void makebandlist(Circuit *ci)
+{
+ int i;
+ GLfloat col[] = {0,0,0,0};
+ GLfloat spec[] = {0.8,0.8,0.8,0};
+ GLfloat shine = 40;
+
+ for (i = 0 ; i < 12 ; i++) {
+ ci->band_list[i] = glGenLists(1);
+ glNewList(ci->band_list[i], GL_COMPILE);
+ col[0] = colorcodes[i][0];
+ col[1] = colorcodes[i][1];
+ col[2] = colorcodes[i][2];
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &shine);
+ ci->band_list_polys[i] = createCylinder(ci, 0.1, 0.42, 0, 0);
+ glEndList();
+ }
+}
+
+
+static int bandedCylinder(Circuit *ci,
+ float radius, float l,
+ GLfloat r, GLfloat g, GLfloat bl,
+ Band **b, int nbands)
+{
+ int polys = 0;
+ int n; /* band number */
+ GLfloat col[] = {0,0,0,0};
+
+ col[0] = r; col[1] = g; col[2] = bl;
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ polys += createCylinder(ci, l, radius, 1, 0); /* body */
+ for (n = 0 ; n < nbands ; n++) {
+ glPushMatrix();
+ glTranslatef(b[n]->pos*l, 0, 0);
+ col[0] = b[n]->r; col[1] = b[n]->g; col[2] = b[n]->b;
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, col);
+ polys += createCylinder(ci, b[n]->len*l, radius*1.05, 0, 0); /* band */
+ glPopMatrix();
+ }
+ return polys;
+}
+
+static int drawgrid(Circuit *ci)
+{
+ int polys = 0;
+ GLfloat x, y;
+ GLfloat col3[] = {0, 0.8, 0};
+
+ if (!ci->draw_s) {
+ if (f_rand() < ((rotatespeed > 0) ? 0.05 : 0.01)) {
+ ci->draw_sdir = RAND_RANGE(0, 4);
+ ci->draw_ds = RAND_RANGE(0.4, 0.8);
+ switch (ci->draw_sdir) {
+ case 0:
+ ci->draw_sx = -ci->XMAX/2;
+ ci->draw_sy = ((int)RAND_RANGE(0, ci->YMAX/2))*2 - ci->YMAX/2;
+ break;
+ case 1:
+ ci->draw_sx = ci->XMAX/2;
+ ci->draw_sy = ((int)RAND_RANGE(0, ci->YMAX/2))*2 - ci->YMAX/2;
+ break;
+ case 2:
+ ci->draw_sy = ci->YMAX/2;
+ ci->draw_sx = ((int)RAND_RANGE(0, ci->XMAX/2))*2 - ci->XMAX/2;
+ break;
+ case 3:
+ ci->draw_sy = -ci->YMAX/2;
+ ci->draw_sx = ((int)RAND_RANGE(0, ci->XMAX/2))*2 - ci->XMAX/2;
+ break;
+ }
+ ci->draw_s = 1;
+ }
+ } else if (rotatespeed <= 0) {
+ if (ci->grid_col[1] < 0.25) {
+ ci->grid_col[1] += 0.025; ci->grid_col[2] += 0.005;
+ ci->grid_col2[1] += 0.015 ; ci->grid_col2[2] += 0.005;
+ }
+ }
+
+ glDisable(GL_LIGHTING);
+ if (ci->draw_s) {
+ glColor3fv(col3);
+ glPushMatrix();
+ glTranslatef(ci->draw_sx, ci->draw_sy, -10);
+ polys += sphere(ci, 0.1, 10, 10, 0, 10, 0, 10);
+ if (ci->draw_sdir == 0)
+ glTranslatef(-ci->draw_ds, 0, 0);
+ if (ci->draw_sdir == 1)
+ glTranslatef(ci->draw_ds, 0, 0);
+ if (ci->draw_sdir == 2)
+ glTranslatef(0, ci->draw_ds, 0);
+ if (ci->draw_sdir == 3)
+ glTranslatef(0, -ci->draw_ds, 0);
+ polys += sphere(ci, 0.05, 10, 10, 0, 10, 0, 10);
+ glPopMatrix();
+ if (ci->draw_sdir == 0) {
+ ci->draw_sx += ci->draw_ds;
+ if (ci->draw_sx > ci->XMAX/2)
+ ci->draw_s = 0;
+ }
+ if (ci->draw_sdir == 1) {
+ ci->draw_sx -= ci->draw_ds;
+ if (ci->draw_sx < -ci->XMAX/2)
+ ci->draw_s = 0;
+ }
+ if (ci->draw_sdir == 2) {
+ ci->draw_sy -= ci->draw_ds;
+ if (ci->draw_sy < ci->YMAX/2)
+ ci->draw_s = 0;
+ }
+ if (ci->draw_sdir == 3) {
+ ci->draw_sy += ci->draw_ds;
+ if (ci->draw_sy > ci->YMAX/2)
+ ci->draw_s = 0;
+ }
+ } else if (rotatespeed <= 0) {
+ if (ci->grid_col[1] > 0) {
+ ci->grid_col[1] -= 0.0025; ci->grid_col[2] -= 0.0005;
+ ci->grid_col2[1] -= 0.0015 ; ci->grid_col2[2] -= 0.0005;
+ }
+ }
+ for (x = -ci->XMAX/2 ; x <= ci->XMAX/2 ; x+= 2) {
+ glColor3fv(ci->grid_col);
+ glBegin(GL_LINES);
+ glVertex3f(x, ci->YMAX/2, -10);
+ glVertex3f(x, -ci->YMAX/2, -10);
+ glColor3fv(ci->grid_col2);
+ glVertex3f(x-0.02, ci->YMAX/2, -10);
+ glVertex3f(x-0.02, -ci->YMAX/2, -10);
+ glVertex3f(x+0.02, ci->YMAX/2, -10);
+ glVertex3f(x+0.02, -ci->YMAX/2, -10);
+ glEnd();
+ }
+ for (y = -ci->YMAX/2 ; y <= ci->YMAX/2 ; y+= 2) {
+ glColor3fv(ci->grid_col);
+ glBegin(GL_LINES);
+ glVertex3f(-ci->XMAX/2, y, -10);
+ glVertex3f(ci->XMAX/2, y, -10);
+ glColor3fv(ci->grid_col2);
+ glVertex3f(-ci->XMAX/2, y-0.02, -10);
+ glVertex3f(ci->XMAX/2, y-0.02, -10);
+ glVertex3f(-ci->XMAX/2, y+0.02, -10);
+ glVertex3f(ci->XMAX/2, y+0.02, -10);
+ glEnd();
+ }
+ glEnable(GL_LIGHTING);
+ return polys;
+}
+
+static void display(ModeInfo *mi)
+{
+ Circuit *ci = &circuit[MI_SCREEN(mi)];
+ GLfloat light_sp[] = {0.8, 0.8, 0.8, 1.0};
+ GLfloat black[] = {0, 0, 0, 1.0};
+ int j;
+
+ mi->polygon_count = 0;
+
+ if (ci->display_i == 0) {
+ for (ci->display_i = 0 ; ci->display_i < maxparts ; ci->display_i++) {
+ ci->components[ci->display_i] = NULL;
+ }
+ }
+ glEnable(GL_LIGHTING);
+ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+ gluLookAt(ci->viewer[0], ci->viewer[1], ci->viewer[2],
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+ glPushMatrix();
+ glRotatef(ci->rotate_angle, 0, 0, 1);
+ ci->rotate_angle += 0.01 * (float)rotatespeed;
+ if (ci->rotate_angle >= 360) ci->rotate_angle = 0;
+
+ glLightfv(GL_LIGHT0, GL_POSITION, ci->lightpos);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp);
+ glLighti(GL_LIGHT0, GL_CONSTANT_ATTENUATION, (GLfloat)1);
+ glLighti(GL_LIGHT0, GL_LINEAR_ATTENUATION, (GLfloat)0.5);
+ glLighti(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, (GLfloat)0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (h, h, h);
+ h = 2;
+ glScalef (h, h, h);
+ }
+# endif
+
+ mi->polygon_count += drawgrid(ci);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, light_sp);
+ if (f_rand() < 0.05) {
+ for (j = 0 ; j < maxparts ; j++) {
+ if (ci->components[j] == NULL) {
+ ci->components[j] = NewComponent(mi);
+ j = maxparts;
+ }
+ }
+ reorder(&ci->components[0]);
+ }
+ for (j = 0 ; j < maxparts ; j++) {
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, black);
+ glMaterialfv(GL_FRONT, GL_EMISSION, black);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, black);
+ if (ci->components[j] != NULL) {
+ if (DrawComponent(ci, ci->components[j], &mi->polygon_count)) {
+ free(ci->components[j]); ci->components[j] = NULL;
+ }
+ }
+ }
+ glPopMatrix();
+ glFlush();
+}
+
+/* ensure transparent components are at the end */
+static void reorder(Component *c[])
+{
+ int i, j, k;
+ Component *c1[MAX_COMPONENTS];
+ Component *c2[MAX_COMPONENTS];
+
+ j = 0;
+ for (i = 0 ; i < maxparts ; i++) { /* clear old matrix */
+ c1[i] = NULL;
+ c2[i] = NULL;
+ }
+ for (i = 0 ; i < maxparts ; i++) {
+ if (c[i] == NULL) continue;
+ if (c[i]->alpha) { /* transparent parts go to c1 */
+ c1[j] = c[i];
+ j++;
+ } else { /* opaque parts go to c2 */
+ c2[i] = c[i];
+ }
+ }
+ for (i = 0 ; i < maxparts ; i++) { /* clear old matrix */
+ c[i] = NULL;
+ }
+ k = 0;
+ for (i = 0 ; i < maxparts ; i++) { /* insert opaque part */
+ if (c2[i] != NULL) {
+ c[k] = c2[i];
+ k++;
+ }
+ }
+ for (i = 0 ; i < j ; i++) { /* insert transparent parts */
+ c[k] = c1[i];
+ k++;
+ }
+}
+
+ENTRYPOINT void reshape_circuit(ModeInfo *mi, int width, int height)
+{
+ Circuit *ci = &circuit[MI_SCREEN(mi)];
+ int y = 0;
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0,y,(GLint)width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-1.0,1.0,-h,h,1.5,35.0);
+ glMatrixMode(GL_MODELVIEW);
+ ci->win_h = height;
+ ci->win_w = width;
+ ci->YMAX = ci->XMAX * h;
+}
+
+
+ENTRYPOINT void init_circuit(ModeInfo *mi)
+{
+int screen = MI_SCREEN(mi);
+Circuit *ci;
+
+ MI_INIT(mi, circuit);
+ ci = &circuit[screen];
+ ci->window = MI_WINDOW(mi);
+
+ ci->XMAX = ci->YMAX = 50;
+ ci->viewer[2] = 14;
+ ci->lightpos[0] = 7;
+ ci->lightpos[1] = 7;
+ ci->lightpos[2] = 15;
+ ci->lightpos[3] = 1;
+
+ ci->grid_col[1] = 0.25;
+ ci->grid_col[2] = 0.05;
+ ci->grid_col2[1] = 0.125;
+ ci->grid_col2[2] = 0.05;
+
+ ci->font = load_texture_font (MI_DISPLAY(mi), "componentFont");
+
+ if (maxparts >= MAX_COMPONENTS)
+ maxparts = MAX_COMPONENTS-1;
+
+ if ((ci->glx_context = init_GL(mi)) != NULL) {
+ reshape_circuit(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+ if (uselight == 0)
+ ci->light = 1;
+ glShadeModel(GL_SMOOTH);
+ glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ make_tables(ci);
+ makebandlist(ci);
+
+}
+
+ENTRYPOINT void draw_circuit(ModeInfo *mi)
+{
+ Circuit *ci = &circuit[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if (!ci->glx_context)
+ return;
+
+ glXMakeCurrent(disp, w, *(ci->glx_context));
+
+ display(mi);
+
+ if(mi->fps_p) do_fps(mi);
+ glFinish();
+ glXSwapBuffers(disp, w);
+}
+
+ENTRYPOINT void free_circuit(ModeInfo *mi)
+{
+ Circuit *ci = &circuit[MI_SCREEN(mi)];
+ if (ci->font)
+ free_texture_font (ci->font);
+ FreeAllGL(mi);
+}
+
+XSCREENSAVER_MODULE ("Circuit", circuit)
+
+#endif
diff --git a/hacks/glx/circuit.man b/hacks/glx/circuit.man
new file mode 100644
index 0000000..794f97b
--- /dev/null
+++ b/hacks/glx/circuit.man
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "5-May-2004" "X Version 11"
+.SH NAME
+circuit - animates a number of 3D electronic components.
+.SH SYNOPSIS
+.B circuit
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-parts \fInumber\fP]
+[\-no-spin]
+[\-rotate]
+[\-speed \fInumber\fP]
+[\-no-light]
+[\-fps]
+.SH DESCRIPTION
+Animates a number of 3D electronic components.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-parts \fInumber\fP
+Number of parts. Default: 10.
+.TP 8
+.B \-spin | \-no-spin
+Whether the objects should spin.
+.TP 8
+.B \-rotate | \-no-rotate
+Whether the scene should spin.
+.TP 8
+.B \-speed \fInumber\fP
+Rotation speed, 0 - 100. Default: 1.
+.TP 8
+.B \-light | \-no-light
+Whether to us lighting, or flat coloring.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Ben Buxton.
diff --git a/hacks/glx/cityflow.c b/hacks/glx/cityflow.c
new file mode 100644
index 0000000..2b3bd4f
--- /dev/null
+++ b/hacks/glx/cityflow.c
@@ -0,0 +1,545 @@
+/* cityflow, Copyright (c) 2014-2017 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*count: 800 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define free_cube 0
+# define release_cube 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SKEW "12"
+
+#define DEF_WAVES "6"
+#define DEF_WAVE_SPEED "25"
+#define DEF_WAVE_RADIUS "256"
+static int texture_size = 512;
+
+typedef struct {
+ GLfloat x, y, z;
+ GLfloat w, h, d;
+ GLfloat cth, sth;
+} cube;
+
+typedef struct {
+ int x, y;
+ double xth, yth;
+} wave_src;
+
+typedef struct {
+ int nwaves;
+ int radius;
+ int speed;
+ wave_src *srcs;
+ int *heights;
+} waves;
+
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+ GLuint cube_list;
+ int cube_polys;
+ int ncubes;
+ cube *cubes;
+ waves *waves;
+ GLfloat min_x, max_x, min_y, max_y;
+ int texture_width, texture_height;
+ int ncolors;
+ XColor *colors;
+
+} cube_configuration;
+
+static cube_configuration *ccs = NULL;
+
+static int wave_count;
+static int wave_speed;
+static int wave_radius;
+static int skew;
+
+static XrmOptionDescRec opts[] = {
+ {"-waves", ".waves", XrmoptionSepArg, 0 },
+ {"-wave-speed", ".waveSpeed", XrmoptionSepArg, 0 },
+ {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 },
+ {"-skew", ".skew", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&wave_count, "waves", "Waves", DEF_WAVES, t_Int},
+ {&wave_speed, "waveSpeed", "WaveSpeed", DEF_WAVE_SPEED, t_Int},
+ {&wave_radius,"waveRadius","WaveRadius", DEF_WAVE_RADIUS,t_Int},
+ {&skew, "skew", "Skew", DEF_SKEW,t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {
+ countof(opts), opts, countof(vars), vars, NULL};
+
+
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 2) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ /* For this one it's really important to minimize the distance between
+ near and far. */
+ gluPerspective (30, 1/h, 10, 50);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+static void
+reset_colors (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ make_smooth_colormap (0, 0, 0,
+ cc->colors, &cc->ncolors,
+ False, 0, False);
+ if (! MI_IS_WIREFRAME(mi))
+ glClearColor (cc->colors[0].red / 65536.0,
+ cc->colors[0].green / 65536.0,
+ cc->colors[0].blue / 65536.0,
+ 1);
+}
+
+
+static void
+tweak_cubes (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ cube *cube = &cc->cubes[i];
+ cube->x += (frand(2)-1)*0.01;
+ cube->y += (frand(2)-1)*0.01;
+ cube->z += (frand(2)-1)*0.01;
+ }
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+
+ /* Neutralize any vertical motion */
+ GLfloat rot = current_device_rotation();
+ Bool rotp = ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135));
+
+ if (event->xany.type == ButtonPress ||
+ event->xany.type == ButtonRelease)
+ {
+ if (rotp)
+ event->xbutton.x = MI_WIDTH(mi) / 2;
+ else
+ event->xbutton.y = MI_HEIGHT(mi) / 2;
+ }
+ else if (event->xany.type == MotionNotify)
+ {
+ if (rotp)
+ event->xmotion.x = MI_WIDTH(mi) / 2;
+ else
+ event->xmotion.y = MI_HEIGHT(mi) / 2;
+ }
+
+ if (gltrackball_event_handler (event, cc->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cc->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ reset_colors (mi);
+ tweak_cubes (mi);
+ gltrackball_reset (cc->trackball, 0, 0);
+ return True;
+ }
+
+ return False;
+}
+
+
+/* Waves.
+ Adapted from ../hacks/interference.c by Hannu Mallat.
+ */
+
+static void
+init_wave (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ waves *ww;
+ int i;
+ cc->waves = ww = (waves *) calloc (sizeof(*cc->waves), 1);
+ ww->nwaves = wave_count;
+ ww->radius = wave_radius;
+ ww->speed = wave_speed;
+ ww->heights = (int *) calloc (sizeof(*ww->heights), ww->radius);
+ ww->srcs = (wave_src *) calloc (sizeof(*ww->srcs), ww->nwaves);
+
+ for (i = 0; i < ww->radius; i++)
+ {
+ float max = (cc->ncolors * (ww->radius - i) / (float) ww->radius);
+ ww->heights[i] = ((max + max * cos(i / 50.0)) / 2.0);
+ }
+
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ ww->srcs[i].xth = frand(2.0) * M_PI;
+ ww->srcs[i].yth = frand(2.0) * M_PI;
+ }
+
+ cc->texture_width = texture_size;
+ cc->texture_height = texture_size;
+}
+
+
+static int
+interference_point (cube_configuration *cc, int x, int y)
+{
+ /* Compute the effect of the waves on a pixel. */
+
+ waves *ww = cc->waves;
+ int result = 0;
+ int i;
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ int dx = x - ww->srcs[i].x;
+ int dy = y - ww->srcs[i].y;
+ int dist = sqrt (dx*dx + dy*dy);
+ result += (dist >= ww->radius ? 0 : ww->heights[dist]);
+ }
+ result *= 0.4;
+ if (result > 255) result = 255;
+ return result;
+}
+
+
+static void
+interference (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ waves *ww = cc->waves;
+ int i;
+
+ /* Move the wave origins around
+ */
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ ww->srcs[i].xth += (ww->speed / 1000.0);
+ if (ww->srcs[i].xth > 2*M_PI)
+ ww->srcs[i].xth -= 2*M_PI;
+ ww->srcs[i].yth += (ww->speed / 1000.0);
+ if (ww->srcs[i].yth > 2*M_PI)
+ ww->srcs[i].yth -= 2*M_PI;
+
+ ww->srcs[i].x = (cc->texture_width/2 +
+ (cos (ww->srcs[i].xth) *
+ cc->texture_width / 2));
+ ww->srcs[i].y = (cc->texture_height/2 +
+ (cos (ww->srcs[i].yth) *
+ cc->texture_height / 2));
+ }
+}
+
+
+/* qsort comparator for sorting cubes by y position */
+static int
+cmp_cubes (const void *aa, const void *bb)
+{
+ const cube *a = (cube *) aa;
+ const cube *b = (cube *) bb;
+ return ((int) (b->y * 10000) -
+ (int) (a->y * 10000));
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ int i;
+ cube_configuration *cc;
+
+ MI_INIT (mi, ccs);
+
+ cc = &ccs[MI_SCREEN(mi)];
+
+ if ((cc->glx_context = init_GL(mi)) != NULL) {
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ }
+
+ cc->trackball = gltrackball_init (False);
+
+ cc->ncolors = 256;
+ cc->colors = (XColor *) calloc(cc->ncolors, sizeof(XColor));
+
+ reset_colors (mi);
+ init_wave (mi);
+
+ cc->ncubes = MI_COUNT (mi);
+
+ if (cc->ncubes < 1) cc->ncubes = 1;
+
+ cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes);
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ /* Set the size to roughly cover a 2x2 square on average. */
+ GLfloat scale = 1.8 / sqrt (cc->ncubes);
+ cube *cube = &cc->cubes[i];
+ double th = -(skew ? frand(skew) : 0) * M_PI / 180;
+
+ cube->x = (frand(1)-0.5);
+ cube->y = (frand(1)-0.5);
+
+ cube->z = frand(0.12);
+ cube->cth = cos(th);
+ cube->sth = sin(th);
+
+ cube->w = scale * (frand(1) + 0.2);
+ cube->d = scale * (frand(1) + 0.2);
+
+ if (cube->x < cc->min_x) cc->min_x = cube->x;
+ if (cube->y < cc->min_y) cc->min_y = cube->y;
+ if (cube->x > cc->max_x) cc->max_x = cube->x;
+ if (cube->y > cc->max_y) cc->max_y = cube->y;
+ }
+
+ /* Sorting by depth improves frame rate slightly. With 6000 polygons we get:
+ 3.9 FPS unsorted;
+ 3.1 FPS back to front;
+ 4.3 FPS front to back.
+ */
+ qsort (cc->cubes, cc->ncubes, sizeof(*cc->cubes), cmp_cubes);
+}
+
+
+static void
+animate_cubes (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ cube *cube = &cc->cubes[i];
+ GLfloat fx = (cube->x - cc->min_x) / (cc->max_x - cc->min_x);
+ GLfloat fy = (cube->y - cc->min_y) / (cc->max_y - cc->min_y);
+ int x = (int) (cc->texture_width * fx) % cc->texture_width;
+ int y = (int) (cc->texture_height * fy) % cc->texture_height;
+ unsigned char v = interference_point (cc, x, y);
+ cube->h = cube->z + (v / 256.0 / 2.5) + 0.1;
+ }
+}
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i;
+
+ if (!cc->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+
+ interference (mi);
+ animate_cubes (mi);
+
+ glShadeModel(GL_FLAT);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+ /* glEnable (GL_POLYGON_OFFSET_FILL); */
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ gltrackball_rotate (cc->trackball);
+ glRotatef (-180, 1, 0, 0);
+
+ {
+ GLfloat s = 15;
+ glScalef (s, s, s);
+ }
+ glRotatef (-90, 1, 0, 0);
+
+ glTranslatef (-0.18, 0, -0.18);
+ glRotatef (37, 1, 0, 0);
+ glRotatef (20, 0, 0, 1);
+
+ glScalef (2.1, 2.1, 2.1);
+
+ /* Position lights after device rotation. */
+ if (!wire)
+ {
+ static const GLfloat pos[4] = {0.0, 0.25, -1.0, 0.0};
+ static const GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ static const GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ }
+
+ glBegin (wire ? GL_LINES : GL_QUADS);
+
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ cube *cube = &cc->cubes[i];
+ GLfloat cth = cube->cth;
+ GLfloat sth = cube->sth;
+ GLfloat x = cth*cube->x + sth*cube->y;
+ GLfloat y = -sth*cube->x + cth*cube->y;
+ GLfloat w = cube->w/2;
+ GLfloat h = cube->h/2;
+ GLfloat d = cube->d/2;
+ GLfloat bottom = 5;
+
+ GLfloat xw = cth*w, xd = sth*d;
+ GLfloat yw = -sth*w, yd = cth*d;
+
+ GLfloat color[4];
+ int c = cube->h * cc->ncolors * 0.7;
+ c %= cc->ncolors;
+
+ color[0] = cc->colors[c].red / 65536.0;
+ color[1] = cc->colors[c].green / 65536.0;
+ color[2] = cc->colors[c].blue / 65536.0;
+ color[3] = 1.0;
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
+
+ /* Putting this in a display list makes no performance difference. */
+
+ if (! wire)
+ {
+ glNormal3f (0, 0, -1); /* top */
+ glVertex3f (x+xw+xd, y+yw+yd, -h);
+ glVertex3f (x+xw-xd, y+yw-yd, -h);
+ glVertex3f (x-xw-xd, y-yw-yd, -h);
+ glVertex3f (x-xw+xd, y-yw+yd, -h);
+ mi->polygon_count++;
+
+ glNormal3f (sth, cth, 0); /* front */
+ glVertex3f (x+xw+xd, y+yw+yd, bottom);
+ glVertex3f (x+xw+xd, y+yw+yd, -h);
+ glVertex3f (x-xw+xd, y-yw+yd, -h);
+ glVertex3f (x-xw+xd, y-yw+yd, bottom);
+ mi->polygon_count++;
+
+ glNormal3f (cth, -sth, 0); /* right */
+ glVertex3f (x+xw-xd, y+yw-yd, -h);
+ glVertex3f (x+xw+xd, y+yw+yd, -h);
+ glVertex3f (x+xw+xd, y+yw+yd, bottom);
+ glVertex3f (x+xw-xd, y+yw-yd, bottom);
+ mi->polygon_count++;
+
+# if 0 /* Omitting these makes no performance difference. */
+
+ glNormal3f (-cth, sth, 0); /* left */
+ glVertex3f (x-xw+xd, y-yw+yd, -h);
+ glVertex3f (x-xw-xd, y-yw-yd, -h);
+ glVertex3f (x-xw-xd, y-yw-yd, bottom);
+ glVertex3f (x-xw+xd, y-yw+yd, bottom);
+ mi->polygon_count++;
+
+ glNormal3f (-sth, -cth, 0); /* back */
+ glVertex3f (x-xw-xd, y-yw-yd, bottom);
+ glVertex3f (x-xw-xd, y-yw-yd, -h);
+ glVertex3f (x+xw-xd, y+yw-yd, -h);
+ glVertex3f (x+xw-xd, y+yw-yd, bottom);
+ mi->polygon_count++;
+# endif
+ }
+ else
+ {
+ glNormal3f (0, 0, -1); /* top */
+ glVertex3f (x+xw+xd, y+yw+yd, -h);
+ glVertex3f (x+xw-xd, y+yw-yd, -h);
+
+ glVertex3f (x+xw-xd, y+yw-yd, -h);
+ glVertex3f (x-xw-xd, y-yw-yd, -h);
+
+ glVertex3f (x-xw-xd, y-yw-yd, -h);
+ glVertex3f (x-xw+xd, y-yw+yd, -h);
+
+ glVertex3f (x-xw+xd, y-yw+yd, -h);
+ glVertex3f (x+xw+xd, y+yw+yd, -h);
+ mi->polygon_count++;
+ }
+ }
+ glEnd();
+
+ glPolygonOffset (0, 0);
+
+# if 0
+ glDisable(GL_DEPTH_TEST); /* Outline the playfield */
+ glColor3f(1,1,1);
+ glBegin(GL_LINE_LOOP);
+ glVertex3f (-0.5, -0.5, 0);
+ glVertex3f (-0.5, 0.5, 0);
+ glVertex3f ( 0.5, 0.5, 0);
+ glVertex3f ( 0.5, -0.5, 0);
+ glEnd();
+# endif
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+
+XSCREENSAVER_MODULE_2 ("Cityflow", cityflow, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/cityflow.man b/hacks/glx/cityflow.man
new file mode 100644
index 0000000..eabcdc2
--- /dev/null
+++ b/hacks/glx/cityflow.man
@@ -0,0 +1,77 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cityflow - waves of boxes.
+.SH SYNOPSIS
+.B cityflow
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-count \fInumber\fP]
+[\-wave-speed \fInumber\fP]
+[\-wave-radius \fInumber\fP]
+[\-waves \fInumber\fP]
+[\-skew \fInumber\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Waves move across a sea of boxes. The city swells. The walls are closing
+in.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
+.TP 8
+.B \-count \fInumber\fP
+Boxes. 50 - 4000. Default: 800.
+.TP 8
+.B \-wave-speed \fInumber\fP
+Wave speed. 5 - 150. Default: 25.
+.TP 8
+.B \-wave-radius \fInumber\fP
+Wave overlap. 5 - 512. Default: 256.
+.TP 8
+.B \-waves \fInumber\fP
+Wave complexity. 1 - 20. Default: 6.
+.TP 8
+.B \-skew \fInumber\fP
+Skew. 0 - 45. Default: 12.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2012 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/companion.c b/hacks/glx/companion.c
new file mode 100644
index 0000000..3c004a5
--- /dev/null
+++ b/hacks/glx/companion.c
@@ -0,0 +1,592 @@
+/* companioncube, Copyright (c) 2011-2018 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* The symptoms most commonly produced by Enrichment Center testing are
+ superstition, perceiving inanimate objects as alive, and hallucinations.
+ The Enrichment Center reminds you that the weighted companion cube will
+ never threaten to stab you and, in fact, cannot speak. In the event that
+ the Weighted Companion Cube does speak, the Enrichment Center urges you to
+ disregard its advice.
+ */
+
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*count: 3 \n" \
+ "*wireframe: False \n" \
+
+/* #define DEBUG */
+
+
+# define free_cube 0
+# define release_cube 0
+#define DEF_SPEED "1.0"
+#define DEF_SPIN "False"
+#define DEF_WANDER "False"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+#include "xlockmore.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "ximage-loader.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+#include "gllist.h"
+
+extern const struct gllist *companion_quad, *companion_disc, *companion_heart;
+static const struct gllist * const *all_objs[] = {
+ &companion_quad, &companion_disc, &companion_heart
+};
+#define BASE_QUAD 0
+#define BASE_DISC 1
+#define BASE_HEART 2
+#define FULL_CUBE 3
+
+#define SPEED_SCALE 0.2
+
+typedef struct {
+ GLfloat x, y, z;
+ GLfloat ix, iy, iz;
+ GLfloat dx, dy, dz;
+ GLfloat ddx, ddy, ddz;
+ GLfloat zr;
+ rotator *rot;
+ Bool spinner_p;
+} floater;
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLuint *dlists;
+ int cube_polys;
+
+ int nfloaters;
+ floater *floaters;
+
+} cube_configuration;
+
+static cube_configuration *bps = NULL;
+
+static GLfloat speed;
+static Bool do_spin;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+#define BOTTOM 28.0
+
+static void
+reset_floater (ModeInfo *mi, floater *f)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ f->y = -BOTTOM;
+ f->x = f->ix;
+ f->z = f->iz;
+
+ /* Yes, I know I'm varying the force of gravity instead of varying the
+ launch velocity. That's intentional: empirical studies indicate
+ that it's way, way funnier that way. */
+
+ f->dy = 5.0;
+ f->dx = 0;
+ f->dz = 0;
+
+ /* -0.18 max -0.3 top -0.4 middle -0.6 bottom */
+ f->ddy = speed * SPEED_SCALE * (-0.6 + BELLRAND(0.45));
+ f->ddx = 0;
+ f->ddz = 0;
+
+ if (do_spin || do_wander)
+ f->spinner_p = 0;
+ else
+ f->spinner_p = !(random() % (3 * bp->nfloaters));
+
+ if (! (random() % (30 * bp->nfloaters)))
+ {
+ f->dx = BELLRAND(1.8) * RANDSIGN();
+ f->dz = BELLRAND(1.8) * RANDSIGN();
+ }
+
+ f->zr = frand(180);
+ if (do_spin || do_wander)
+ {
+ f->y = 0;
+ if (bp->nfloaters > 2)
+ f->y += frand(3.0) * RANDSIGN();
+ }
+}
+
+
+static void
+tick_floater (ModeInfo *mi, floater *f)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (bp->button_down_p) return;
+
+ if (do_spin || do_wander) return;
+
+ f->dx += f->ddx;
+ f->dy += f->ddy;
+ f->dz += f->ddz;
+
+ f->x += f->dx * speed * SPEED_SCALE;
+ f->y += f->dy * speed * SPEED_SCALE;
+ f->z += f->dz * speed * SPEED_SCALE;
+
+ if (f->y < -BOTTOM ||
+ f->x < -BOTTOM*8 || f->x > BOTTOM*8 ||
+ f->z < -BOTTOM*8 || f->z > BOTTOM*8)
+ reset_floater (mi, f);
+}
+
+
+
+
+
+static int
+build_corner (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat s;
+ const struct gllist *gll = *all_objs[BASE_QUAD];
+
+ glPushMatrix();
+ glTranslatef (-0.5, -0.5, -0.5);
+ s = 0.659;
+ glScalef (s, s, s);
+
+ glRotatef (180, 0, 1, 0);
+ glRotatef (180, 0, 0, 1);
+ glTranslatef (-0.12, -1.64, 0.12);
+ glCallList (bp->dlists[BASE_QUAD]);
+ glPopMatrix();
+
+ return gll->points / 3;
+}
+
+
+static int
+build_face (ModeInfo *mi)
+{
+ int polys = 0;
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat s;
+ const struct gllist *gll;
+
+ GLfloat base_color[4] = {0.53, 0.60, 0.66, 1.00};
+ GLfloat heart_color[4] = {0.92, 0.67, 1.00, 1.00};
+ GLfloat disc_color[4] = {0.75, 0.92, 1.00, 1.00};
+ GLfloat corner_color[4] = {0.75, 0.92, 1.00, 1.00};
+
+ if (!wire)
+ {
+ GLfloat w = 0.010;
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, base_color);
+ glPushMatrix();
+ glNormal3f (0, 0, -1);
+ glTranslatef (-0.5, -0.5, -0.5);
+
+ glBegin(GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, 0.5-w, 0);
+ glVertex3f (0.5-w, 0.5-w, 0);
+ glVertex3f (0.5-w, 0, 0);
+
+ glVertex3f (0.5+w, 0, 0);
+ glVertex3f (0.5+w, 0.5-w, 0);
+ glVertex3f (1, 0.5-w, 0);
+ glVertex3f (1, 0, 0);
+
+ glVertex3f (0, 0.5+w, 0);
+ glVertex3f (0, 1, 0);
+ glVertex3f (0.5-w, 1, 0);
+ glVertex3f (0.5-w, 0.5+w, 0);
+
+ glVertex3f (0.5+w, 0.5+w, 0);
+ glVertex3f (0.5+w, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0.5+w, 0);
+ glEnd();
+
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color);
+
+ glNormal3f (0, -1, 0);
+ glBegin(GL_QUADS);
+ glVertex3f (0, 0.5+w, 0);
+ glVertex3f (1, 0.5+w, 0);
+ glVertex3f (1, 0.5+w, w);
+ glVertex3f (0, 0.5+w, w);
+ glEnd();
+
+ glNormal3f (0, 1, 0);
+ glBegin(GL_QUADS);
+ glVertex3f (0, 0.5-w, w);
+ glVertex3f (1, 0.5-w, w);
+ glVertex3f (1, 0.5-w, 0);
+ glVertex3f (0, 0.5-w, 0);
+ glEnd();
+
+ glNormal3f (-1, 0, 0);
+ glBegin(GL_QUADS);
+ glVertex3f (0.5+w, 0, w);
+ glVertex3f (0.5+w, 1, w);
+ glVertex3f (0.5+w, 1, 0);
+ glVertex3f (0.5+w, 0, 0);
+ glEnd();
+
+ glNormal3f (1, 0, 0);
+ glBegin(GL_QUADS);
+ glVertex3f (0.5-w, 0, 0);
+ glVertex3f (0.5-w, 1, 0);
+ glVertex3f (0.5-w, 1, w);
+ glVertex3f (0.5-w, 0, w);
+ glEnd();
+
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color);
+
+ glNormal3f (0, 0, -1);
+ glTranslatef (0, 0, w);
+ glBegin(GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glEnd();
+
+ glPopMatrix();
+ }
+
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, corner_color);
+
+ glPushMatrix();
+ polys += build_corner (mi); glRotatef (90, 0, 0, 1);
+ polys += build_corner (mi); glRotatef (90, 0, 0, 1);
+ polys += build_corner (mi); glRotatef (90, 0, 0, 1);
+ polys += build_corner (mi);
+
+ glRotatef (90, 0, 0, 1);
+ glTranslatef (0.585, -0.585, -0.5655);
+
+ s = 10.5;
+ glScalef (s, s, s);
+ glRotatef (180, 0, 1, 0);
+
+ if (! wire)
+ {
+ gll = *all_objs[BASE_HEART];
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, heart_color);
+ glCallList (bp->dlists[BASE_HEART]);
+ polys += gll->points / 3;
+ }
+
+ gll = *all_objs[BASE_DISC];
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, disc_color);
+ glCallList (bp->dlists[BASE_DISC]);
+ polys += gll->points / 3;
+
+ glPopMatrix();
+ return polys;
+}
+
+
+static int
+build_cube (ModeInfo *mi)
+{
+ int polys = 0;
+ glPushMatrix();
+ polys += build_face (mi); glRotatef (90, 0, 1, 0);
+ polys += build_face (mi); glRotatef (90, 0, 1, 0);
+ polys += build_face (mi); glRotatef (90, 0, 1, 0);
+ polys += build_face (mi); glRotatef (90, 1, 0, 0);
+ polys += build_face (mi); glRotatef (180,1, 0, 0);
+ polys += build_face (mi);
+ glPopMatrix();
+ return polys;
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ cube_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {0.7, 0.2, 0.4, 0.0};
+/* GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};*/
+ GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ bp->trackball = gltrackball_init (False);
+
+ bp->dlists = (GLuint *) calloc (countof(all_objs)+2, sizeof(GLuint));
+ for (i = 0; i < countof(all_objs)+1; i++)
+ bp->dlists[i] = glGenLists (1);
+
+ for (i = 0; i < countof(all_objs); i++)
+ {
+ const struct gllist *gll = *all_objs[i];
+ glNewList (bp->dlists[i], GL_COMPILE);
+ renderList (gll, wire);
+ glEndList ();
+ }
+
+ glNewList (bp->dlists[i], GL_COMPILE);
+ bp->cube_polys = build_cube (mi);
+ glEndList ();
+
+
+ bp->nfloaters = MI_COUNT (mi);
+ bp->floaters = (floater *) calloc (bp->nfloaters, sizeof (floater));
+
+ for (i = 0; i < bp->nfloaters; i++)
+ {
+ floater *f = &bp->floaters[i];
+ double spin_speed = do_spin ? 0.7 : 10;
+ double wander_speed = do_wander ? 0.02 : 0.05 * speed * SPEED_SCALE;
+ double spin_accel = 0.5;
+ f->rot = make_rotator (spin_speed, spin_speed, spin_speed,
+ spin_accel,
+ wander_speed,
+ True);
+ if (bp->nfloaters == 2)
+ {
+ f->x = (i ? 2 : -2);
+ }
+ else if (i != 0)
+ {
+ double th = (i - 1) * M_PI*2 / (bp->nfloaters-1);
+ double r = 3;
+ f->x = r * cos(th);
+ f->z = r * sin(th);
+ }
+
+ f->ix = f->x;
+ f->iy = f->y;
+ f->iz = f->z;
+ reset_floater (mi, f);
+ }
+}
+
+
+static void
+draw_floater (ModeInfo *mi, floater *f)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat n;
+ double x, y, z;
+
+ get_position (f->rot, &x, &y, &z, !bp->button_down_p);
+
+ glPushMatrix();
+ glTranslatef (f->x, f->y, f->z);
+
+ if (do_wander)
+ glTranslatef (x, y, z);
+
+ if (do_spin)
+ get_rotation (f->rot, &x, &y, &z, !bp->button_down_p);
+
+ if (do_spin || f->spinner_p)
+ {
+ glRotatef (x * 360, 1, 0, 0);
+ glRotatef (y * 360, 0, 1, 0);
+ glRotatef (z * 360, 0, 0, 1);
+ }
+ else
+ {
+ glRotatef (f->zr * 360, 0, 1, 0);
+ }
+
+ n = 1.5;
+ if (bp->nfloaters > 99) n *= 0.05;
+ else if (bp->nfloaters > 25) n *= 0.18;
+ else if (bp->nfloaters > 9) n *= 0.3;
+ else if (bp->nfloaters > 1) n *= 0.7;
+
+ n *= 2;
+
+ if ((do_spin || do_wander) && bp->nfloaters > 1)
+ n *= 0.7;
+
+ glScalef(n, n, n);
+
+ glCallList (bp->dlists[FULL_CUBE]);
+ mi->polygon_count += bp->cube_polys;
+/* build_cube (mi);*/
+
+ glPopMatrix();
+}
+
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ gltrackball_rotate (bp->trackball);
+
+ glScalef (2, 2, 2);
+
+ mi->polygon_count = 0;
+
+# if 0
+ {
+ floater F;
+ F.x = F.y = F.z = 0;
+ F.dx = F.dy = F.dz = 0;
+ F.ddx = F.ddy = F.ddz = 0;
+ F.rot = make_rotator (0, 0, 0, 1, 0, False);
+ glRotatef (45, 0, 1, 0);
+ draw_floater (mi, &F);
+ }
+# else
+ for (i = 0; i < bp->nfloaters; i++)
+ {
+ floater *f = &bp->floaters[i];
+ draw_floater (mi, f);
+ tick_floater (mi, f);
+ }
+# endif
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("CompanionCube", companioncube, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/companion_disc.c b/hacks/glx/companion_disc.c
new file mode 100644
index 0000000..b2f1830
--- /dev/null
+++ b/hacks/glx/companion_disc.c
@@ -0,0 +1,9593 @@
+#include "gllist.h"
+static const float data[]={
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ 0,-0.999938,0.011104,0.055885,0.038542,-0.006167,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ 0,-0.999938,0.011104,0.055885,0.038542,-0.006167,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167,
+ 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ 0,-0.999938,0.011104,0.055885,0.038542,-0.006167,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.999938,0,0.011104,0.073229,0.055885,-0.006167,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.999938,0,0.011104,0.073229,0.055885,-0.006167,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167,
+ 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.999938,0,0.011104,0.073229,0.055885,-0.006167,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0,0.999938,0.011104,0.055885,0.073229,-0.006167,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ 0,0.999938,0.011104,0.055885,0.073229,-0.006167,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167,
+ -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ 0,0.999938,0.011104,0.055885,0.073229,-0.006167,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.999938,0,0.011104,0.038542,0.055885,-0.006167,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.999938,0,0.011104,0.038542,0.055885,-0.006167,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167,
+ -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.999938,0,0.011104,0.038542,0.055885,-0.006167,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.927456,-0.367206,0.070606,0.039761,0.049501,-0.006013,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.902569,-0.424717,0.070606,0.040194,0.048502,-0.006013,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.87412,-0.480551,0.070606,0.040688,0.047531,-0.006013,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.842221,-0.53449,0.070606,0.041243,0.046593,-0.006013,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.806998,-0.586318,0.070606,0.041855,0.045692,-0.006013,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.76859,-0.635833,0.070606,0.042523,0.044831,-0.006013,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.727149,-0.682839,0.070606,0.043243,0.044014,-0.006013,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.682839,-0.727149,0.070606,0.044014,0.043243,-0.006013,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.635833,-0.76859,0.070606,0.044831,0.042523,-0.006013,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.586318,-0.806998,0.070606,0.045692,0.041855,-0.006013,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.53449,-0.842221,0.070606,0.046593,0.041243,-0.006013,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.480551,-0.87412,0.070606,0.047531,0.040688,-0.006013,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.424717,-0.902569,0.070606,0.048502,0.040194,-0.006013,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.367206,-0.927456,0.070606,0.049501,0.039761,-0.006013,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.308246,-0.948683,0.070606,0.050526,0.039392,-0.006013,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.248069,-0.966166,0.070606,0.051572,0.039088,-0.006013,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.186914,-0.979836,0.070606,0.052636,0.03885,-0.006013,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ -0.12502,-0.989639,0.070606,0.053712,0.03868,-0.006013,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ -0.062634,-0.995536,0.070606,0.054796,0.038577,-0.006013,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ 0,-0.997504,0.070606,0.055885,0.038543,-0.006013,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0.062634,-0.995536,0.070606,0.056974,0.038577,-0.006013,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.12502,-0.989639,0.070606,0.058059,0.03868,-0.006013,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.186914,-0.979836,0.070606,0.059135,0.03885,-0.006013,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.248069,-0.966166,0.070606,0.060198,0.039088,-0.006013,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.308246,-0.948683,0.070606,0.061244,0.039392,-0.006013,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.367206,-0.927456,0.070606,0.062269,0.039761,-0.006013,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.424717,-0.902569,0.070606,0.063269,0.040194,-0.006013,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.480551,-0.87412,0.070606,0.06424,0.040688,-0.006013,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.53449,-0.842221,0.070606,0.065178,0.041243,-0.006013,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.586318,-0.806998,0.070606,0.066079,0.041855,-0.006013,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.635833,-0.76859,0.070606,0.06694,0.042523,-0.006013,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.682839,-0.727149,0.070606,0.067757,0.043243,-0.006013,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.727149,-0.682839,0.070606,0.068527,0.044014,-0.006013,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.76859,-0.635833,0.070606,0.069247,0.044831,-0.006013,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.806998,-0.586318,0.070606,0.069915,0.045692,-0.006013,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.842221,-0.53449,0.070606,0.070528,0.046593,-0.006013,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.87412,-0.480551,0.070606,0.071082,0.047531,-0.006013,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.902569,-0.424717,0.070606,0.071577,0.048502,-0.006013,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.927456,-0.367206,0.070606,0.07201,0.049501,-0.006013,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.948683,-0.308246,0.070606,0.072379,0.050526,-0.006013,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.966166,-0.248069,0.070606,0.072682,0.051572,-0.006013,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.979836,-0.186914,0.070606,0.07292,0.052636,-0.006013,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.989639,-0.12502,0.070606,0.073091,0.053712,-0.006013,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.995536,-0.062634,0.070606,0.073193,0.054796,-0.006013,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.997504,0,0.070606,0.073227,0.055885,-0.006013,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.995536,0.062634,0.070606,0.073193,0.056974,-0.006013,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.989639,0.12502,0.070606,0.073091,0.058059,-0.006013,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.979836,0.186914,0.070606,0.07292,0.059135,-0.006013,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.966166,0.248069,0.070606,0.072682,0.060198,-0.006013,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.948683,0.308246,0.070606,0.072379,0.061244,-0.006013,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.927456,0.367206,0.070606,0.07201,0.062269,-0.006013,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.902569,0.424717,0.070606,0.071577,0.063269,-0.006013,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.87412,0.480551,0.070606,0.071082,0.06424,-0.006013,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.842221,0.53449,0.070606,0.070528,0.065178,-0.006013,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.806998,0.586318,0.070606,0.069915,0.066079,-0.006013,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.76859,0.635833,0.070606,0.069247,0.06694,-0.006013,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.727149,0.682839,0.070606,0.068527,0.067757,-0.006013,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.682839,0.727149,0.070606,0.067757,0.068527,-0.006013,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.635833,0.76859,0.070606,0.06694,0.069247,-0.006013,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.586318,0.806998,0.070606,0.066079,0.069915,-0.006013,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.53449,0.842221,0.070606,0.065178,0.070528,-0.006013,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.480551,0.87412,0.070606,0.06424,0.071082,-0.006013,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.424717,0.902569,0.070606,0.063269,0.071577,-0.006013,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.367206,0.927456,0.070606,0.062269,0.07201,-0.006013,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.308246,0.948683,0.070606,0.061244,0.072379,-0.006013,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.248069,0.966166,0.070606,0.060198,0.072682,-0.006013,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.186914,0.979836,0.070606,0.059135,0.07292,-0.006013,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0.12502,0.989639,0.070606,0.058059,0.073091,-0.006013,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ 0.062634,0.995536,0.070606,0.056974,0.073193,-0.006013,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ 0,0.997504,0.070606,0.055885,0.073227,-0.006013,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ -0.062634,0.995536,0.070606,0.054796,0.073193,-0.006013,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.12502,0.989639,0.070606,0.053712,0.073091,-0.006013,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.186914,0.979836,0.070606,0.052636,0.07292,-0.006013,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.248069,0.966166,0.070606,0.051572,0.072682,-0.006013,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.308246,0.948683,0.070606,0.050526,0.072379,-0.006013,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.367206,0.927456,0.070606,0.049501,0.07201,-0.006013,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.424717,0.902569,0.070606,0.048502,0.071577,-0.006013,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.480551,0.87412,0.070606,0.047531,0.071082,-0.006013,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.53449,0.842221,0.070606,0.046593,0.070528,-0.006013,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.586318,0.806998,0.070606,0.045692,0.069915,-0.006013,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.635833,0.76859,0.070606,0.044831,0.069247,-0.006013,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.682839,0.727149,0.070606,0.044014,0.068527,-0.006013,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.727149,0.682839,0.070606,0.043243,0.067757,-0.006013,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.76859,0.635833,0.070606,0.042523,0.06694,-0.006013,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.806998,0.586318,0.070606,0.041855,0.066079,-0.006013,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.842221,0.53449,0.070606,0.041243,0.065178,-0.006013,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.87412,0.480551,0.070606,0.040688,0.06424,-0.006013,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.902569,0.424717,0.070606,0.040194,0.063269,-0.006013,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.927456,0.367206,0.070606,0.039761,0.062269,-0.006013,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.948683,0.308246,0.070606,0.039392,0.061244,-0.006013,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.966166,0.248069,0.070606,0.039088,0.060198,-0.006013,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.979836,0.186914,0.070606,0.03885,0.059135,-0.006013,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.989639,0.12502,0.070606,0.03868,0.058059,-0.006013,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.995536,0.062634,0.070606,0.038577,0.056974,-0.006013,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.997504,0,0.070606,0.038543,0.055885,-0.006013,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.995536,-0.062634,0.070606,0.038577,0.054796,-0.006013,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.989639,-0.12502,0.070606,0.03868,0.053712,-0.006013,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.979836,-0.186914,0.070606,0.03885,0.052636,-0.006013,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.948683,-0.308246,0.070606,0.039392,0.050526,-0.006013,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.966166,-0.248069,0.070606,0.039088,0.051572,-0.006013,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.93398,-0.303468,0.18865,0.039411,0.050532,-0.005861,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.913082,-0.361515,0.18865,0.03978,0.049509,-0.005861,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.88858,-0.418134,0.18865,0.040212,0.04851,-0.005861,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.860572,-0.473103,0.18865,0.040706,0.04754,-0.005861,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.829167,-0.526206,0.18865,0.04126,0.046604,-0.005861,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.794491,-0.577231,0.18865,0.041871,0.045704,-0.005861,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.756678,-0.625979,0.18865,0.042538,0.044844,-0.005861,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.715879,-0.672256,0.18865,0.043258,0.044028,-0.005861,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.672256,-0.715879,0.18865,0.044028,0.043258,-0.005861,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.625979,-0.756678,0.18865,0.044844,0.042538,-0.005861,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.577231,-0.794491,0.18865,0.045704,0.041871,-0.005861,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.526206,-0.829167,0.18865,0.046604,0.04126,-0.005861,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.473103,-0.860572,0.18865,0.04754,0.040706,-0.005861,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.418134,-0.88858,0.18865,0.04851,0.040212,-0.005861,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.361515,-0.913082,0.18865,0.049509,0.03978,-0.005861,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.303468,-0.93398,0.18865,0.050532,0.039411,-0.005861,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.244224,-0.951192,0.18865,0.051578,0.039107,-0.005861,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.184017,-0.96465,0.18865,0.05264,0.03887,-0.005861,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ -0.123083,-0.974301,0.18865,0.053714,0.0387,-0.005861,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ -0.061663,-0.980106,0.18865,0.054798,0.038597,-0.005861,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ 0,-0.982044,0.18865,0.055885,0.038563,-0.005861,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0.061663,-0.980106,0.18865,0.056973,0.038597,-0.005861,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.123083,-0.974301,0.18865,0.058056,0.0387,-0.005861,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.184017,-0.96465,0.18865,0.059131,0.03887,-0.005861,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.244224,-0.951192,0.18865,0.060193,0.039107,-0.005861,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.303468,-0.93398,0.18865,0.061238,0.039411,-0.005861,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.361515,-0.913082,0.18865,0.062262,0.03978,-0.005861,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.418134,-0.88858,0.18865,0.063261,0.040212,-0.005861,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.473103,-0.860572,0.18865,0.06423,0.040706,-0.005861,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.526206,-0.829167,0.18865,0.065167,0.04126,-0.005861,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.577231,-0.794491,0.18865,0.066067,0.041871,-0.005861,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.625979,-0.756678,0.18865,0.066927,0.042538,-0.005861,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.672256,-0.715879,0.18865,0.067743,0.043258,-0.005861,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.715879,-0.672256,0.18865,0.068512,0.044028,-0.005861,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.756678,-0.625979,0.18865,0.069232,0.044844,-0.005861,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.794491,-0.577231,0.18865,0.069899,0.045704,-0.005861,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.829167,-0.526206,0.18865,0.070511,0.046604,-0.005861,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.860572,-0.473103,0.18865,0.071065,0.04754,-0.005861,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.88858,-0.418134,0.18865,0.071559,0.04851,-0.005861,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.913082,-0.361515,0.18865,0.071991,0.049509,-0.005861,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.93398,-0.303468,0.18865,0.07236,0.050532,-0.005861,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.951192,-0.244224,0.18865,0.072663,0.051578,-0.005861,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.96465,-0.184017,0.18865,0.072901,0.05264,-0.005861,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.974301,-0.123083,0.18865,0.073071,0.053714,-0.005861,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.980106,-0.061663,0.18865,0.073173,0.054798,-0.005861,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.982044,0,0.18865,0.073207,0.055885,-0.005861,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.980106,0.061663,0.18865,0.073173,0.056973,-0.005861,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.974301,0.123083,0.18865,0.073071,0.058056,-0.005861,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.96465,0.184017,0.18865,0.072901,0.059131,-0.005861,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.951192,0.244224,0.18865,0.072663,0.060193,-0.005861,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.93398,0.303468,0.18865,0.07236,0.061238,-0.005861,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.913082,0.361515,0.18865,0.071991,0.062262,-0.005861,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.88858,0.418134,0.18865,0.071559,0.063261,-0.005861,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.860572,0.473103,0.18865,0.071065,0.06423,-0.005861,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.829167,0.526206,0.18865,0.070511,0.065167,-0.005861,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.794491,0.577231,0.18865,0.069899,0.066067,-0.005861,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.756678,0.625979,0.18865,0.069232,0.066927,-0.005861,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.715879,0.672256,0.18865,0.068512,0.067743,-0.005861,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.672256,0.715879,0.18865,0.067743,0.068512,-0.005861,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.625979,0.756678,0.18865,0.066927,0.069232,-0.005861,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.577231,0.794491,0.18865,0.066067,0.069899,-0.005861,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.526206,0.829167,0.18865,0.065167,0.070511,-0.005861,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.473103,0.860572,0.18865,0.06423,0.071065,-0.005861,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.418134,0.88858,0.18865,0.063261,0.071559,-0.005861,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.361515,0.913082,0.18865,0.062262,0.071991,-0.005861,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.303468,0.93398,0.18865,0.061238,0.07236,-0.005861,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.244224,0.951192,0.18865,0.060193,0.072663,-0.005861,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.184017,0.96465,0.18865,0.059131,0.072901,-0.005861,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0.123083,0.974301,0.18865,0.058056,0.073071,-0.005861,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ 0.061663,0.980106,0.18865,0.056973,0.073173,-0.005861,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ 0,0.982044,0.18865,0.055885,0.073207,-0.005861,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ -0.061663,0.980106,0.18865,0.054798,0.073173,-0.005861,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.123083,0.974301,0.18865,0.053714,0.073071,-0.005861,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.184017,0.96465,0.18865,0.05264,0.072901,-0.005861,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.244224,0.951192,0.18865,0.051578,0.072663,-0.005861,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.303468,0.93398,0.18865,0.050532,0.07236,-0.005861,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.361515,0.913082,0.18865,0.049509,0.071991,-0.005861,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.418134,0.88858,0.18865,0.04851,0.071559,-0.005861,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.473103,0.860572,0.18865,0.04754,0.071065,-0.005861,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.526206,0.829167,0.18865,0.046604,0.070511,-0.005861,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.577231,0.794491,0.18865,0.045704,0.069899,-0.005861,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.625979,0.756678,0.18865,0.044844,0.069232,-0.005861,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.672256,0.715879,0.18865,0.044028,0.068512,-0.005861,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.715879,0.672256,0.18865,0.043258,0.067743,-0.005861,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.756678,0.625979,0.18865,0.042538,0.066927,-0.005861,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.794491,0.577231,0.18865,0.041871,0.066067,-0.005861,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.829167,0.526206,0.18865,0.04126,0.065167,-0.005861,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.860572,0.473103,0.18865,0.040706,0.06423,-0.005861,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.88858,0.418134,0.18865,0.040212,0.063261,-0.005861,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.913082,0.361515,0.18865,0.03978,0.062262,-0.005861,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.93398,0.303468,0.18865,0.039411,0.061238,-0.005861,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.951192,0.244224,0.18865,0.039107,0.060193,-0.005861,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.96465,0.184017,0.18865,0.03887,0.059131,-0.005861,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.974301,0.123083,0.18865,0.0387,0.058056,-0.005861,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.980106,0.061663,0.18865,0.038597,0.056973,-0.005861,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.982044,0,0.18865,0.038563,0.055885,-0.005861,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.980106,-0.061663,0.18865,0.038597,0.054798,-0.005861,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.974301,-0.123083,0.18865,0.0387,0.053714,-0.005861,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.951192,-0.244224,0.18865,0.039107,0.051578,-0.005861,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.96465,-0.184017,0.18865,0.03887,0.05264,-0.005861,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.922736,-0.236918,0.304021,0.039144,0.051587,-0.005713,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.906039,-0.29439,0.304021,0.039447,0.050544,-0.005713,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.885766,-0.3507,0.304021,0.039815,0.049522,-0.005713,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.861997,-0.405625,0.304021,0.040246,0.048526,-0.005713,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.834827,-0.45895,0.304021,0.040739,0.047559,-0.005713,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.804362,-0.510464,0.304021,0.041292,0.046624,-0.005713,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.770723,-0.559963,0.304021,0.041902,0.045726,-0.005713,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.734041,-0.607252,0.304021,0.042568,0.044868,-0.005713,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.694463,-0.652144,0.304021,0.043286,0.044053,-0.005713,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.652144,-0.694463,0.304021,0.044053,0.043286,-0.005713,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.607252,-0.734041,0.304021,0.044868,0.042568,-0.005713,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.559963,-0.770723,0.304021,0.045726,0.041902,-0.005713,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.510464,-0.804362,0.304021,0.046624,0.041292,-0.005713,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.45895,-0.834827,0.304021,0.047559,0.040739,-0.005713,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.405625,-0.861997,0.304021,0.048526,0.040246,-0.005713,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.3507,-0.885766,0.304021,0.049522,0.039815,-0.005713,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.29439,-0.906039,0.304021,0.050544,0.039447,-0.005713,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.236918,-0.922736,0.304021,0.051587,0.039144,-0.005713,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.178512,-0.935791,0.304021,0.052646,0.038907,-0.005713,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ -0.119401,-0.945153,0.304021,0.053719,0.038737,-0.005713,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ -0.059818,-0.950786,0.304021,0.0548,0.038635,-0.005713,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ 0,-0.952665,0.304021,0.055885,0.038601,-0.005713,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0.059818,-0.950786,0.304021,0.056971,0.038635,-0.005713,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.119401,-0.945153,0.304021,0.058052,0.038737,-0.005713,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.178512,-0.935791,0.304021,0.059124,0.038907,-0.005713,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.236918,-0.922736,0.304021,0.060184,0.039144,-0.005713,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.29439,-0.906039,0.304021,0.061226,0.039447,-0.005713,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.3507,-0.885766,0.304021,0.062248,0.039815,-0.005713,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.405625,-0.861997,0.304021,0.063245,0.040246,-0.005713,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.45895,-0.834827,0.304021,0.064212,0.040739,-0.005713,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.510464,-0.804362,0.304021,0.065147,0.041292,-0.005713,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.559963,-0.770723,0.304021,0.066045,0.041902,-0.005713,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.607252,-0.734041,0.304021,0.066903,0.042568,-0.005713,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.652144,-0.694463,0.304021,0.067717,0.043286,-0.005713,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.694463,-0.652144,0.304021,0.068485,0.044053,-0.005713,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.734041,-0.607252,0.304021,0.069203,0.044868,-0.005713,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.770723,-0.559963,0.304021,0.069869,0.045726,-0.005713,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.804362,-0.510464,0.304021,0.070479,0.046624,-0.005713,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.834827,-0.45895,0.304021,0.071032,0.047559,-0.005713,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.861997,-0.405625,0.304021,0.071525,0.048526,-0.005713,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.885766,-0.3507,0.304021,0.071956,0.049522,-0.005713,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.906039,-0.29439,0.304021,0.072324,0.050544,-0.005713,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.922736,-0.236918,0.304021,0.072627,0.051587,-0.005713,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.935791,-0.178512,0.304021,0.072863,0.052646,-0.005713,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.945153,-0.119401,0.304021,0.073033,0.053719,-0.005713,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.950786,-0.059818,0.304021,0.073135,0.0548,-0.005713,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.952665,0,0.304021,0.073169,0.055885,-0.005713,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.950786,0.059818,0.304021,0.073135,0.056971,-0.005713,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.945153,0.119401,0.304021,0.073033,0.058052,-0.005713,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.935791,0.178512,0.304021,0.072863,0.059124,-0.005713,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.922736,0.236918,0.304021,0.072627,0.060184,-0.005713,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.906039,0.29439,0.304021,0.072324,0.061226,-0.005713,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.885766,0.3507,0.304021,0.071956,0.062248,-0.005713,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.861997,0.405625,0.304021,0.071525,0.063245,-0.005713,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.834827,0.45895,0.304021,0.071032,0.064212,-0.005713,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.804362,0.510464,0.304021,0.070479,0.065147,-0.005713,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.770723,0.559963,0.304021,0.069869,0.066045,-0.005713,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.734041,0.607252,0.304021,0.069203,0.066903,-0.005713,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.694463,0.652144,0.304021,0.068485,0.067717,-0.005713,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.652144,0.694463,0.304021,0.067717,0.068485,-0.005713,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.607252,0.734041,0.304021,0.066903,0.069203,-0.005713,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.559963,0.770723,0.304021,0.066045,0.069869,-0.005713,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.510464,0.804362,0.304021,0.065147,0.070479,-0.005713,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.45895,0.834827,0.304021,0.064212,0.071032,-0.005713,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.405625,0.861997,0.304021,0.063245,0.071525,-0.005713,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.3507,0.885766,0.304021,0.062248,0.071956,-0.005713,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.29439,0.906039,0.304021,0.061226,0.072324,-0.005713,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.236918,0.922736,0.304021,0.060184,0.072627,-0.005713,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.178512,0.935791,0.304021,0.059124,0.072863,-0.005713,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0.119401,0.945153,0.304021,0.058052,0.073033,-0.005713,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ 0.059818,0.950786,0.304021,0.056971,0.073135,-0.005713,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ 0,0.952665,0.304021,0.055885,0.073169,-0.005713,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ -0.059818,0.950786,0.304021,0.0548,0.073135,-0.005713,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.119401,0.945153,0.304021,0.053719,0.073033,-0.005713,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.178512,0.935791,0.304021,0.052646,0.072863,-0.005713,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.236918,0.922736,0.304021,0.051587,0.072627,-0.005713,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.29439,0.906039,0.304021,0.050544,0.072324,-0.005713,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.3507,0.885766,0.304021,0.049522,0.071956,-0.005713,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.405625,0.861997,0.304021,0.048526,0.071525,-0.005713,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.45895,0.834827,0.304021,0.047559,0.071032,-0.005713,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.510464,0.804362,0.304021,0.046624,0.070479,-0.005713,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.559963,0.770723,0.304021,0.045726,0.069869,-0.005713,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.607252,0.734041,0.304021,0.044868,0.069203,-0.005713,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.652144,0.694463,0.304021,0.044053,0.068485,-0.005713,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.694463,0.652144,0.304021,0.043286,0.067717,-0.005713,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.734041,0.607252,0.304021,0.042568,0.066903,-0.005713,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.770723,0.559963,0.304021,0.041902,0.066045,-0.005713,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.804362,0.510464,0.304021,0.041292,0.065147,-0.005713,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.834827,0.45895,0.304021,0.040739,0.064212,-0.005713,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.861997,0.405625,0.304021,0.040246,0.063245,-0.005713,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.885766,0.3507,0.304021,0.039815,0.062248,-0.005713,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.906039,0.29439,0.304021,0.039447,0.061226,-0.005713,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.922736,0.236918,0.304021,0.039144,0.060184,-0.005713,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.935791,0.178512,0.304021,0.038907,0.059124,-0.005713,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.945153,0.119401,0.304021,0.038737,0.058052,-0.005713,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.950786,0.059818,0.304021,0.038635,0.056971,-0.005713,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.952665,0,0.304021,0.038601,0.055885,-0.005713,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.950786,-0.059818,0.304021,0.038635,0.0548,-0.005713,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.935791,-0.178512,0.304021,0.038907,0.052646,-0.005713,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.945153,-0.119401,0.304021,0.038737,0.053719,-0.005713,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.893669,-0.170477,0.415082,0.038961,0.052657,-0.00557,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.881202,-0.226254,0.415082,0.039198,0.051601,-0.00557,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.865256,-0.281139,0.415082,0.0395,0.050561,-0.00557,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.845896,-0.334914,0.415082,0.039866,0.049543,-0.00557,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.823197,-0.387367,0.415082,0.040296,0.048549,-0.00557,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.79725,-0.438292,0.415082,0.040787,0.047585,-0.00557,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.768156,-0.487487,0.415082,0.041338,0.046653,-0.00557,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.736031,-0.534758,0.415082,0.041947,0.045758,-0.00557,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.701001,-0.579918,0.415082,0.04261,0.044903,-0.00557,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.663204,-0.62279,0.415082,0.043326,0.044091,-0.00557,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.62279,-0.663204,0.415082,0.044091,0.043326,-0.00557,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.579918,-0.701001,0.415082,0.044903,0.04261,-0.00557,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.534758,-0.736031,0.415082,0.045758,0.041947,-0.00557,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.487487,-0.768156,0.415082,0.046653,0.041338,-0.00557,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.438292,-0.79725,0.415082,0.047585,0.040787,-0.00557,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.387367,-0.823197,0.415082,0.048549,0.040296,-0.00557,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.334914,-0.845896,0.415082,0.049543,0.039866,-0.00557,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.281139,-0.865256,0.415082,0.050561,0.0395,-0.00557,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.226254,-0.881202,0.415082,0.051601,0.039198,-0.00557,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.170477,-0.893669,0.415082,0.052657,0.038961,-0.00557,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ -0.114026,-0.90261,0.415082,0.053726,0.038792,-0.00557,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ -0.057126,-0.907989,0.415082,0.054803,0.03869,-0.00557,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ 0,-0.909784,0.415082,0.055885,0.038656,-0.00557,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0.057126,-0.907989,0.415082,0.056967,0.03869,-0.00557,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.114026,-0.90261,0.415082,0.058045,0.038792,-0.00557,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.170477,-0.893669,0.415082,0.059114,0.038961,-0.00557,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.226254,-0.881202,0.415082,0.06017,0.039198,-0.00557,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.281139,-0.865256,0.415082,0.061209,0.0395,-0.00557,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.334914,-0.845896,0.415082,0.062228,0.039866,-0.00557,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.387367,-0.823197,0.415082,0.063221,0.040296,-0.00557,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.438292,-0.79725,0.415082,0.064185,0.040787,-0.00557,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.487487,-0.768156,0.415082,0.065117,0.041338,-0.00557,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.534758,-0.736031,0.415082,0.066012,0.041947,-0.00557,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.579918,-0.701001,0.415082,0.066868,0.04261,-0.00557,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.62279,-0.663204,0.415082,0.067679,0.043326,-0.00557,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.663204,-0.62279,0.415082,0.068445,0.044091,-0.00557,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.701001,-0.579918,0.415082,0.069161,0.044903,-0.00557,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.736031,-0.534758,0.415082,0.069824,0.045758,-0.00557,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.768156,-0.487487,0.415082,0.070432,0.046653,-0.00557,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.79725,-0.438292,0.415082,0.070983,0.047585,-0.00557,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.823197,-0.387367,0.415082,0.071475,0.048549,-0.00557,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.845896,-0.334914,0.415082,0.071905,0.049543,-0.00557,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.865256,-0.281139,0.415082,0.072271,0.050561,-0.00557,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.881202,-0.226254,0.415082,0.072573,0.051601,-0.00557,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.893669,-0.170477,0.415082,0.072809,0.052657,-0.00557,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.90261,-0.114026,0.415082,0.072978,0.053726,-0.00557,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.907989,-0.057126,0.415082,0.07308,0.054803,-0.00557,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.909784,0,0.415082,0.073114,0.055885,-0.00557,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.907989,0.057126,0.415082,0.07308,0.056967,-0.00557,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.90261,0.114026,0.415082,0.072978,0.058045,-0.00557,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.893669,0.170477,0.415082,0.072809,0.059114,-0.00557,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.881202,0.226254,0.415082,0.072573,0.06017,-0.00557,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.865256,0.281139,0.415082,0.072271,0.061209,-0.00557,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.845896,0.334914,0.415082,0.071905,0.062228,-0.00557,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.823197,0.387367,0.415082,0.071475,0.063221,-0.00557,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.79725,0.438292,0.415082,0.070983,0.064185,-0.00557,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.768156,0.487487,0.415082,0.070432,0.065117,-0.00557,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.736031,0.534758,0.415082,0.069824,0.066012,-0.00557,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.701001,0.579918,0.415082,0.069161,0.066868,-0.00557,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.663204,0.62279,0.415082,0.068445,0.067679,-0.00557,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.62279,0.663204,0.415082,0.067679,0.068445,-0.00557,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.579918,0.701001,0.415082,0.066868,0.069161,-0.00557,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.534758,0.736031,0.415082,0.066012,0.069824,-0.00557,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.487487,0.768156,0.415082,0.065117,0.070432,-0.00557,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.438292,0.79725,0.415082,0.064185,0.070983,-0.00557,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.387367,0.823197,0.415082,0.063221,0.071475,-0.00557,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.334914,0.845896,0.415082,0.062228,0.071905,-0.00557,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.281139,0.865256,0.415082,0.061209,0.072271,-0.00557,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.226254,0.881202,0.415082,0.06017,0.072573,-0.00557,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.170477,0.893669,0.415082,0.059114,0.072809,-0.00557,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0.114026,0.90261,0.415082,0.058045,0.072978,-0.00557,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ 0.057126,0.907989,0.415082,0.056967,0.07308,-0.00557,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ 0,0.909784,0.415082,0.055885,0.073114,-0.00557,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ -0.057126,0.907989,0.415082,0.054803,0.07308,-0.00557,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.114026,0.90261,0.415082,0.053726,0.072978,-0.00557,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.170477,0.893669,0.415082,0.052657,0.072809,-0.00557,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.226254,0.881202,0.415082,0.051601,0.072573,-0.00557,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.281139,0.865256,0.415082,0.050561,0.072271,-0.00557,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.334914,0.845896,0.415082,0.049543,0.071905,-0.00557,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.387367,0.823197,0.415082,0.048549,0.071475,-0.00557,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.438292,0.79725,0.415082,0.047585,0.070983,-0.00557,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.487487,0.768156,0.415082,0.046653,0.070432,-0.00557,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.534758,0.736031,0.415082,0.045758,0.069824,-0.00557,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.579918,0.701001,0.415082,0.044903,0.069161,-0.00557,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.62279,0.663204,0.415082,0.044091,0.068445,-0.00557,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.663204,0.62279,0.415082,0.043326,0.067679,-0.00557,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.701001,0.579918,0.415082,0.04261,0.066868,-0.00557,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.736031,0.534758,0.415082,0.041947,0.066012,-0.00557,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.768156,0.487487,0.415082,0.041338,0.065117,-0.00557,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.79725,0.438292,0.415082,0.040787,0.064185,-0.00557,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.823197,0.387367,0.415082,0.040296,0.063221,-0.00557,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.845896,0.334914,0.415082,0.039866,0.062228,-0.00557,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.865256,0.281139,0.415082,0.0395,0.061209,-0.00557,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.881202,0.226254,0.415082,0.039198,0.06017,-0.00557,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.893669,0.170477,0.415082,0.038961,0.059114,-0.00557,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.90261,0.114026,0.415082,0.038792,0.058045,-0.00557,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.907989,0.057126,0.415082,0.03869,0.056967,-0.00557,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.909784,0,0.415082,0.038656,0.055885,-0.00557,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.90261,-0.114026,0.415082,0.038792,0.053726,-0.00557,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.907989,-0.057126,0.415082,0.03869,0.054803,-0.00557,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.847274,-0.107036,0.52026,0.038863,0.053735,-0.005434,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.838881,-0.160025,0.52026,0.039032,0.05267,-0.005434,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.827178,-0.212383,0.52026,0.039267,0.051619,-0.005434,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.81221,-0.263903,0.52026,0.039568,0.050584,-0.005434,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.794037,-0.314381,0.52026,0.039933,0.049569,-0.005434,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.77273,-0.363619,0.52026,0.040361,0.04858,-0.005434,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.748373,-0.411421,0.52026,0.04085,0.04762,-0.005434,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.721063,-0.4576,0.52026,0.041399,0.046692,-0.005434,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.690907,-0.501973,0.52026,0.042005,0.045801,-0.005434,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.658024,-0.544365,0.52026,0.042666,0.044949,-0.005434,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.622545,-0.584609,0.52026,0.043378,0.04414,-0.005434,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.584609,-0.622545,0.52026,0.04414,0.043378,-0.005434,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.544365,-0.658024,0.52026,0.044949,0.042666,-0.005434,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.501973,-0.690907,0.52026,0.045801,0.042005,-0.005434,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.4576,-0.721063,0.52026,0.046692,0.041399,-0.005434,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.411421,-0.748373,0.52026,0.04762,0.04085,-0.005434,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.363619,-0.77273,0.52026,0.04858,0.040361,-0.005434,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.314381,-0.794037,0.52026,0.049569,0.039933,-0.005434,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.263903,-0.81221,0.52026,0.050584,0.039568,-0.005434,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.212383,-0.827178,0.52026,0.051619,0.039267,-0.005434,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.160025,-0.838881,0.52026,0.05267,0.039032,-0.005434,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ -0.107036,-0.847274,0.52026,0.053735,0.038863,-0.005434,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ -0.053624,-0.852323,0.52026,0.054808,0.038762,-0.005434,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ 0,-0.854008,0.52026,0.055885,0.038728,-0.005434,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0.053624,-0.852323,0.52026,0.056963,0.038762,-0.005434,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.107036,-0.847274,0.52026,0.058036,0.038863,-0.005434,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.160025,-0.838881,0.52026,0.0591,0.039032,-0.005434,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.212383,-0.827178,0.52026,0.060152,0.039267,-0.005434,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.263903,-0.81221,0.52026,0.061187,0.039568,-0.005434,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.314381,-0.794037,0.52026,0.062201,0.039933,-0.005434,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.363619,-0.77273,0.52026,0.06319,0.040361,-0.005434,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.411421,-0.748373,0.52026,0.064151,0.04085,-0.005434,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.4576,-0.721063,0.52026,0.065079,0.041399,-0.005434,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.501973,-0.690907,0.52026,0.06597,0.042005,-0.005434,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.544365,-0.658024,0.52026,0.066822,0.042666,-0.005434,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.584609,-0.622545,0.52026,0.06763,0.043378,-0.005434,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.622545,-0.584609,0.52026,0.068392,0.04414,-0.005434,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.658024,-0.544365,0.52026,0.069105,0.044949,-0.005434,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.690907,-0.501973,0.52026,0.069766,0.045801,-0.005434,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.721063,-0.4576,0.52026,0.070372,0.046692,-0.005434,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.748373,-0.411421,0.52026,0.07092,0.04762,-0.005434,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.77273,-0.363619,0.52026,0.07141,0.04858,-0.005434,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.794037,-0.314381,0.52026,0.071838,0.049569,-0.005434,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.81221,-0.263903,0.52026,0.072203,0.050584,-0.005434,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.827178,-0.212383,0.52026,0.072503,0.051619,-0.005434,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.838881,-0.160025,0.52026,0.072739,0.05267,-0.005434,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.847274,-0.107036,0.52026,0.072907,0.053735,-0.005434,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.852323,-0.053624,0.52026,0.073009,0.054808,-0.005434,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.854008,0,0.52026,0.073042,0.055885,-0.005434,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.852323,0.053624,0.52026,0.073009,0.056963,-0.005434,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.847274,0.107036,0.52026,0.072907,0.058036,-0.005434,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.838881,0.160025,0.52026,0.072739,0.0591,-0.005434,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.827178,0.212383,0.52026,0.072503,0.060152,-0.005434,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.81221,0.263903,0.52026,0.072203,0.061187,-0.005434,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.794037,0.314381,0.52026,0.071838,0.062201,-0.005434,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.77273,0.363619,0.52026,0.07141,0.06319,-0.005434,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.748373,0.411421,0.52026,0.07092,0.064151,-0.005434,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.721063,0.4576,0.52026,0.070372,0.065079,-0.005434,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.690907,0.501973,0.52026,0.069766,0.06597,-0.005434,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.658024,0.544365,0.52026,0.069105,0.066822,-0.005434,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.622545,0.584609,0.52026,0.068392,0.06763,-0.005434,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.584609,0.622545,0.52026,0.06763,0.068392,-0.005434,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.544365,0.658024,0.52026,0.066822,0.069105,-0.005434,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.501973,0.690907,0.52026,0.06597,0.069766,-0.005434,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.4576,0.721063,0.52026,0.065079,0.070372,-0.005434,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.411421,0.748373,0.52026,0.064151,0.07092,-0.005434,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.363619,0.77273,0.52026,0.06319,0.07141,-0.005434,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.314381,0.794037,0.52026,0.062201,0.071838,-0.005434,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.263903,0.81221,0.52026,0.061187,0.072203,-0.005434,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.212383,0.827178,0.52026,0.060152,0.072503,-0.005434,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.160025,0.838881,0.52026,0.0591,0.072739,-0.005434,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0.107036,0.847274,0.52026,0.058036,0.072907,-0.005434,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ 0.053624,0.852323,0.52026,0.056963,0.073009,-0.005434,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ 0,0.854008,0.52026,0.055885,0.073042,-0.005434,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ -0.053624,0.852323,0.52026,0.054808,0.073009,-0.005434,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.107036,0.847274,0.52026,0.053735,0.072907,-0.005434,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.160025,0.838881,0.52026,0.05267,0.072739,-0.005434,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.212383,0.827178,0.52026,0.051619,0.072503,-0.005434,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.263903,0.81221,0.52026,0.050584,0.072203,-0.005434,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.314381,0.794037,0.52026,0.049569,0.071838,-0.005434,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.363619,0.77273,0.52026,0.04858,0.07141,-0.005434,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.411421,0.748373,0.52026,0.04762,0.07092,-0.005434,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.4576,0.721063,0.52026,0.046692,0.070372,-0.005434,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.501973,0.690907,0.52026,0.045801,0.069766,-0.005434,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.544365,0.658024,0.52026,0.044949,0.069105,-0.005434,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.584609,0.622545,0.52026,0.04414,0.068392,-0.005434,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.622545,0.584609,0.52026,0.043378,0.06763,-0.005434,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.658024,0.544365,0.52026,0.042666,0.066822,-0.005434,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.690907,0.501973,0.52026,0.042005,0.06597,-0.005434,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.721063,0.4576,0.52026,0.041399,0.065079,-0.005434,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.748373,0.411421,0.52026,0.04085,0.064151,-0.005434,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.77273,0.363619,0.52026,0.040361,0.06319,-0.005434,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.794037,0.314381,0.52026,0.039933,0.062201,-0.005434,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.81221,0.263903,0.52026,0.039568,0.061187,-0.005434,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.827178,0.212383,0.52026,0.039267,0.060152,-0.005434,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.838881,0.160025,0.52026,0.039032,0.0591,-0.005434,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.847274,0.107036,0.52026,0.038863,0.058036,-0.005434,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.852323,0.053624,0.52026,0.038762,0.056963,-0.005434,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.852323,-0.053624,0.52026,0.038762,0.054808,-0.005434,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.854008,0,0.52026,0.038728,0.055885,-0.005434,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.784577,-0.049361,0.618064,0.038849,0.054813,-0.005308,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.779929,-0.098528,0.618064,0.03895,0.053746,-0.005308,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.772203,-0.147306,0.618064,0.039118,0.052687,-0.005308,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.76143,-0.195502,0.618064,0.039352,0.05164,-0.005308,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.747652,-0.242927,0.618064,0.039651,0.05061,-0.005308,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.730923,-0.289393,0.618064,0.040014,0.049601,-0.005308,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.71131,-0.334717,0.618064,0.04044,0.048617,-0.005308,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.688889,-0.37872,0.618064,0.040927,0.047662,-0.005308,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.66375,-0.421228,0.618064,0.041473,0.046739,-0.005308,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.635991,-0.462074,0.618064,0.042076,0.045852,-0.005308,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.605722,-0.501097,0.618064,0.042733,0.045005,-0.005308,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.573062,-0.538141,0.618064,0.043442,0.0442,-0.005308,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.538141,-0.573062,0.618064,0.0442,0.043442,-0.005308,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.501097,-0.605722,0.618064,0.045005,0.042733,-0.005308,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.462074,-0.635991,0.618064,0.045852,0.042076,-0.005308,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.421228,-0.66375,0.618064,0.046739,0.041473,-0.005308,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.37872,-0.688889,0.618064,0.047662,0.040927,-0.005308,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.334717,-0.71131,0.618064,0.048617,0.04044,-0.005308,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.289393,-0.730923,0.618064,0.049601,0.040014,-0.005308,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.242927,-0.747652,0.618064,0.05061,0.039651,-0.005308,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.195502,-0.76143,0.618064,0.05164,0.039352,-0.005308,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.147306,-0.772203,0.618064,0.052687,0.039118,-0.005308,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ -0.098528,-0.779929,0.618064,0.053746,0.03895,-0.005308,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ -0.049361,-0.784577,0.618064,0.054813,0.038849,-0.005308,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ 0,-0.786128,0.618064,0.055885,0.038816,-0.005308,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0.049361,-0.784577,0.618064,0.056957,0.038849,-0.005308,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.098528,-0.779929,0.618064,0.058025,0.03895,-0.005308,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.147306,-0.772203,0.618064,0.059084,0.039118,-0.005308,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.195502,-0.76143,0.618064,0.06013,0.039352,-0.005308,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.242927,-0.747652,0.618064,0.06116,0.039651,-0.005308,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.289393,-0.730923,0.618064,0.062169,0.040014,-0.005308,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.334717,-0.71131,0.618064,0.063153,0.04044,-0.005308,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.37872,-0.688889,0.618064,0.064109,0.040927,-0.005308,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.421228,-0.66375,0.618064,0.065032,0.041473,-0.005308,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.462074,-0.635991,0.618064,0.065919,0.042076,-0.005308,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.501097,-0.605722,0.618064,0.066766,0.042733,-0.005308,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.538141,-0.573062,0.618064,0.06757,0.043442,-0.005308,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.573062,-0.538141,0.618064,0.068329,0.0442,-0.005308,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.605722,-0.501097,0.618064,0.069038,0.045005,-0.005308,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.635991,-0.462074,0.618064,0.069695,0.045852,-0.005308,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.66375,-0.421228,0.618064,0.070298,0.046739,-0.005308,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.688889,-0.37872,0.618064,0.070844,0.047662,-0.005308,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.71131,-0.334717,0.618064,0.07133,0.048617,-0.005308,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.730923,-0.289393,0.618064,0.071756,0.049601,-0.005308,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.747652,-0.242927,0.618064,0.07212,0.05061,-0.005308,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.76143,-0.195502,0.618064,0.072419,0.05164,-0.005308,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.772203,-0.147306,0.618064,0.072653,0.052687,-0.005308,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.779929,-0.098528,0.618064,0.07282,0.053746,-0.005308,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.784577,-0.049361,0.618064,0.072921,0.054813,-0.005308,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.786128,0,0.618064,0.072955,0.055885,-0.005308,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.784577,0.049361,0.618064,0.072921,0.056957,-0.005308,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.779929,0.098528,0.618064,0.07282,0.058025,-0.005308,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.772203,0.147306,0.618064,0.072653,0.059084,-0.005308,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.76143,0.195502,0.618064,0.072419,0.06013,-0.005308,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.747652,0.242927,0.618064,0.07212,0.06116,-0.005308,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.730923,0.289393,0.618064,0.071756,0.062169,-0.005308,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.71131,0.334717,0.618064,0.07133,0.063153,-0.005308,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.688889,0.37872,0.618064,0.070844,0.064109,-0.005308,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.66375,0.421228,0.618064,0.070298,0.065032,-0.005308,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.635991,0.462074,0.618064,0.069695,0.065919,-0.005308,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.605722,0.501097,0.618064,0.069038,0.066766,-0.005308,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.573062,0.538141,0.618064,0.068329,0.06757,-0.005308,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.538141,0.573062,0.618064,0.06757,0.068329,-0.005308,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.501097,0.605722,0.618064,0.066766,0.069038,-0.005308,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.462074,0.635991,0.618064,0.065919,0.069695,-0.005308,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.421228,0.66375,0.618064,0.065032,0.070298,-0.005308,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.37872,0.688889,0.618064,0.064109,0.070844,-0.005308,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.334717,0.71131,0.618064,0.063153,0.07133,-0.005308,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.289393,0.730923,0.618064,0.062169,0.071756,-0.005308,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.242927,0.747652,0.618064,0.06116,0.07212,-0.005308,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.195502,0.76143,0.618064,0.06013,0.072419,-0.005308,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.147306,0.772203,0.618064,0.059084,0.072653,-0.005308,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0.098528,0.779929,0.618064,0.058025,0.07282,-0.005308,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ 0.049361,0.784577,0.618064,0.056957,0.072921,-0.005308,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ 0,0.786128,0.618064,0.055885,0.072955,-0.005308,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ -0.049361,0.784577,0.618064,0.054813,0.072921,-0.005308,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.098528,0.779929,0.618064,0.053746,0.07282,-0.005308,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.147306,0.772203,0.618064,0.052687,0.072653,-0.005308,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.195502,0.76143,0.618064,0.05164,0.072419,-0.005308,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.242927,0.747652,0.618064,0.05061,0.07212,-0.005308,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.289393,0.730923,0.618064,0.049601,0.071756,-0.005308,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.334717,0.71131,0.618064,0.048617,0.07133,-0.005308,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.37872,0.688889,0.618064,0.047662,0.070844,-0.005308,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.421228,0.66375,0.618064,0.046739,0.070298,-0.005308,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.462074,0.635991,0.618064,0.045852,0.069695,-0.005308,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.501097,0.605722,0.618064,0.045005,0.069038,-0.005308,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.538141,0.573062,0.618064,0.0442,0.068329,-0.005308,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.573062,0.538141,0.618064,0.043442,0.06757,-0.005308,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.605722,0.501097,0.618064,0.042733,0.066766,-0.005308,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.635991,0.462074,0.618064,0.042076,0.065919,-0.005308,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.66375,0.421228,0.618064,0.041473,0.065032,-0.005308,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.688889,0.37872,0.618064,0.040927,0.064109,-0.005308,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.71131,0.334717,0.618064,0.04044,0.063153,-0.005308,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.730923,0.289393,0.618064,0.040014,0.062169,-0.005308,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.747652,0.242927,0.618064,0.039651,0.06116,-0.005308,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.76143,0.195502,0.618064,0.039352,0.06013,-0.005308,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.772203,0.147306,0.618064,0.039118,0.059084,-0.005308,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.779929,0.098528,0.618064,0.03895,0.058025,-0.005308,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.786128,0,0.618064,0.038816,0.055885,-0.005308,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.784577,0.049361,0.618064,0.038849,0.056957,-0.005308,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.707106,0,0.707108,0.038917,0.055885,-0.005193,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.70571,-0.0444,0.707108,0.038951,0.05482,-0.005193,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.70153,-0.088624,0.707108,0.039051,0.053759,-0.005193,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.694581,-0.132498,0.707108,0.039218,0.052706,-0.005193,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.684891,-0.17585,0.707108,0.03945,0.051666,-0.005193,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.672497,-0.218508,0.707108,0.039748,0.050642,-0.005193,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.65745,-0.260303,0.707108,0.040109,0.049639,-0.005193,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.639808,-0.301071,0.707108,0.040532,0.048661,-0.005193,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.619641,-0.340651,0.707108,0.041016,0.047711,-0.005193,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.597029,-0.378886,0.707108,0.041559,0.046793,-0.005193,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.57206,-0.415626,0.707108,0.042158,0.045912,-0.005193,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.544834,-0.450726,0.707108,0.042811,0.04507,-0.005193,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.515458,-0.484047,0.707108,0.043516,0.04427,-0.005193,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.484047,-0.515458,0.707108,0.04427,0.043516,-0.005193,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.450726,-0.544834,0.707108,0.04507,0.042811,-0.005193,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.415626,-0.57206,0.707108,0.045912,0.042158,-0.005193,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.378886,-0.597029,0.707108,0.046793,0.041559,-0.005193,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.340651,-0.619641,0.707108,0.047711,0.041016,-0.005193,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.301071,-0.639808,0.707108,0.048661,0.040532,-0.005193,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.260303,-0.65745,0.707108,0.049639,0.040109,-0.005193,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.218508,-0.672497,0.707108,0.050642,0.039748,-0.005193,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.17585,-0.684891,0.707108,0.051666,0.03945,-0.005193,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.132498,-0.694581,0.707108,0.052706,0.039218,-0.005193,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ -0.088624,-0.70153,0.707108,0.053759,0.039051,-0.005193,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ -0.0444,-0.70571,0.707108,0.05482,0.038951,-0.005193,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ 0,-0.707106,0.707108,0.055885,0.038917,-0.005193,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0.0444,-0.70571,0.707108,0.056951,0.038951,-0.005193,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.088624,-0.70153,0.707108,0.058012,0.039051,-0.005193,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.132498,-0.694581,0.707108,0.059065,0.039218,-0.005193,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.17585,-0.684891,0.707108,0.060105,0.03945,-0.005193,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.218508,-0.672497,0.707108,0.061129,0.039748,-0.005193,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.260303,-0.65745,0.707108,0.062132,0.040109,-0.005193,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.301071,-0.639808,0.707108,0.06311,0.040532,-0.005193,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.340651,-0.619641,0.707108,0.06406,0.041016,-0.005193,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.378886,-0.597029,0.707108,0.064977,0.041559,-0.005193,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.415626,-0.57206,0.707108,0.065859,0.042158,-0.005193,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.450726,-0.544834,0.707108,0.066701,0.042811,-0.005193,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.484047,-0.515458,0.707108,0.067501,0.043516,-0.005193,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.515458,-0.484047,0.707108,0.068254,0.04427,-0.005193,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.544834,-0.450726,0.707108,0.068959,0.04507,-0.005193,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.57206,-0.415626,0.707108,0.069613,0.045912,-0.005193,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.597029,-0.378886,0.707108,0.070212,0.046793,-0.005193,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.619641,-0.340651,0.707108,0.070754,0.047711,-0.005193,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.639808,-0.301071,0.707108,0.071238,0.048661,-0.005193,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.65745,-0.260303,0.707108,0.071662,0.049639,-0.005193,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.672497,-0.218508,0.707108,0.072023,0.050642,-0.005193,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.684891,-0.17585,0.707108,0.07232,0.051666,-0.005193,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.694581,-0.132498,0.707108,0.072553,0.052706,-0.005193,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.70153,-0.088624,0.707108,0.072719,0.053759,-0.005193,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.70571,-0.0444,0.707108,0.07282,0.05482,-0.005193,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.707106,0,0.707108,0.072853,0.055885,-0.005193,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.70571,0.0444,0.707108,0.07282,0.056951,-0.005193,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.70153,0.088624,0.707108,0.072719,0.058012,-0.005193,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.694581,0.132498,0.707108,0.072553,0.059065,-0.005193,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.684891,0.17585,0.707108,0.07232,0.060105,-0.005193,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.672497,0.218508,0.707108,0.072023,0.061129,-0.005193,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.65745,0.260303,0.707108,0.071662,0.062132,-0.005193,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.639808,0.301071,0.707108,0.071238,0.06311,-0.005193,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.619641,0.340651,0.707108,0.070754,0.06406,-0.005193,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.597029,0.378886,0.707108,0.070212,0.064977,-0.005193,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.57206,0.415626,0.707108,0.069613,0.065859,-0.005193,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.544834,0.450726,0.707108,0.068959,0.066701,-0.005193,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.515458,0.484047,0.707108,0.068254,0.067501,-0.005193,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.484047,0.515458,0.707108,0.067501,0.068254,-0.005193,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.450726,0.544834,0.707108,0.066701,0.068959,-0.005193,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.415626,0.57206,0.707108,0.065859,0.069613,-0.005193,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.378886,0.597029,0.707108,0.064977,0.070212,-0.005193,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.340651,0.619641,0.707108,0.06406,0.070754,-0.005193,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.301071,0.639808,0.707108,0.06311,0.071238,-0.005193,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.260303,0.65745,0.707108,0.062132,0.071662,-0.005193,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.218508,0.672497,0.707108,0.061129,0.072023,-0.005193,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.17585,0.684891,0.707108,0.060105,0.07232,-0.005193,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.132498,0.694581,0.707108,0.059065,0.072553,-0.005193,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0.088624,0.70153,0.707108,0.058012,0.072719,-0.005193,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ 0.0444,0.70571,0.707108,0.056951,0.07282,-0.005193,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ 0,0.707106,0.707108,0.055885,0.072853,-0.005193,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ -0.0444,0.70571,0.707108,0.05482,0.07282,-0.005193,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.088624,0.70153,0.707108,0.053759,0.072719,-0.005193,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.132498,0.694581,0.707108,0.052706,0.072553,-0.005193,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.17585,0.684891,0.707108,0.051666,0.07232,-0.005193,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.218508,0.672497,0.707108,0.050642,0.072023,-0.005193,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.260303,0.65745,0.707108,0.049639,0.071662,-0.005193,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.301071,0.639808,0.707108,0.048661,0.071238,-0.005193,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.340651,0.619641,0.707108,0.047711,0.070754,-0.005193,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.378886,0.597029,0.707108,0.046793,0.070212,-0.005193,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.415626,0.57206,0.707108,0.045912,0.069613,-0.005193,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.450726,0.544834,0.707108,0.04507,0.068959,-0.005193,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.484047,0.515458,0.707108,0.04427,0.068254,-0.005193,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.515458,0.484047,0.707108,0.043516,0.067501,-0.005193,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.544834,0.450726,0.707108,0.042811,0.066701,-0.005193,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.57206,0.415626,0.707108,0.042158,0.065859,-0.005193,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.597029,0.378886,0.707108,0.041559,0.064977,-0.005193,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.619641,0.340651,0.707108,0.041016,0.06406,-0.005193,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.639808,0.301071,0.707108,0.040532,0.06311,-0.005193,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.65745,0.260303,0.707108,0.040109,0.062132,-0.005193,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.672497,0.218508,0.707108,0.039748,0.061129,-0.005193,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.684891,0.17585,0.707108,0.03945,0.060105,-0.005193,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.694581,0.132498,0.707108,0.039218,0.059065,-0.005193,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.70571,0.0444,0.707108,0.038951,0.056951,-0.005193,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.70153,0.088624,0.707108,0.039051,0.058012,-0.005193,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.616842,0.038808,0.78613,0.039065,0.056943,-0.005092,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.618061,0,0.78613,0.039032,0.055885,-0.005092,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.616842,-0.038808,0.78613,0.039065,0.054827,-0.005092,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.613188,-0.077464,0.78613,0.039165,0.053773,-0.005092,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.607114,-0.115813,0.78613,0.039331,0.052727,-0.005092,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.598644,-0.153706,0.78613,0.039562,0.051694,-0.005092,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.587811,-0.190991,0.78613,0.039857,0.050677,-0.005092,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.574659,-0.227524,0.78613,0.040215,0.049681,-0.005092,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.559239,-0.263158,0.78613,0.040636,0.048709,-0.005092,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.541611,-0.297753,0.78613,0.041117,0.047766,-0.005092,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.521846,-0.331174,0.78613,0.041656,0.046855,-0.005092,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.500022,-0.363287,0.78613,0.042251,0.045979,-0.005092,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.476224,-0.393967,0.78613,0.0429,0.045143,-0.005092,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.450547,-0.423092,0.78613,0.0436,0.044348,-0.005092,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.423092,-0.450547,0.78613,0.044348,0.0436,-0.005092,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.393967,-0.476224,0.78613,0.045143,0.0429,-0.005092,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.363287,-0.500022,0.78613,0.045979,0.042251,-0.005092,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.331174,-0.521846,0.78613,0.046855,0.041656,-0.005092,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.297753,-0.541611,0.78613,0.047766,0.041117,-0.005092,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.263158,-0.559239,0.78613,0.048709,0.040636,-0.005092,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.227524,-0.574659,0.78613,0.049681,0.040215,-0.005092,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.190991,-0.587811,0.78613,0.050677,0.039857,-0.005092,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.153706,-0.598644,0.78613,0.051694,0.039562,-0.005092,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.115813,-0.607114,0.78613,0.052727,0.039331,-0.005092,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ -0.077464,-0.613188,0.78613,0.053773,0.039165,-0.005092,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ -0.038808,-0.616842,0.78613,0.054827,0.039065,-0.005092,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ 0,-0.618061,0.78613,0.055885,0.039032,-0.005092,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0.038808,-0.616842,0.78613,0.056943,0.039065,-0.005092,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.077464,-0.613188,0.78613,0.057998,0.039165,-0.005092,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.115813,-0.607114,0.78613,0.059043,0.039331,-0.005092,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.153706,-0.598644,0.78613,0.060077,0.039562,-0.005092,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.190991,-0.587811,0.78613,0.061093,0.039857,-0.005092,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.227524,-0.574659,0.78613,0.062089,0.040215,-0.005092,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.263158,-0.559239,0.78613,0.063061,0.040636,-0.005092,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.297753,-0.541611,0.78613,0.064004,0.041117,-0.005092,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.331174,-0.521846,0.78613,0.064916,0.041656,-0.005092,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.363287,-0.500022,0.78613,0.065791,0.042251,-0.005092,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.393967,-0.476224,0.78613,0.066628,0.0429,-0.005092,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.423092,-0.450547,0.78613,0.067422,0.0436,-0.005092,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.450547,-0.423092,0.78613,0.068171,0.044348,-0.005092,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.476224,-0.393967,0.78613,0.068871,0.045143,-0.005092,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.500022,-0.363287,0.78613,0.06952,0.045979,-0.005092,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.521846,-0.331174,0.78613,0.070115,0.046855,-0.005092,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.541611,-0.297753,0.78613,0.070654,0.047766,-0.005092,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.559239,-0.263158,0.78613,0.071135,0.048709,-0.005092,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.574659,-0.227524,0.78613,0.071555,0.049681,-0.005092,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.587811,-0.190991,0.78613,0.071914,0.050677,-0.005092,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.598644,-0.153706,0.78613,0.072209,0.051694,-0.005092,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.607114,-0.115813,0.78613,0.07244,0.052727,-0.005092,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.613188,-0.077464,0.78613,0.072606,0.053773,-0.005092,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.616842,-0.038808,0.78613,0.072705,0.054827,-0.005092,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.618061,0,0.78613,0.072739,0.055885,-0.005092,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.616842,0.038808,0.78613,0.072705,0.056943,-0.005092,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.613188,0.077464,0.78613,0.072606,0.057998,-0.005092,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.607114,0.115813,0.78613,0.07244,0.059043,-0.005092,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.598644,0.153706,0.78613,0.072209,0.060077,-0.005092,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.587811,0.190991,0.78613,0.071914,0.061093,-0.005092,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.574659,0.227524,0.78613,0.071555,0.062089,-0.005092,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.559239,0.263158,0.78613,0.071135,0.063061,-0.005092,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.541611,0.297753,0.78613,0.070654,0.064004,-0.005092,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.521846,0.331174,0.78613,0.070115,0.064916,-0.005092,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.500022,0.363287,0.78613,0.06952,0.065791,-0.005092,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.476224,0.393967,0.78613,0.068871,0.066628,-0.005092,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.450547,0.423092,0.78613,0.068171,0.067422,-0.005092,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.423092,0.450547,0.78613,0.067422,0.068171,-0.005092,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.393967,0.476224,0.78613,0.066628,0.068871,-0.005092,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.363287,0.500022,0.78613,0.065791,0.06952,-0.005092,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.331174,0.521846,0.78613,0.064916,0.070115,-0.005092,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.297753,0.541611,0.78613,0.064004,0.070654,-0.005092,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.263158,0.559239,0.78613,0.063061,0.071135,-0.005092,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.227524,0.574659,0.78613,0.062089,0.071555,-0.005092,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.190991,0.587811,0.78613,0.061093,0.071914,-0.005092,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.153706,0.598644,0.78613,0.060077,0.072209,-0.005092,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.115813,0.607114,0.78613,0.059043,0.07244,-0.005092,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0.077464,0.613188,0.78613,0.057998,0.072606,-0.005092,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ 0.038808,0.616842,0.78613,0.056943,0.072705,-0.005092,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ 0,0.618061,0.78613,0.055885,0.072739,-0.005092,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ -0.038808,0.616842,0.78613,0.054827,0.072705,-0.005092,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.077464,0.613188,0.78613,0.053773,0.072606,-0.005092,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.115813,0.607114,0.78613,0.052727,0.07244,-0.005092,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.153706,0.598644,0.78613,0.051694,0.072209,-0.005092,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.190991,0.587811,0.78613,0.050677,0.071914,-0.005092,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.227524,0.574659,0.78613,0.049681,0.071555,-0.005092,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.263158,0.559239,0.78613,0.048709,0.071135,-0.005092,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.297753,0.541611,0.78613,0.047766,0.070654,-0.005092,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.331174,0.521846,0.78613,0.046855,0.070115,-0.005092,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.363287,0.500022,0.78613,0.045979,0.06952,-0.005092,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.393967,0.476224,0.78613,0.045143,0.068871,-0.005092,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.423092,0.450547,0.78613,0.044348,0.068171,-0.005092,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.450547,0.423092,0.78613,0.0436,0.067422,-0.005092,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.476224,0.393967,0.78613,0.0429,0.066628,-0.005092,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.500022,0.363287,0.78613,0.042251,0.065791,-0.005092,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.521846,0.331174,0.78613,0.041656,0.064916,-0.005092,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.541611,0.297753,0.78613,0.041117,0.064004,-0.005092,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.559239,0.263158,0.78613,0.040636,0.063061,-0.005092,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.574659,0.227524,0.78613,0.040215,0.062089,-0.005092,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.587811,0.190991,0.78613,0.039857,0.061093,-0.005092,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.598644,0.153706,0.78613,0.039562,0.060077,-0.005092,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.613188,0.077464,0.78613,0.039165,0.057998,-0.005092,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.607114,0.115813,0.78613,0.039331,0.059043,-0.005092,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.516155,0.065205,0.85401,0.03929,0.057982,-0.005004,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.519231,0.032667,0.85401,0.039191,0.056936,-0.005004,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.520257,0,0.85401,0.039158,0.055885,-0.005004,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.519231,-0.032667,0.85401,0.039191,0.054835,-0.005004,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.516155,-0.065205,0.85401,0.03929,0.053789,-0.005004,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.511042,-0.097487,0.85401,0.039454,0.052751,-0.005004,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.503912,-0.129383,0.85401,0.039684,0.051725,-0.005004,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.494794,-0.160768,0.85401,0.039977,0.050716,-0.005004,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.483723,-0.191519,0.85401,0.040333,0.049728,-0.005004,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.470743,-0.221515,0.85401,0.04075,0.048763,-0.005004,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.455905,-0.250636,0.85401,0.041227,0.047827,-0.005004,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.439268,-0.278768,0.85401,0.041762,0.046922,-0.005004,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.420897,-0.3058,0.85401,0.042353,0.046053,-0.005004,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.400865,-0.331624,0.85401,0.042997,0.045223,-0.005004,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.379251,-0.356141,0.85401,0.043692,0.044435,-0.005004,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.356141,-0.379251,0.85401,0.044435,0.043692,-0.005004,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.331624,-0.400865,0.85401,0.045223,0.042997,-0.005004,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.3058,-0.420897,0.85401,0.046053,0.042353,-0.005004,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.278768,-0.439268,0.85401,0.046922,0.041762,-0.005004,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.250636,-0.455905,0.85401,0.047827,0.041227,-0.005004,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.221515,-0.470743,0.85401,0.048763,0.04075,-0.005004,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.191519,-0.483723,0.85401,0.049728,0.040333,-0.005004,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.160768,-0.494794,0.85401,0.050716,0.039977,-0.005004,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.129383,-0.503912,0.85401,0.051725,0.039684,-0.005004,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.097487,-0.511042,0.85401,0.052751,0.039454,-0.005004,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ -0.065205,-0.516155,0.85401,0.053789,0.03929,-0.005004,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ -0.032667,-0.519231,0.85401,0.054835,0.039191,-0.005004,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ 0,-0.520257,0.85401,0.055885,0.039158,-0.005004,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0.032667,-0.519231,0.85401,0.056936,0.039191,-0.005004,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.065205,-0.516155,0.85401,0.057982,0.03929,-0.005004,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.097487,-0.511042,0.85401,0.05902,0.039454,-0.005004,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.129383,-0.503912,0.85401,0.060045,0.039684,-0.005004,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.160768,-0.494794,0.85401,0.061054,0.039977,-0.005004,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.191519,-0.483723,0.85401,0.062043,0.040333,-0.005004,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.221515,-0.470743,0.85401,0.063007,0.04075,-0.005004,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.250636,-0.455905,0.85401,0.063944,0.041227,-0.005004,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.278768,-0.439268,0.85401,0.064848,0.041762,-0.005004,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.3058,-0.420897,0.85401,0.065717,0.042353,-0.005004,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.331624,-0.400865,0.85401,0.066548,0.042997,-0.005004,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.356141,-0.379251,0.85401,0.067336,0.043692,-0.005004,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.379251,-0.356141,0.85401,0.068079,0.044435,-0.005004,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.400865,-0.331624,0.85401,0.068774,0.045223,-0.005004,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.420897,-0.3058,0.85401,0.069418,0.046053,-0.005004,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.439268,-0.278768,0.85401,0.070009,0.046922,-0.005004,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.455905,-0.250636,0.85401,0.070543,0.047827,-0.005004,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.470743,-0.221515,0.85401,0.071021,0.048763,-0.005004,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.483723,-0.191519,0.85401,0.071438,0.049728,-0.005004,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.494794,-0.160768,0.85401,0.071794,0.050716,-0.005004,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.503912,-0.129383,0.85401,0.072087,0.051725,-0.005004,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.511042,-0.097487,0.85401,0.072316,0.052751,-0.005004,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.516155,-0.065205,0.85401,0.072481,0.053789,-0.005004,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.519231,-0.032667,0.85401,0.07258,0.054835,-0.005004,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.520257,0,0.85401,0.072613,0.055885,-0.005004,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.519231,0.032667,0.85401,0.07258,0.056936,-0.005004,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.516155,0.065205,0.85401,0.072481,0.057982,-0.005004,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.511042,0.097487,0.85401,0.072316,0.05902,-0.005004,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.503912,0.129383,0.85401,0.072087,0.060045,-0.005004,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.494794,0.160768,0.85401,0.071794,0.061054,-0.005004,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.483723,0.191519,0.85401,0.071438,0.062043,-0.005004,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.470743,0.221515,0.85401,0.071021,0.063007,-0.005004,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.455905,0.250636,0.85401,0.070543,0.063944,-0.005004,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.439268,0.278768,0.85401,0.070009,0.064848,-0.005004,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.420897,0.3058,0.85401,0.069418,0.065717,-0.005004,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.400865,0.331624,0.85401,0.068774,0.066548,-0.005004,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.379251,0.356141,0.85401,0.068079,0.067336,-0.005004,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.356141,0.379251,0.85401,0.067336,0.068079,-0.005004,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.331624,0.400865,0.85401,0.066548,0.068774,-0.005004,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.3058,0.420897,0.85401,0.065717,0.069418,-0.005004,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.278768,0.439268,0.85401,0.064848,0.070009,-0.005004,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.250636,0.455905,0.85401,0.063944,0.070543,-0.005004,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.221515,0.470743,0.85401,0.063007,0.071021,-0.005004,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.191519,0.483723,0.85401,0.062043,0.071438,-0.005004,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.160768,0.494794,0.85401,0.061054,0.071794,-0.005004,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.129383,0.503912,0.85401,0.060045,0.072087,-0.005004,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.097487,0.511042,0.85401,0.05902,0.072316,-0.005004,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0.065205,0.516155,0.85401,0.057982,0.072481,-0.005004,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ 0.032667,0.519231,0.85401,0.056936,0.07258,-0.005004,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ 0,0.520257,0.85401,0.055885,0.072613,-0.005004,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ -0.032667,0.519231,0.85401,0.054835,0.07258,-0.005004,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.065205,0.516155,0.85401,0.053789,0.072481,-0.005004,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.097487,0.511042,0.85401,0.052751,0.072316,-0.005004,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.129383,0.503912,0.85401,0.051725,0.072087,-0.005004,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.160768,0.494794,0.85401,0.050716,0.071794,-0.005004,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.191519,0.483723,0.85401,0.049728,0.071438,-0.005004,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.221515,0.470743,0.85401,0.048763,0.071021,-0.005004,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.250636,0.455905,0.85401,0.047827,0.070543,-0.005004,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.278768,0.439268,0.85401,0.046922,0.070009,-0.005004,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.3058,0.420897,0.85401,0.046053,0.069418,-0.005004,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.331624,0.400865,0.85401,0.045223,0.068774,-0.005004,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.356141,0.379251,0.85401,0.044435,0.068079,-0.005004,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.379251,0.356141,0.85401,0.043692,0.067336,-0.005004,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.400865,0.331624,0.85401,0.042997,0.066548,-0.005004,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.420897,0.3058,0.85401,0.042353,0.065717,-0.005004,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.439268,0.278768,0.85401,0.041762,0.064848,-0.005004,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.455905,0.250636,0.85401,0.041227,0.063944,-0.005004,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.470743,0.221515,0.85401,0.04075,0.063007,-0.005004,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.483723,0.191519,0.85401,0.040333,0.062043,-0.005004,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.494794,0.160768,0.85401,0.039977,0.061054,-0.005004,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.511042,0.097487,0.85401,0.039454,0.05902,-0.005004,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.503912,0.129383,0.85401,0.039684,0.060045,-0.005004,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.407727,0.077778,0.909785,0.039587,0.058994,-0.004932,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.411806,0.052023,0.909785,0.039424,0.057965,-0.004932,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.41426,0.026063,0.909785,0.039326,0.056927,-0.004932,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.415079,0,0.909785,0.039294,0.055885,-0.004932,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.41426,-0.026063,0.909785,0.039326,0.054844,-0.004932,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.411806,-0.052023,0.909785,0.039424,0.053806,-0.004932,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.407727,-0.077778,0.909785,0.039587,0.052776,-0.004932,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.402039,-0.103226,0.909785,0.039815,0.051759,-0.004932,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.394764,-0.128267,0.909785,0.040106,0.050758,-0.004932,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.385931,-0.152801,0.909785,0.040459,0.049777,-0.004932,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.375575,-0.176732,0.909785,0.040873,0.048821,-0.004932,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.363737,-0.199966,0.909785,0.041346,0.047892,-0.004932,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.350463,-0.222411,0.909785,0.041876,0.046995,-0.004932,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.335806,-0.243978,0.909785,0.042462,0.046133,-0.004932,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.319824,-0.264582,0.909785,0.043101,0.045309,-0.004932,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.30258,-0.284141,0.909785,0.04379,0.044527,-0.004932,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.284141,-0.30258,0.909785,0.044527,0.04379,-0.004932,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.264582,-0.319824,0.909785,0.045309,0.043101,-0.004932,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.243978,-0.335806,0.909785,0.046133,0.042462,-0.004932,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.222411,-0.350463,0.909785,0.046995,0.041876,-0.004932,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.199966,-0.363737,0.909785,0.047892,0.041346,-0.004932,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.176732,-0.375575,0.909785,0.048821,0.040873,-0.004932,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.152801,-0.385931,0.909785,0.049777,0.040459,-0.004932,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.128267,-0.394764,0.909785,0.050758,0.040106,-0.004932,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.103226,-0.402039,0.909785,0.051759,0.039815,-0.004932,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.077778,-0.407727,0.909785,0.052776,0.039587,-0.004932,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ -0.052023,-0.411806,0.909785,0.053806,0.039424,-0.004932,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ -0.026063,-0.41426,0.909785,0.054844,0.039326,-0.004932,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ 0,-0.415079,0.909785,0.055885,0.039294,-0.004932,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0.026063,-0.41426,0.909785,0.056927,0.039326,-0.004932,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.052023,-0.411806,0.909785,0.057965,0.039424,-0.004932,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.077778,-0.407727,0.909785,0.058994,0.039587,-0.004932,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.103226,-0.402039,0.909785,0.060012,0.039815,-0.004932,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.128267,-0.394764,0.909785,0.061012,0.040106,-0.004932,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.152801,-0.385931,0.909785,0.061993,0.040459,-0.004932,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.176732,-0.375575,0.909785,0.06295,0.040873,-0.004932,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.199966,-0.363737,0.909785,0.063878,0.041346,-0.004932,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.222411,-0.350463,0.909785,0.064776,0.041876,-0.004932,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.243978,-0.335806,0.909785,0.065638,0.042462,-0.004932,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.264582,-0.319824,0.909785,0.066461,0.043101,-0.004932,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.284141,-0.30258,0.909785,0.067243,0.04379,-0.004932,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.30258,-0.284141,0.909785,0.06798,0.044527,-0.004932,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.319824,-0.264582,0.909785,0.06867,0.045309,-0.004932,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.335806,-0.243978,0.909785,0.069308,0.046133,-0.004932,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.350463,-0.222411,0.909785,0.069894,0.046995,-0.004932,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.363737,-0.199966,0.909785,0.070425,0.047892,-0.004932,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.375575,-0.176732,0.909785,0.070898,0.048821,-0.004932,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.385931,-0.152801,0.909785,0.071312,0.049777,-0.004932,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.394764,-0.128267,0.909785,0.071665,0.050758,-0.004932,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.402039,-0.103226,0.909785,0.071956,0.051759,-0.004932,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.407727,-0.077778,0.909785,0.072183,0.052776,-0.004932,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.411806,-0.052023,0.909785,0.072346,0.053806,-0.004932,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.41426,-0.026063,0.909785,0.072444,0.054844,-0.004932,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.415079,0,0.909785,0.072477,0.055885,-0.004932,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.41426,0.026063,0.909785,0.072444,0.056927,-0.004932,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.411806,0.052023,0.909785,0.072346,0.057965,-0.004932,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.407727,0.077778,0.909785,0.072183,0.058994,-0.004932,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.402039,0.103226,0.909785,0.071956,0.060012,-0.004932,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.394764,0.128267,0.909785,0.071665,0.061012,-0.004932,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.385931,0.152801,0.909785,0.071312,0.061993,-0.004932,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.375575,0.176732,0.909785,0.070898,0.06295,-0.004932,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.363737,0.199966,0.909785,0.070425,0.063878,-0.004932,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.350463,0.222411,0.909785,0.069894,0.064776,-0.004932,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.335806,0.243978,0.909785,0.069308,0.065638,-0.004932,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.319824,0.264582,0.909785,0.06867,0.066461,-0.004932,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.30258,0.284141,0.909785,0.06798,0.067243,-0.004932,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.284141,0.30258,0.909785,0.067243,0.06798,-0.004932,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.264582,0.319824,0.909785,0.066461,0.06867,-0.004932,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.243978,0.335806,0.909785,0.065638,0.069308,-0.004932,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.222411,0.350463,0.909785,0.064776,0.069894,-0.004932,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.199966,0.363737,0.909785,0.063878,0.070425,-0.004932,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.176732,0.375575,0.909785,0.06295,0.070898,-0.004932,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.152801,0.385931,0.909785,0.061993,0.071312,-0.004932,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.128267,0.394764,0.909785,0.061012,0.071665,-0.004932,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.103226,0.402039,0.909785,0.060012,0.071956,-0.004932,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.077778,0.407727,0.909785,0.058994,0.072183,-0.004932,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0.052023,0.411806,0.909785,0.057965,0.072346,-0.004932,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ 0.026063,0.41426,0.909785,0.056927,0.072444,-0.004932,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ 0,0.415079,0.909785,0.055885,0.072477,-0.004932,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ -0.026063,0.41426,0.909785,0.054844,0.072444,-0.004932,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.052023,0.411806,0.909785,0.053806,0.072346,-0.004932,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.077778,0.407727,0.909785,0.052776,0.072183,-0.004932,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.103226,0.402039,0.909785,0.051759,0.071956,-0.004932,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.128267,0.394764,0.909785,0.050758,0.071665,-0.004932,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.152801,0.385931,0.909785,0.049777,0.071312,-0.004932,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.176732,0.375575,0.909785,0.048821,0.070898,-0.004932,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.199966,0.363737,0.909785,0.047892,0.070425,-0.004932,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.222411,0.350463,0.909785,0.046995,0.069894,-0.004932,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.243978,0.335806,0.909785,0.046133,0.069308,-0.004932,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.264582,0.319824,0.909785,0.045309,0.06867,-0.004932,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.284141,0.30258,0.909785,0.044527,0.06798,-0.004932,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.30258,0.284141,0.909785,0.04379,0.067243,-0.004932,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.319824,0.264582,0.909785,0.043101,0.066461,-0.004932,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.335806,0.243978,0.909785,0.042462,0.065638,-0.004932,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.350463,0.222411,0.909785,0.041876,0.064776,-0.004932,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.363737,0.199966,0.909785,0.041346,0.063878,-0.004932,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.375575,0.176732,0.909785,0.040873,0.06295,-0.004932,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.385931,0.152801,0.909785,0.040459,0.061993,-0.004932,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.402039,0.103226,0.909785,0.039815,0.060012,-0.004932,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.394764,0.128267,0.909785,0.040106,0.061012,-0.004932,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.294467,0.075606,0.952666,0.039953,0.059976,-0.004877,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.298634,0.056967,0.952666,0.039728,0.058967,-0.004877,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.301621,0.038104,0.952666,0.039566,0.057947,-0.004877,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.303419,0.019089,0.952666,0.039469,0.056918,-0.004877,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.304019,0,0.952666,0.039437,0.055885,-0.004877,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.303419,-0.019089,0.952666,0.039469,0.054852,-0.004877,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.301621,-0.038104,0.952666,0.039566,0.053824,-0.004877,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.298634,-0.056967,0.952666,0.039728,0.052803,-0.004877,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.294467,-0.075606,0.952666,0.039953,0.051795,-0.004877,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.289139,-0.093947,0.952666,0.040242,0.050802,-0.004877,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.282669,-0.111917,0.952666,0.040592,0.04983,-0.004877,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.275084,-0.129445,0.952666,0.041002,0.048882,-0.004877,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.266414,-0.146462,0.952666,0.041471,0.047961,-0.004877,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.256692,-0.162901,0.952666,0.041997,0.047072,-0.004877,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.245956,-0.178698,0.952666,0.042578,0.046217,-0.004877,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.23425,-0.193789,0.952666,0.043211,0.0454,-0.004877,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.22162,-0.208115,0.952666,0.043895,0.044625,-0.004877,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.208115,-0.22162,0.952666,0.044625,0.043895,-0.004877,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.193789,-0.23425,0.952666,0.0454,0.043211,-0.004877,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.178698,-0.245956,0.952666,0.046217,0.042578,-0.004877,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.162901,-0.256692,0.952666,0.047072,0.041997,-0.004877,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.146462,-0.266414,0.952666,0.047961,0.041471,-0.004877,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.129445,-0.275084,0.952666,0.048882,0.041002,-0.004877,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.111917,-0.282669,0.952666,0.04983,0.040592,-0.004877,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.093947,-0.289139,0.952666,0.050802,0.040242,-0.004877,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.075606,-0.294467,0.952666,0.051795,0.039953,-0.004877,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.056967,-0.298634,0.952666,0.052803,0.039728,-0.004877,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ -0.038104,-0.301621,0.952666,0.053824,0.039566,-0.004877,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ -0.019089,-0.303419,0.952666,0.054852,0.039469,-0.004877,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ 0,-0.304019,0.952666,0.055885,0.039437,-0.004877,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0.019089,-0.303419,0.952666,0.056918,0.039469,-0.004877,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.038104,-0.301621,0.952666,0.057947,0.039566,-0.004877,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.056967,-0.298634,0.952666,0.058967,0.039728,-0.004877,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.075606,-0.294467,0.952666,0.059976,0.039953,-0.004877,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.093947,-0.289139,0.952666,0.060968,0.040242,-0.004877,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.111917,-0.282669,0.952666,0.061941,0.040592,-0.004877,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.129445,-0.275084,0.952666,0.062889,0.041002,-0.004877,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.146462,-0.266414,0.952666,0.063809,0.041471,-0.004877,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.162901,-0.256692,0.952666,0.064699,0.041997,-0.004877,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.178698,-0.245956,0.952666,0.065554,0.042578,-0.004877,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.193789,-0.23425,0.952666,0.06637,0.043211,-0.004877,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.208115,-0.22162,0.952666,0.067145,0.043895,-0.004877,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.22162,-0.208115,0.952666,0.067876,0.044625,-0.004877,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.23425,-0.193789,0.952666,0.068559,0.0454,-0.004877,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.245956,-0.178698,0.952666,0.069193,0.046217,-0.004877,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.256692,-0.162901,0.952666,0.069773,0.047072,-0.004877,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.266414,-0.146462,0.952666,0.070299,0.047961,-0.004877,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.275084,-0.129445,0.952666,0.070769,0.048882,-0.004877,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.282669,-0.111917,0.952666,0.071179,0.04983,-0.004877,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.289139,-0.093947,0.952666,0.071529,0.050802,-0.004877,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.294467,-0.075606,0.952666,0.071817,0.051795,-0.004877,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.298634,-0.056967,0.952666,0.072043,0.052803,-0.004877,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.301621,-0.038104,0.952666,0.072204,0.053824,-0.004877,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.303419,-0.019089,0.952666,0.072302,0.054852,-0.004877,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.304019,0,0.952666,0.072334,0.055885,-0.004877,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.303419,0.019089,0.952666,0.072302,0.056918,-0.004877,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.301621,0.038104,0.952666,0.072204,0.057947,-0.004877,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.298634,0.056967,0.952666,0.072043,0.058967,-0.004877,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.294467,0.075606,0.952666,0.071817,0.059976,-0.004877,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.289139,0.093947,0.952666,0.071529,0.060968,-0.004877,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.282669,0.111917,0.952666,0.071179,0.061941,-0.004877,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.275084,0.129445,0.952666,0.070769,0.062889,-0.004877,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.266414,0.146462,0.952666,0.070299,0.063809,-0.004877,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.256692,0.162901,0.952666,0.069773,0.064699,-0.004877,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.245956,0.178698,0.952666,0.069193,0.065554,-0.004877,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.23425,0.193789,0.952666,0.068559,0.06637,-0.004877,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.22162,0.208115,0.952666,0.067876,0.067145,-0.004877,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.208115,0.22162,0.952666,0.067145,0.067876,-0.004877,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.193789,0.23425,0.952666,0.06637,0.068559,-0.004877,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.178698,0.245956,0.952666,0.065554,0.069193,-0.004877,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.162901,0.256692,0.952666,0.064699,0.069773,-0.004877,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.146462,0.266414,0.952666,0.063809,0.070299,-0.004877,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.129445,0.275084,0.952666,0.062889,0.070769,-0.004877,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.111917,0.282669,0.952666,0.061941,0.071179,-0.004877,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.093947,0.289139,0.952666,0.060968,0.071529,-0.004877,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.075606,0.294467,0.952666,0.059976,0.071817,-0.004877,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.056967,0.298634,0.952666,0.058967,0.072043,-0.004877,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0.038104,0.301621,0.952666,0.057947,0.072204,-0.004877,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ 0.019089,0.303419,0.952666,0.056918,0.072302,-0.004877,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ 0,0.304019,0.952666,0.055885,0.072334,-0.004877,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ -0.019089,0.303419,0.952666,0.054852,0.072302,-0.004877,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.038104,0.301621,0.952666,0.053824,0.072204,-0.004877,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.056967,0.298634,0.952666,0.052803,0.072043,-0.004877,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.075606,0.294467,0.952666,0.051795,0.071817,-0.004877,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.093947,0.289139,0.952666,0.050802,0.071529,-0.004877,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.111917,0.282669,0.952666,0.04983,0.071179,-0.004877,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.129445,0.275084,0.952666,0.048882,0.070769,-0.004877,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.146462,0.266414,0.952666,0.047961,0.070299,-0.004877,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.162901,0.256692,0.952666,0.047072,0.069773,-0.004877,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.178698,0.245956,0.952666,0.046217,0.069193,-0.004877,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.193789,0.23425,0.952666,0.0454,0.068559,-0.004877,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.208115,0.22162,0.952666,0.044625,0.067876,-0.004877,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.22162,0.208115,0.952666,0.043895,0.067145,-0.004877,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.23425,0.193789,0.952666,0.043211,0.06637,-0.004877,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.245956,0.178698,0.952666,0.042578,0.065554,-0.004877,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.256692,0.162901,0.952666,0.041997,0.064699,-0.004877,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.266414,0.146462,0.952666,0.041471,0.063809,-0.004877,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.275084,0.129445,0.952666,0.041002,0.062889,-0.004877,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.289139,0.093947,0.952666,0.040242,0.060968,-0.004877,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.282669,0.111917,0.952666,0.040592,0.061941,-0.004877,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.179416,0.058296,0.982045,0.040383,0.060922,-0.004839,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.182722,0.046915,0.982045,0.040097,0.059939,-0.004839,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.185308,0.035349,0.982045,0.039874,0.05894,-0.004839,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.187162,0.023644,0.982045,0.039714,0.057928,-0.004839,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.188277,0.011845,0.982045,0.039617,0.056909,-0.004839,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.188649,0,0.982045,0.039585,0.055885,-0.004839,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.188277,-0.011845,0.982045,0.039617,0.054862,-0.004839,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.187162,-0.023644,0.982045,0.039714,0.053842,-0.004839,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.185308,-0.035349,0.982045,0.039874,0.052831,-0.004839,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.182722,-0.046915,0.982045,0.040097,0.051832,-0.004839,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.179416,-0.058296,0.982045,0.040383,0.050848,-0.004839,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.175402,-0.069446,0.982045,0.04073,0.049885,-0.004839,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.170695,-0.080323,0.982045,0.041136,0.048945,-0.004839,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.165314,-0.090882,0.982045,0.041601,0.048033,-0.004839,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.159282,-0.101083,0.982045,0.042123,0.047151,-0.004839,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.15262,-0.110885,0.982045,0.042698,0.046304,-0.004839,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.145357,-0.120249,0.982045,0.043326,0.045495,-0.004839,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.137519,-0.129139,0.982045,0.044003,0.044727,-0.004839,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.129139,-0.137519,0.982045,0.044727,0.044003,-0.004839,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.120249,-0.145357,0.982045,0.045495,0.043326,-0.004839,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.110885,-0.15262,0.982045,0.046304,0.042698,-0.004839,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.101083,-0.159282,0.982045,0.047151,0.042123,-0.004839,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.090882,-0.165314,0.982045,0.048033,0.041601,-0.004839,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.080323,-0.170695,0.982045,0.048945,0.041136,-0.004839,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.069446,-0.175402,0.982045,0.049885,0.04073,-0.004839,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.058296,-0.179416,0.982045,0.050848,0.040383,-0.004839,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.046915,-0.182722,0.982045,0.051832,0.040097,-0.004839,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.035349,-0.185308,0.982045,0.052831,0.039874,-0.004839,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ -0.023644,-0.187162,0.982045,0.053842,0.039714,-0.004839,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ -0.011845,-0.188277,0.982045,0.054862,0.039617,-0.004839,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ 0,-0.188649,0.982045,0.055885,0.039585,-0.004839,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0.011845,-0.188277,0.982045,0.056909,0.039617,-0.004839,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.023644,-0.187162,0.982045,0.057928,0.039714,-0.004839,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.035349,-0.185308,0.982045,0.05894,0.039874,-0.004839,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.046915,-0.182722,0.982045,0.059939,0.040097,-0.004839,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.058296,-0.179416,0.982045,0.060922,0.040383,-0.004839,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.069446,-0.175402,0.982045,0.061886,0.04073,-0.004839,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.080323,-0.170695,0.982045,0.062825,0.041136,-0.004839,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.090882,-0.165314,0.982045,0.063738,0.041601,-0.004839,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.101083,-0.159282,0.982045,0.064619,0.042123,-0.004839,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.110885,-0.15262,0.982045,0.065466,0.042698,-0.004839,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.120249,-0.145357,0.982045,0.066275,0.043326,-0.004839,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.129139,-0.137519,0.982045,0.067043,0.044003,-0.004839,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.137519,-0.129139,0.982045,0.067768,0.044727,-0.004839,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.145357,-0.120249,0.982045,0.068445,0.045495,-0.004839,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.15262,-0.110885,0.982045,0.069072,0.046304,-0.004839,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.159282,-0.101083,0.982045,0.069648,0.047151,-0.004839,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.165314,-0.090882,0.982045,0.070169,0.048033,-0.004839,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.170695,-0.080323,0.982045,0.070634,0.048945,-0.004839,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.175402,-0.069446,0.982045,0.071041,0.049885,-0.004839,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.179416,-0.058296,0.982045,0.071388,0.050848,-0.004839,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.182722,-0.046915,0.982045,0.071673,0.051832,-0.004839,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.185308,-0.035349,0.982045,0.071897,0.052831,-0.004839,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.187162,-0.023644,0.982045,0.072057,0.053842,-0.004839,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.188277,-0.011845,0.982045,0.072153,0.054862,-0.004839,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.188649,0,0.982045,0.072186,0.055885,-0.004839,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.188277,0.011845,0.982045,0.072153,0.056909,-0.004839,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.187162,0.023644,0.982045,0.072057,0.057928,-0.004839,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.185308,0.035349,0.982045,0.071897,0.05894,-0.004839,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.182722,0.046915,0.982045,0.071673,0.059939,-0.004839,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.179416,0.058296,0.982045,0.071388,0.060922,-0.004839,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.175402,0.069446,0.982045,0.071041,0.061886,-0.004839,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.170695,0.080323,0.982045,0.070634,0.062825,-0.004839,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.165314,0.090882,0.982045,0.070169,0.063738,-0.004839,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.159282,0.101083,0.982045,0.069648,0.064619,-0.004839,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.15262,0.110885,0.982045,0.069072,0.065466,-0.004839,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.145357,0.120249,0.982045,0.068445,0.066275,-0.004839,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.137519,0.129139,0.982045,0.067768,0.067043,-0.004839,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.129139,0.137519,0.982045,0.067043,0.067768,-0.004839,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.120249,0.145357,0.982045,0.066275,0.068445,-0.004839,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.110885,0.15262,0.982045,0.065466,0.069072,-0.004839,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.101083,0.159282,0.982045,0.064619,0.069648,-0.004839,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.090882,0.165314,0.982045,0.063738,0.070169,-0.004839,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.080323,0.170695,0.982045,0.062825,0.070634,-0.004839,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.069446,0.175402,0.982045,0.061886,0.071041,-0.004839,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.058296,0.179416,0.982045,0.060922,0.071388,-0.004839,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.046915,0.182722,0.982045,0.059939,0.071673,-0.004839,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.035349,0.185308,0.982045,0.05894,0.071897,-0.004839,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0.023644,0.187162,0.982045,0.057928,0.072057,-0.004839,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ 0.011845,0.188277,0.982045,0.056909,0.072153,-0.004839,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ 0,0.188649,0.982045,0.055885,0.072186,-0.004839,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ -0.011845,0.188277,0.982045,0.054862,0.072153,-0.004839,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.023644,0.187162,0.982045,0.053842,0.072057,-0.004839,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.035349,0.185308,0.982045,0.052831,0.071897,-0.004839,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.046915,0.182722,0.982045,0.051832,0.071673,-0.004839,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.058296,0.179416,0.982045,0.050848,0.071388,-0.004839,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.069446,0.175402,0.982045,0.049885,0.071041,-0.004839,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.080323,0.170695,0.982045,0.048945,0.070634,-0.004839,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.090882,0.165314,0.982045,0.048033,0.070169,-0.004839,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.101083,0.159282,0.982045,0.047151,0.069648,-0.004839,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.110885,0.15262,0.982045,0.046304,0.069072,-0.004839,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.120249,0.145357,0.982045,0.045495,0.068445,-0.004839,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.129139,0.137519,0.982045,0.044727,0.067768,-0.004839,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.137519,0.129139,0.982045,0.044003,0.067043,-0.004839,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.145357,0.120249,0.982045,0.043326,0.066275,-0.004839,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.15262,0.110885,0.982045,0.042698,0.065466,-0.004839,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.159282,0.101083,0.982045,0.042123,0.064619,-0.004839,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.165314,0.090882,0.982045,0.041601,0.063738,-0.004839,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.175402,0.069446,0.982045,0.04073,0.061886,-0.004839,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.170695,0.080323,0.982045,0.041136,0.062825,-0.004839,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ -0.065648,0.025992,0.997504,0.040871,0.06183,-0.004819,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818,
+ -0.06715,0.021818,0.997504,0.040528,0.060875,-0.004819,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ -0.068388,0.017559,0.997504,0.040245,0.059901,-0.004819,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ -0.069355,0.01323,0.997504,0.040023,0.058911,-0.004819,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ -0.070049,0.008849,0.997504,0.039865,0.057909,-0.004819,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ -0.070467,0.004433,0.997504,0.039769,0.056899,-0.004819,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ -0.070606,0,0.997504,0.039737,0.055885,-0.004819,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ -0.070467,-0.004433,0.997504,0.039769,0.054871,-0.004819,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ -0.070049,-0.008849,0.997504,0.039865,0.053861,-0.004819,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ -0.069355,-0.01323,0.997504,0.040023,0.052859,-0.004819,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ -0.068388,-0.017559,0.997504,0.040245,0.051869,-0.004819,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ -0.06715,-0.021818,0.997504,0.040528,0.050895,-0.004819,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ -0.065648,-0.025992,0.997504,0.040871,0.049941,-0.004819,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ -0.063886,-0.030062,0.997504,0.041274,0.04901,-0.004819,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ -0.061872,-0.034015,0.997504,0.041735,0.048106,-0.004819,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ -0.059614,-0.037832,0.997504,0.042251,0.047233,-0.004819,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ -0.057121,-0.041501,0.997504,0.042821,0.046394,-0.004819,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ -0.054403,-0.045006,0.997504,0.043443,0.045592,-0.004819,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ -0.051469,-0.048333,0.997504,0.044114,0.044831,-0.004819,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ -0.048333,-0.051469,0.997504,0.044831,0.044114,-0.004819,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ -0.045006,-0.054403,0.997504,0.045592,0.043443,-0.004819,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ -0.041501,-0.057121,0.997504,0.046394,0.042821,-0.004819,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ -0.037832,-0.059614,0.997504,0.047233,0.042251,-0.004819,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ -0.034015,-0.061872,0.997504,0.048106,0.041735,-0.004819,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ -0.030062,-0.063886,0.997504,0.04901,0.041274,-0.004819,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ -0.025992,-0.065648,0.997504,0.049941,0.040871,-0.004819,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ -0.021818,-0.06715,0.997504,0.050895,0.040528,-0.004819,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ -0.017559,-0.068388,0.997504,0.051869,0.040245,-0.004819,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ -0.01323,-0.069355,0.997504,0.052859,0.040023,-0.004819,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ -0.008849,-0.070049,0.997504,0.053861,0.039865,-0.004819,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ 0,-0.007402,0.999973,0.055885,0.039891,-0.004818,
+ -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818,
+ -0.004433,-0.070467,0.997504,0.054871,0.039769,-0.004819,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ 0,-0.007402,0.999973,0.055885,0.039891,-0.004818,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0,-0.007402,0.999973,0.055885,0.039891,-0.004818,
+ 0,-0.070606,0.997504,0.055885,0.039737,-0.004819,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ 0.004433,-0.070467,0.997504,0.056899,0.039769,-0.004819,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ 0.008849,-0.070049,0.997504,0.057909,0.039865,-0.004819,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ 0.01323,-0.069355,0.997504,0.058911,0.040023,-0.004819,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ 0.017559,-0.068388,0.997504,0.059901,0.040245,-0.004819,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ 0.021818,-0.06715,0.997504,0.060875,0.040528,-0.004819,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ 0.025992,-0.065648,0.997504,0.06183,0.040871,-0.004819,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ 0.030062,-0.063886,0.997504,0.062761,0.041274,-0.004819,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ 0.034015,-0.061872,0.997504,0.063665,0.041735,-0.004819,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ 0.037832,-0.059614,0.997504,0.064538,0.042251,-0.004819,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ 0.041501,-0.057121,0.997504,0.065377,0.042821,-0.004819,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0.045006,-0.054403,0.997504,0.066178,0.043443,-0.004819,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0.048333,-0.051469,0.997504,0.066939,0.044114,-0.004819,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0.051469,-0.048333,0.997504,0.067657,0.044831,-0.004819,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0.054403,-0.045006,0.997504,0.068328,0.045592,-0.004819,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0.057121,-0.041501,0.997504,0.068949,0.046394,-0.004819,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0.059614,-0.037832,0.997504,0.06952,0.047233,-0.004819,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0.061872,-0.034015,0.997504,0.070036,0.048106,-0.004819,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0.063886,-0.030062,0.997504,0.070497,0.04901,-0.004819,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0.065648,-0.025992,0.997504,0.070899,0.049941,-0.004819,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0.06715,-0.021818,0.997504,0.071243,0.050895,-0.004819,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0.068388,-0.017559,0.997504,0.071526,0.051869,-0.004819,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0.069355,-0.01323,0.997504,0.071747,0.052859,-0.004819,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0.070049,-0.008849,0.997504,0.071906,0.053861,-0.004819,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0.070467,-0.004433,0.997504,0.072001,0.054871,-0.004819,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0.070606,0,0.997504,0.072033,0.055885,-0.004819,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0.070467,0.004433,0.997504,0.072001,0.056899,-0.004819,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0.070049,0.008849,0.997504,0.071906,0.057909,-0.004819,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0.069355,0.01323,0.997504,0.071747,0.058911,-0.004819,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0.068388,0.017559,0.997504,0.071526,0.059901,-0.004819,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818,
+ 0.06715,0.021818,0.997504,0.071243,0.060875,-0.004819,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0.065648,0.025992,0.997504,0.070899,0.06183,-0.004819,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0.063886,0.030062,0.997504,0.070497,0.062761,-0.004819,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818,
+ 0.061872,0.034015,0.997504,0.070036,0.063665,-0.004819,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0.059614,0.037832,0.997504,0.06952,0.064538,-0.004819,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0.057121,0.041501,0.997504,0.068949,0.065377,-0.004819,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0.054403,0.045006,0.997504,0.068328,0.066178,-0.004819,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0.051469,0.048333,0.997504,0.067657,0.066939,-0.004819,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ 0.048333,0.051469,0.997504,0.066939,0.067657,-0.004819,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ 0.045006,0.054403,0.997504,0.066178,0.068328,-0.004819,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ 0.041501,0.057121,0.997504,0.065377,0.068949,-0.004819,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ 0.037832,0.059614,0.997504,0.064538,0.06952,-0.004819,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818,
+ 0.034015,0.061872,0.997504,0.063665,0.070036,-0.004819,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ 0.030062,0.063886,0.997504,0.062761,0.070497,-0.004819,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ 0.025992,0.065648,0.997504,0.06183,0.070899,-0.004819,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ 0.021818,0.06715,0.997504,0.060875,0.071243,-0.004819,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818,
+ 0.017559,0.068388,0.997504,0.059901,0.071526,-0.004819,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ 0.01323,0.069355,0.997504,0.058911,0.071747,-0.004819,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ 0.008849,0.070049,0.997504,0.057909,0.071906,-0.004819,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ 0,0.007402,0.999973,0.055885,0.07188,-0.004818,
+ 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818,
+ 0.004433,0.070467,0.997504,0.056899,0.072001,-0.004819,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ 0,0.007402,0.999973,0.055885,0.07188,-0.004818,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ 0,0.007402,0.999973,0.055885,0.07188,-0.004818,
+ 0,0.070606,0.997504,0.055885,0.072033,-0.004819,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ -0.004433,0.070467,0.997504,0.054871,0.072001,-0.004819,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ -0.008849,0.070049,0.997504,0.053861,0.071906,-0.004819,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818,
+ -0.01323,0.069355,0.997504,0.052859,0.071747,-0.004819,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ -0.017559,0.068388,0.997504,0.051869,0.071526,-0.004819,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ -0.021818,0.06715,0.997504,0.050895,0.071243,-0.004819,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ -0.025992,0.065648,0.997504,0.049941,0.070899,-0.004819,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818,
+ -0.030062,0.063886,0.997504,0.04901,0.070497,-0.004819,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ -0.034015,0.061872,0.997504,0.048106,0.070036,-0.004819,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ -0.037832,0.059614,0.997504,0.047233,0.06952,-0.004819,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ -0.041501,0.057121,0.997504,0.046394,0.068949,-0.004819,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ -0.045006,0.054403,0.997504,0.045592,0.068328,-0.004819,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ -0.048333,0.051469,0.997504,0.044831,0.067657,-0.004819,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ -0.051469,0.048333,0.997504,0.044114,0.066939,-0.004819,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ -0.054403,0.045006,0.997504,0.043443,0.066178,-0.004819,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ -0.057121,0.041501,0.997504,0.042821,0.065377,-0.004819,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ -0.059614,0.037832,0.997504,0.042251,0.064538,-0.004819,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818,
+ -0.063886,0.030062,0.997504,0.041274,0.062761,-0.004819,
+ -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818,
+ -0.061872,0.034015,0.997504,0.041735,0.063665,-0.004819,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ 0,0,1,0.044613,0.063997,-0.004818,
+ -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ 0,0,1,0.043898,0.062655,-0.004818,
+ 0,0,1,0.044613,0.063997,-0.004818,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ 0,0,1,0.043898,0.062655,-0.004818,
+ -0.006698,0.003152,0.999973,0.041413,0.062696,-0.004818,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ 0,0,1,0.043489,0.061186,-0.004818,
+ 0,0,1,0.043898,0.062655,-0.004818,
+ -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818,
+ 0,0,1,0.043489,0.061186,-0.004818,
+ -0.006883,0.002725,0.999973,0.041014,0.061773,-0.004818,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ 0,0,1,0.043489,0.061186,-0.004818,
+ -0.00704,0.002287,0.999973,0.040673,0.060828,-0.004818,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ 0,0,1,0.043409,0.05966,-0.004818,
+ 0,0,1,0.043489,0.061186,-0.004818,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ 0,0,1,0.043409,0.05966,-0.004818,
+ -0.00717,0.001841,0.999973,0.040393,0.059863,-0.004818,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ 0,0,1,0.043472,0.058741,-0.004818,
+ 0,0,1,0.043409,0.05966,-0.004818,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ 0,0,1,0.043472,0.058741,-0.004818,
+ -0.007271,0.001387,0.999973,0.040174,0.058882,-0.004818,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ 0,0,1,0.04361,0.057831,-0.004818,
+ 0,0,1,0.043472,0.058741,-0.004818,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ 0,0,1,0.043821,0.056936,-0.004818,
+ 0,0,1,0.04361,0.057831,-0.004818,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ 0,0,1,0.043821,0.056936,-0.004818,
+ -0.007344,0.000928,0.999973,0.040017,0.05789,-0.004818,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ 0,0,1,0.044105,0.056061,-0.004818,
+ 0,0,1,0.043821,0.056936,-0.004818,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ 0,0,1,0.044105,0.056061,-0.004818,
+ -0.007388,0.000465,0.999973,0.039922,0.05689,-0.004818,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ 0,0,1,0.044458,0.055214,-0.004818,
+ 0,0,1,0.044105,0.056061,-0.004818,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ 0,0,1,0.044458,0.055214,-0.004818,
+ -0.007402,0,0.999973,0.039891,0.055885,-0.004818,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ 0,0,1,0.044879,0.054399,-0.004818,
+ 0,0,1,0.044458,0.055214,-0.004818,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ 0,0,1,0.044879,0.054399,-0.004818,
+ -0.007388,-0.000465,0.999973,0.039922,0.054881,-0.004818,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ 0,0,1,0.045365,0.053623,-0.004818,
+ 0,0,1,0.044879,0.054399,-0.004818,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ 0,0,1,0.045912,0.05289,-0.004818,
+ 0,0,1,0.045365,0.053623,-0.004818,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ 0,0,1,0.045912,0.05289,-0.004818,
+ -0.007344,-0.000928,0.999973,0.040017,0.053881,-0.004818,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ 0,0,1,0.046517,0.052206,-0.004818,
+ 0,0,1,0.045912,0.05289,-0.004818,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ 0,0,1,0.046517,0.052206,-0.004818,
+ -0.007271,-0.001387,0.999973,0.040174,0.052888,-0.004818,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ 0,0,1,0.047175,0.051576,-0.004818,
+ 0,0,1,0.046517,0.052206,-0.004818,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ 0,0,1,0.047882,0.051003,-0.004818,
+ 0,0,1,0.047175,0.051576,-0.004818,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ 0,0,1,0.047882,0.051003,-0.004818,
+ -0.00717,-0.001841,0.999973,0.040393,0.051908,-0.004818,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ 0,0,1,0.048634,0.050493,-0.004818,
+ 0,0,1,0.047882,0.051003,-0.004818,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ 0,0,1,0.049354,0.050026,-0.004818,
+ 0,0,1,0.048634,0.050493,-0.004818,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ 0,0,1,0.049354,0.050026,-0.004818,
+ -0.00704,-0.002287,0.999973,0.040673,0.050943,-0.004818,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ 0,0,1,0.050057,0.049532,-0.004818,
+ 0,0,1,0.049354,0.050026,-0.004818,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ 0,0,1,0.050057,0.049532,-0.004818,
+ -0.006883,-0.002725,0.999973,0.041014,0.049997,-0.004818,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ 0,0,1,0.050741,0.049011,-0.004818,
+ 0,0,1,0.050057,0.049532,-0.004818,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ 0,0,1,0.051404,0.048464,-0.004818,
+ 0,0,1,0.050741,0.049011,-0.004818,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ 0,0,1,0.051404,0.048464,-0.004818,
+ -0.006698,-0.003152,0.999973,0.041413,0.049075,-0.004818,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ 0,0,1,0.052047,0.047891,-0.004818,
+ 0,0,1,0.051404,0.048464,-0.004818,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ 0,0,1,0.052047,0.047891,-0.004818,
+ -0.006487,-0.003566,0.999973,0.041869,0.04818,-0.004818,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ 0,0,1,0.052668,0.047293,-0.004818,
+ 0,0,1,0.052047,0.047891,-0.004818,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ 0,0,1,0.053266,0.046673,-0.004818,
+ 0,0,1,0.052668,0.047293,-0.004818,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ 0,0,1,0.053266,0.046673,-0.004818,
+ -0.00625,-0.003966,0.999973,0.042381,0.047315,-0.004818,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ 0,0,1,0.05384,0.046029,-0.004818,
+ 0,0,1,0.053266,0.046673,-0.004818,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ 0,0,1,0.05384,0.046029,-0.004818,
+ -0.005989,-0.004351,0.999973,0.042945,0.046484,-0.004818,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ 0,0,1,0.05439,0.045363,-0.004818,
+ 0,0,1,0.05384,0.046029,-0.004818,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ 0,0,1,0.05439,0.045363,-0.004818,
+ -0.005704,-0.004718,0.999973,0.043561,0.04569,-0.004818,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ 0,0,1,0.054915,0.044676,-0.004818,
+ 0,0,1,0.05439,0.045363,-0.004818,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ 0,0,1,0.054915,0.044676,-0.004818,
+ -0.005396,-0.005067,0.999973,0.044226,0.044936,-0.004818,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ 0,0,1,0.055414,0.04397,-0.004818,
+ 0,0,1,0.054915,0.044676,-0.004818,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ 0,0,1,0.055414,0.04397,-0.004818,
+ -0.005067,-0.005396,0.999973,0.044936,0.044226,-0.004818,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ 0,0,1,0.055885,0.043244,-0.004818,
+ 0,0,1,0.055414,0.04397,-0.004818,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ 0,0,1,0.055885,0.043244,-0.004818,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ -0.004718,-0.005704,0.999973,0.04569,0.043561,-0.004818,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ -0.004351,-0.005989,0.999973,0.046484,0.042945,-0.004818,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ 0.003966,-0.00625,0.999973,0.064456,0.042381,-0.004818,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ -0.003966,-0.00625,0.999973,0.047315,0.042381,-0.004818,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ 0.003566,-0.006487,0.999973,0.063591,0.041869,-0.004818,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ -0.003566,-0.006487,0.999973,0.04818,0.041869,-0.004818,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ 0.003152,-0.006698,0.999973,0.062696,0.041413,-0.004818,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ -0.003152,-0.006698,0.999973,0.049075,0.041413,-0.004818,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ 0.002725,-0.006883,0.999973,0.061773,0.041014,-0.004818,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ -0.002725,-0.006883,0.999973,0.049997,0.041014,-0.004818,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ 0.002287,-0.00704,0.999973,0.060828,0.040673,-0.004818,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ -0.002287,-0.00704,0.999973,0.050943,0.040673,-0.004818,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ 0.001841,-0.00717,0.999973,0.059863,0.040393,-0.004818,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ -0.001841,-0.00717,0.999973,0.051908,0.040393,-0.004818,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ 0.001387,-0.007271,0.999973,0.058882,0.040174,-0.004818,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ -0.001387,-0.007271,0.999973,0.052888,0.040174,-0.004818,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ 0.000928,-0.007344,0.999973,0.05789,0.040017,-0.004818,
+ -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ -0.000928,-0.007344,0.999973,0.053881,0.040017,-0.004818,
+ 0.000465,-0.007388,0.999973,0.05689,0.039922,-0.004818,
+ -0.000465,-0.007388,0.999973,0.054881,0.039922,-0.004818,
+ 0,-0.007402,0.999973,0.055885,0.039891,-0.004818,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0,0,1,0.055885,0.043244,-0.004818,
+ 0.004351,-0.005989,0.999973,0.065287,0.042945,-0.004818,
+ 0,0,1,0.055885,0.043244,-0.004818,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0,0,1,0.056357,0.04397,-0.004818,
+ 0,0,1,0.056357,0.04397,-0.004818,
+ 0.004718,-0.005704,0.999973,0.066081,0.043561,-0.004818,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0,0,1,0.056357,0.04397,-0.004818,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0,0,1,0.056856,0.044676,-0.004818,
+ 0,0,1,0.056856,0.044676,-0.004818,
+ 0.005067,-0.005396,0.999973,0.066834,0.044226,-0.004818,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0,0,1,0.056856,0.044676,-0.004818,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0,0,1,0.05738,0.045363,-0.004818,
+ 0,0,1,0.05738,0.045363,-0.004818,
+ 0.005396,-0.005067,0.999973,0.067545,0.044936,-0.004818,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0,0,1,0.05738,0.045363,-0.004818,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0,0,1,0.05793,0.046029,-0.004818,
+ 0,0,1,0.05793,0.046029,-0.004818,
+ 0.005704,-0.004718,0.999973,0.06821,0.04569,-0.004818,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0,0,1,0.05793,0.046029,-0.004818,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0,0,1,0.058505,0.046673,-0.004818,
+ 0,0,1,0.058505,0.046673,-0.004818,
+ 0.005989,-0.004351,0.999973,0.068825,0.046484,-0.004818,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0,0,1,0.058505,0.046673,-0.004818,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0,0,1,0.059103,0.047293,-0.004818,
+ 0,0,1,0.059103,0.047293,-0.004818,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0,0,1,0.059724,0.047891,-0.004818,
+ 0,0,1,0.059724,0.047891,-0.004818,
+ 0.00625,-0.003966,0.999973,0.06939,0.047315,-0.004818,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0,0,1,0.059724,0.047891,-0.004818,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0,0,1,0.060366,0.048464,-0.004818,
+ 0,0,1,0.060366,0.048464,-0.004818,
+ 0.006487,-0.003566,0.999973,0.069902,0.04818,-0.004818,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0,0,1,0.060366,0.048464,-0.004818,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0,0,1,0.06103,0.049011,-0.004818,
+ 0,0,1,0.06103,0.049011,-0.004818,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0,0,1,0.061714,0.049532,-0.004818,
+ 0,0,1,0.061714,0.049532,-0.004818,
+ 0.006698,-0.003152,0.999973,0.070358,0.049075,-0.004818,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0,0,1,0.061714,0.049532,-0.004818,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0,0,1,0.062416,0.050026,-0.004818,
+ 0,0,1,0.062416,0.050026,-0.004818,
+ 0.006883,-0.002725,0.999973,0.070757,0.049997,-0.004818,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0,0,1,0.062416,0.050026,-0.004818,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0,0,1,0.063137,0.050493,-0.004818,
+ 0,0,1,0.063137,0.050493,-0.004818,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0,0,1,0.063888,0.051003,-0.004818,
+ 0,0,1,0.063888,0.051003,-0.004818,
+ 0.00704,-0.002287,0.999973,0.071097,0.050943,-0.004818,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0,0,1,0.063888,0.051003,-0.004818,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0,0,1,0.064596,0.051576,-0.004818,
+ 0,0,1,0.064596,0.051576,-0.004818,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0,0,1,0.065254,0.052206,-0.004818,
+ 0,0,1,0.065254,0.052206,-0.004818,
+ 0.00717,-0.001841,0.999973,0.071377,0.051908,-0.004818,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0,0,1,0.065254,0.052206,-0.004818,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0,0,1,0.065859,0.05289,-0.004818,
+ 0,0,1,0.065859,0.05289,-0.004818,
+ 0.007271,-0.001387,0.999973,0.071597,0.052888,-0.004818,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0,0,1,0.065859,0.05289,-0.004818,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0,0,1,0.066406,0.053623,-0.004818,
+ 0,0,1,0.066406,0.053623,-0.004818,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0,0,1,0.066892,0.054399,-0.004818,
+ 0,0,1,0.066892,0.054399,-0.004818,
+ 0.007344,-0.000928,0.999973,0.071754,0.053881,-0.004818,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0,0,1,0.066892,0.054399,-0.004818,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0,0,1,0.067313,0.055214,-0.004818,
+ 0,0,1,0.067313,0.055214,-0.004818,
+ 0.007388,-0.000465,0.999973,0.071848,0.054881,-0.004818,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0,0,1,0.067313,0.055214,-0.004818,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0,0,1,0.067666,0.056061,-0.004818,
+ 0,0,1,0.067666,0.056061,-0.004818,
+ 0.007402,0,0.999973,0.07188,0.055885,-0.004818,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0,0,1,0.067666,0.056061,-0.004818,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0,0,1,0.067949,0.056936,-0.004818,
+ 0,0,1,0.067949,0.056936,-0.004818,
+ 0.007388,0.000465,0.999973,0.071848,0.05689,-0.004818,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0,0,1,0.067949,0.056936,-0.004818,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0,0,1,0.068161,0.057831,-0.004818,
+ 0,0,1,0.068161,0.057831,-0.004818,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0,0,1,0.068298,0.058741,-0.004818,
+ 0,0,1,0.068298,0.058741,-0.004818,
+ 0.007344,0.000928,0.999973,0.071754,0.05789,-0.004818,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0,0,1,0.068298,0.058741,-0.004818,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0,0,1,0.068362,0.05966,-0.004818,
+ 0,0,1,0.068362,0.05966,-0.004818,
+ 0.007271,0.001387,0.999973,0.071597,0.058882,-0.004818,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0,0,1,0.068362,0.05966,-0.004818,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0,0,1,0.068281,0.061186,-0.004818,
+ 0,0,1,0.068281,0.061186,-0.004818,
+ 0.00717,0.001841,0.999973,0.071377,0.059863,-0.004818,
+ 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818,
+ 0,0,1,0.068281,0.061186,-0.004818,
+ 0.00704,0.002287,0.999973,0.071097,0.060828,-0.004818,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0,0,1,0.068281,0.061186,-0.004818,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0,0,1,0.067873,0.062655,-0.004818,
+ 0,0,1,0.067873,0.062655,-0.004818,
+ 0.006883,0.002725,0.999973,0.070757,0.061773,-0.004818,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0,0,1,0.067873,0.062655,-0.004818,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0,0,1,0.067158,0.063997,-0.004818,
+ 0,0,1,0.067158,0.063997,-0.004818,
+ 0.006698,0.003152,0.999973,0.070358,0.062696,-0.004818,
+ 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818,
+ 0,0,1,0.067158,0.063997,-0.004818,
+ 0.006487,0.003566,0.999973,0.069902,0.063591,-0.004818,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0,0,1,0.067158,0.063997,-0.004818,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0,0,1,0.06617,0.065145,-0.004818,
+ 0,0,1,0.06617,0.065145,-0.004818,
+ 0.00625,0.003966,0.999973,0.06939,0.064456,-0.004818,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0,0,1,0.06617,0.065145,-0.004818,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0,0,1,0.064959,0.066043,-0.004818,
+ 0,0,1,0.064959,0.066043,-0.004818,
+ 0.005989,0.004351,0.999973,0.068825,0.065287,-0.004818,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0,0,1,0.064959,0.066043,-0.004818,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0,0,1,0.063583,0.066646,-0.004818,
+ 0,0,1,0.063583,0.066646,-0.004818,
+ 0.005704,0.004718,0.999973,0.06821,0.066081,-0.004818,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0,0,1,0.063583,0.066646,-0.004818,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0,0,1,0.06211,0.066926,-0.004818,
+ 0,0,1,0.06211,0.066926,-0.004818,
+ 0.005396,0.005067,0.999973,0.067545,0.066834,-0.004818,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ 0,0,1,0.06211,0.066926,-0.004818,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ 0.005067,0.005396,0.999973,0.066834,0.067545,-0.004818,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ -0.004718,0.005704,0.999973,0.04569,0.06821,-0.004818,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ 0.004718,0.005704,0.999973,0.066081,0.06821,-0.004818,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ -0.004351,0.005989,0.999973,0.046484,0.068825,-0.004818,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ 0.004351,0.005989,0.999973,0.065287,0.068825,-0.004818,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ -0.003966,0.00625,0.999973,0.047315,0.06939,-0.004818,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ 0.003966,0.00625,0.999973,0.064456,0.06939,-0.004818,
+ 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ 0.003566,0.006487,0.999973,0.063591,0.069902,-0.004818,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ -0.003566,0.006487,0.999973,0.04818,0.069902,-0.004818,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818,
+ -0.003152,0.006698,0.999973,0.049075,0.070358,-0.004818,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ 0.003152,0.006698,0.999973,0.062696,0.070358,-0.004818,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ -0.002725,0.006883,0.999973,0.049997,0.070757,-0.004818,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ 0.002725,0.006883,0.999973,0.061773,0.070757,-0.004818,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ -0.002287,0.00704,0.999973,0.050943,0.071097,-0.004818,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ 0.002287,0.00704,0.999973,0.060828,0.071097,-0.004818,
+ 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ 0.001841,0.00717,0.999973,0.059863,0.071377,-0.004818,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ -0.001841,0.00717,0.999973,0.051908,0.071377,-0.004818,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818,
+ -0.001387,0.007271,0.999973,0.052888,0.071597,-0.004818,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ 0.001387,0.007271,0.999973,0.058882,0.071597,-0.004818,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ -0.000928,0.007344,0.999973,0.053881,0.071754,-0.004818,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ 0.000928,0.007344,0.999973,0.05789,0.071754,-0.004818,
+ 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818,
+ -0.000465,0.007388,0.999973,0.054881,0.071848,-0.004818,
+ 0.000465,0.007388,0.999973,0.05689,0.071848,-0.004818,
+ 0,0.007402,0.999973,0.055885,0.07188,-0.004818,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ 0,0,1,0.04966,0.066926,-0.004818,
+ 0,0,1,0.06211,0.066926,-0.004818,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ 0,0,1,0.04966,0.066926,-0.004818,
+ -0.005067,0.005396,0.999973,0.044936,0.067545,-0.004818,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ 0,0,1,0.048188,0.066646,-0.004818,
+ 0,0,1,0.04966,0.066926,-0.004818,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ 0,0,1,0.048188,0.066646,-0.004818,
+ -0.005396,0.005067,0.999973,0.044226,0.066834,-0.004818,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ 0,0,1,0.046812,0.066043,-0.004818,
+ 0,0,1,0.048188,0.066646,-0.004818,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ 0,0,1,0.046812,0.066043,-0.004818,
+ -0.005704,0.004718,0.999973,0.043561,0.066081,-0.004818,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ 0,0,1,0.0456,0.065145,-0.004818,
+ 0,0,1,0.046812,0.066043,-0.004818,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ 0,0,1,0.0456,0.065145,-0.004818,
+ -0.005989,0.004351,0.999973,0.042945,0.065287,-0.004818,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ 0,0,1,0.044613,0.063997,-0.004818,
+ 0,0,1,0.0456,0.065145,-0.004818,
+ -0.006487,0.003566,0.999973,0.041869,0.063591,-0.004818,
+ 0,0,1,0.044613,0.063997,-0.004818,
+ -0.00625,0.003966,0.999973,0.042381,0.064456,-0.004818,
+ 0,0,1,0.04966,0.066926,-0.004818,
+ 0,0,1,0.060613,0.066867,-0.004818,
+ 0,0,1,0.06211,0.066926,-0.004818,
+ 0,0,1,0.051157,0.066867,-0.004818,
+ 0,0,1,0.060613,0.066867,-0.004818,
+ 0,0,1,0.04966,0.066926,-0.004818,
+ 0,0,1,0.051157,0.066867,-0.004818,
+ 0,0,1,0.059165,0.066474,-0.004818,
+ 0,0,1,0.060613,0.066867,-0.004818,
+ 0,0,1,0.052605,0.066474,-0.004818,
+ 0,0,1,0.059165,0.066474,-0.004818,
+ 0,0,1,0.051157,0.066867,-0.004818,
+ 0,0,1,0.052605,0.066474,-0.004818,
+ 0,0,1,0.057837,0.065766,-0.004818,
+ 0,0,1,0.059165,0.066474,-0.004818,
+ 0,0,1,0.053934,0.065766,-0.004818,
+ 0,0,1,0.057837,0.065766,-0.004818,
+ 0,0,1,0.052605,0.066474,-0.004818,
+ 0,0,1,0.053934,0.065766,-0.004818,
+ 0,0,1,0.056739,0.064761,-0.004818,
+ 0,0,1,0.057837,0.065766,-0.004818,
+ 0,0,1,0.055031,0.064761,-0.004818,
+ 0,0,1,0.056739,0.064761,-0.004818,
+ 0,0,1,0.053934,0.065766,-0.004818,
+ 0,0,1,0.056739,0.064761,-0.004818,
+ 0,0,1,0.055031,0.064761,-0.004818,
+ 0,0,1,0.055885,0.063727,-0.004818,
+ -0.929776,-0.368125,0,0.03976,0.049501,-0.007708,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.929776,-0.368125,0,0.03976,0.049501,-0.007708,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.951057,-0.309017,0,0.03939,0.050526,-0.007708,
+ -0.904827,-0.425779,0,0.040192,0.048501,-0.007708,
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.904827,-0.425779,0,0.040192,0.048501,-0.007708,
+ -0.929762,-0.368119,0.005552,0.03976,0.049501,-0.006167,
+ -0.929776,-0.368125,0,0.03976,0.049501,-0.007708,
+ -0.876307,-0.481754,0,0.040687,0.04753,-0.007708,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.876307,-0.481754,0,0.040687,0.04753,-0.007708,
+ -0.904813,-0.425773,0.005552,0.040192,0.048501,-0.006167,
+ -0.904827,-0.425779,0,0.040192,0.048501,-0.007708,
+ -0.844328,-0.535827,0,0.041241,0.046592,-0.007708,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.844328,-0.535827,0,0.041241,0.046592,-0.007708,
+ -0.876293,-0.481746,0.005552,0.040687,0.04753,-0.006167,
+ -0.876307,-0.481754,0,0.040687,0.04753,-0.007708,
+ -0.844328,-0.535827,0,0.041241,0.046592,-0.007708,
+ -0.876307,-0.481754,0,0.040687,0.04753,-0.007708,
+ -0.860742,-0.509041,0,0.040845,0.047263,-0.007708,
+ -0.844328,-0.535827,0,0.041241,0.046592,-0.007708,
+ -0.860742,-0.509041,0,0.040845,0.047263,-0.007708,
+ -0.860742,-0.509041,0,0.040904,0.047163,-0.007708,
+ -0.809017,-0.587785,0,0.041854,0.045691,-0.007708,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.809017,-0.587785,0,0.041854,0.045691,-0.007708,
+ -0.844315,-0.535819,0.005552,0.041241,0.046592,-0.006167,
+ -0.844328,-0.535827,0,0.041241,0.046592,-0.007708,
+ -0.770513,-0.637424,0,0.042522,0.04483,-0.007708,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.770513,-0.637424,0,0.042522,0.04483,-0.007708,
+ -0.809005,-0.587776,0.005552,0.041854,0.045691,-0.006167,
+ -0.809017,-0.587785,0,0.041854,0.045691,-0.007708,
+ -0.728969,-0.684547,0,0.043242,0.044013,-0.007708,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.728969,-0.684547,0,0.043242,0.044013,-0.007708,
+ -0.770501,-0.637414,0.005552,0.042522,0.04483,-0.006167,
+ -0.770513,-0.637424,0,0.042522,0.04483,-0.007708,
+ -0.684547,-0.728969,0,0.044013,0.043242,-0.007708,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.684547,-0.728969,0,0.044013,0.043242,-0.007708,
+ -0.728957,-0.684537,0.005552,0.043242,0.044013,-0.006167,
+ -0.728969,-0.684547,0,0.043242,0.044013,-0.007708,
+ -0.684547,-0.728969,0,0.044013,0.043242,-0.007708,
+ -0.728969,-0.684547,0,0.043242,0.044013,-0.007708,
+ -0.707107,-0.707107,0,0.043581,0.043673,-0.007708,
+ -0.684547,-0.728969,0,0.044013,0.043242,-0.007708,
+ -0.707107,-0.707107,0,0.043581,0.043673,-0.007708,
+ -0.707107,-0.707107,0,0.043673,0.043581,-0.007708,
+ -0.637424,-0.770513,0,0.04483,0.042522,-0.007708,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.637424,-0.770513,0,0.04483,0.042522,-0.007708,
+ -0.684537,-0.728957,0.005552,0.044013,0.043242,-0.006167,
+ -0.684547,-0.728969,0,0.044013,0.043242,-0.007708,
+ -0.587785,-0.809017,0,0.045691,0.041854,-0.007708,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.587785,-0.809017,0,0.045691,0.041854,-0.007708,
+ -0.637414,-0.770501,0.005552,0.04483,0.042522,-0.006167,
+ -0.637424,-0.770513,0,0.04483,0.042522,-0.007708,
+ -0.535827,-0.844328,0,0.046592,0.041241,-0.007708,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.535827,-0.844328,0,0.046592,0.041241,-0.007708,
+ -0.587776,-0.809005,0.005552,0.045691,0.041854,-0.006167,
+ -0.587785,-0.809017,0,0.045691,0.041854,-0.007708,
+ -0.481754,-0.876307,0,0.04753,0.040687,-0.007708,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.481754,-0.876307,0,0.04753,0.040687,-0.007708,
+ -0.535819,-0.844315,0.005552,0.046592,0.041241,-0.006167,
+ -0.535827,-0.844328,0,0.046592,0.041241,-0.007708,
+ -0.481754,-0.876307,0,0.04753,0.040687,-0.007708,
+ -0.535827,-0.844328,0,0.046592,0.041241,-0.007708,
+ -0.509041,-0.860742,0,0.047163,0.040904,-0.007708,
+ -0.481754,-0.876307,0,0.04753,0.040687,-0.007708,
+ -0.509041,-0.860742,0,0.047163,0.040904,-0.007708,
+ -0.509041,-0.860742,0,0.047263,0.040845,-0.007708,
+ -0.425779,-0.904827,0,0.048501,0.040192,-0.007708,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.425779,-0.904827,0,0.048501,0.040192,-0.007708,
+ -0.481746,-0.876293,0.005552,0.04753,0.040687,-0.006167,
+ -0.481754,-0.876307,0,0.04753,0.040687,-0.007708,
+ -0.368125,-0.929776,0,0.049501,0.03976,-0.007708,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.368125,-0.929776,0,0.049501,0.03976,-0.007708,
+ -0.425773,-0.904813,0.005552,0.048501,0.040192,-0.006167,
+ -0.425779,-0.904827,0,0.048501,0.040192,-0.007708,
+ -0.309017,-0.951057,0,0.050526,0.03939,-0.007708,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.309017,-0.951057,0,0.050526,0.03939,-0.007708,
+ -0.368119,-0.929762,0.005552,0.049501,0.03976,-0.006167,
+ -0.368125,-0.929776,0,0.049501,0.03976,-0.007708,
+ -0.24869,-0.968583,0,0.051572,0.039087,-0.007708,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.24869,-0.968583,0,0.051572,0.039087,-0.007708,
+ -0.309012,-0.951042,0.005552,0.050526,0.03939,-0.006167,
+ -0.309017,-0.951057,0,0.050526,0.03939,-0.007708,
+ -0.24869,-0.968583,0,0.051572,0.039087,-0.007708,
+ -0.309017,-0.951057,0,0.050526,0.03939,-0.007708,
+ -0.278991,-0.960294,0,0.051356,0.039149,-0.007708,
+ -0.24869,-0.968583,0,0.051572,0.039087,-0.007708,
+ -0.278991,-0.960294,0,0.051356,0.039149,-0.007708,
+ -0.278991,-0.960294,0,0.051428,0.039128,-0.007708,
+ -0.187381,-0.982287,0,0.052635,0.038849,-0.007708,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.187381,-0.982287,0,0.052635,0.038849,-0.007708,
+ -0.248686,-0.968568,0.005552,0.051572,0.039087,-0.006167,
+ -0.24869,-0.968583,0,0.051572,0.039087,-0.007708,
+ -0.125333,-0.992115,0,0.053712,0.038678,-0.007708,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.125333,-0.992115,0,0.053712,0.038678,-0.007708,
+ -0.187378,-0.982272,0.005552,0.052635,0.038849,-0.006167,
+ -0.187381,-0.982287,0,0.052635,0.038849,-0.007708,
+ -0.094108,-0.995562,0,0.054796,0.038576,-0.007708,
+ -0.07324,-0.997287,0.007402,0.054796,0.038576,-0.006167,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ -0.094108,-0.995562,0,0.054796,0.038576,-0.007708,
+ -0.125331,-0.992099,0.005552,0.053712,0.038678,-0.006167,
+ -0.125333,-0.992115,0,0.053712,0.038678,-0.007708,
+ -0.951057,-0.309017,0,0.03939,0.050526,-0.007708,
+ -0.951042,-0.309012,0.005552,0.03939,0.050526,-0.006167,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.951057,-0.309017,0,0.03939,0.050526,-0.007708,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.968583,-0.24869,0,0.039087,0.051572,-0.007708,
+ -0.951057,-0.309017,0,0.03939,0.050526,-0.007708,
+ -0.968583,-0.24869,0,0.039087,0.051572,-0.007708,
+ -0.960294,-0.278991,0,0.039128,0.051428,-0.007708,
+ -0.951057,-0.309017,0,0.03939,0.050526,-0.007708,
+ -0.960294,-0.278991,0,0.039128,0.051428,-0.007708,
+ -0.960294,-0.278991,0,0.039149,0.051356,-0.007708,
+ -0.968583,-0.24869,0,0.039087,0.051572,-0.007708,
+ -0.968568,-0.248686,0.005552,0.039087,0.051572,-0.006167,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.968583,-0.24869,0,0.039087,0.051572,-0.007708,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.982287,-0.187381,0,0.038849,0.052635,-0.007708,
+ -0.982287,-0.187381,0,0.038849,0.052635,-0.007708,
+ -0.982272,-0.187378,0.005552,0.038849,0.052635,-0.006167,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.982287,-0.187381,0,0.038849,0.052635,-0.007708,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.992115,-0.125333,0,0.038678,0.053712,-0.007708,
+ -0.992115,-0.125333,0,0.038678,0.053712,-0.007708,
+ -0.992099,-0.125331,0.005552,0.038678,0.053712,-0.006167,
+ -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167,
+ -0.992115,-0.125333,0,0.038678,0.053712,-0.007708,
+ -0.997287,-0.07324,0.007402,0.038576,0.054796,-0.006167,
+ -0.995562,-0.094108,0,0.038576,0.054796,-0.007708,
+ -0.995562,0.094108,0,0.038576,0.056974,-0.007708,
+ -0.997287,0.07324,0.007402,0.038576,0.056974,-0.006167,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.995562,0.094108,0,0.038576,0.056974,-0.007708,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.992115,0.125333,0,0.038678,0.058059,-0.007708,
+ -0.992115,0.125333,0,0.038678,0.058059,-0.007708,
+ -0.992099,0.125331,0.005552,0.038678,0.058059,-0.006167,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.992115,0.125333,0,0.038678,0.058059,-0.007708,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.982287,0.187381,0,0.038849,0.059135,-0.007708,
+ -0.982287,0.187381,0,0.038849,0.059135,-0.007708,
+ -0.982272,0.187378,0.005552,0.038849,0.059135,-0.006167,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.982287,0.187381,0,0.038849,0.059135,-0.007708,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.968583,0.24869,0,0.039087,0.060198,-0.007708,
+ -0.968583,0.24869,0,0.039087,0.060198,-0.007708,
+ -0.968568,0.248686,0.005552,0.039087,0.060198,-0.006167,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.968583,0.24869,0,0.039087,0.060198,-0.007708,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.951057,0.309017,0,0.03939,0.061245,-0.007708,
+ -0.968583,0.24869,0,0.039087,0.060198,-0.007708,
+ -0.951057,0.309017,0,0.03939,0.061245,-0.007708,
+ -0.960294,0.278991,0,0.039149,0.060414,-0.007708,
+ -0.968583,0.24869,0,0.039087,0.060198,-0.007708,
+ -0.960294,0.278991,0,0.039149,0.060414,-0.007708,
+ -0.960294,0.278991,0,0.039128,0.060343,-0.007708,
+ -0.951057,0.309017,0,0.03939,0.061245,-0.007708,
+ -0.951042,0.309012,0.005552,0.03939,0.061245,-0.006167,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.951057,0.309017,0,0.03939,0.061245,-0.007708,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.929776,0.368125,0,0.03976,0.06227,-0.007708,
+ -0.929776,0.368125,0,0.03976,0.06227,-0.007708,
+ -0.929762,0.368119,0.005552,0.03976,0.06227,-0.006167,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.929776,0.368125,0,0.03976,0.06227,-0.007708,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.904827,0.425779,0,0.040192,0.06327,-0.007708,
+ -0.904827,0.425779,0,0.040192,0.06327,-0.007708,
+ -0.904813,0.425773,0.005552,0.040192,0.06327,-0.006167,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.904827,0.425779,0,0.040192,0.06327,-0.007708,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.876307,0.481754,0,0.040687,0.064241,-0.007708,
+ -0.876307,0.481754,0,0.040687,0.064241,-0.007708,
+ -0.876293,0.481746,0.005552,0.040687,0.064241,-0.006167,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.876307,0.481754,0,0.040687,0.064241,-0.007708,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.844328,0.535827,0,0.041241,0.065178,-0.007708,
+ -0.876307,0.481754,0,0.040687,0.064241,-0.007708,
+ -0.844328,0.535827,0,0.041241,0.065178,-0.007708,
+ -0.860742,0.509041,0,0.040904,0.064607,-0.007708,
+ -0.876307,0.481754,0,0.040687,0.064241,-0.007708,
+ -0.860742,0.509041,0,0.040904,0.064607,-0.007708,
+ -0.860742,0.509041,0,0.040845,0.064507,-0.007708,
+ -0.844328,0.535827,0,0.041241,0.065178,-0.007708,
+ -0.844315,0.535819,0.005552,0.041241,0.065178,-0.006167,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.844328,0.535827,0,0.041241,0.065178,-0.007708,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.809017,0.587785,0,0.041854,0.06608,-0.007708,
+ -0.809017,0.587785,0,0.041854,0.06608,-0.007708,
+ -0.809005,0.587776,0.005552,0.041854,0.06608,-0.006167,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.809017,0.587785,0,0.041854,0.06608,-0.007708,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.770513,0.637424,0,0.042522,0.066941,-0.007708,
+ -0.770513,0.637424,0,0.042522,0.066941,-0.007708,
+ -0.770501,0.637414,0.005552,0.042522,0.066941,-0.006167,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.770513,0.637424,0,0.042522,0.066941,-0.007708,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.728969,0.684547,0,0.043242,0.067758,-0.007708,
+ -0.728969,0.684547,0,0.043242,0.067758,-0.007708,
+ -0.728957,0.684537,0.005552,0.043242,0.067758,-0.006167,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.728969,0.684547,0,0.043242,0.067758,-0.007708,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.684547,0.728969,0,0.044013,0.068528,-0.007708,
+ -0.728969,0.684547,0,0.043242,0.067758,-0.007708,
+ -0.684547,0.728969,0,0.044013,0.068528,-0.007708,
+ -0.707107,0.707107,0,0.043673,0.068189,-0.007708,
+ -0.728969,0.684547,0,0.043242,0.067758,-0.007708,
+ -0.707107,0.707107,0,0.043673,0.068189,-0.007708,
+ -0.707107,0.707107,0,0.043581,0.068097,-0.007708,
+ -0.684547,0.728969,0,0.044013,0.068528,-0.007708,
+ -0.684537,0.728957,0.005552,0.044013,0.068528,-0.006167,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.684547,0.728969,0,0.044013,0.068528,-0.007708,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.637424,0.770513,0,0.04483,0.069249,-0.007708,
+ -0.637424,0.770513,0,0.04483,0.069249,-0.007708,
+ -0.637414,0.770501,0.005552,0.04483,0.069249,-0.006167,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.637424,0.770513,0,0.04483,0.069249,-0.007708,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.587785,0.809017,0,0.045691,0.069917,-0.007708,
+ -0.587785,0.809017,0,0.045691,0.069917,-0.007708,
+ -0.587776,0.809005,0.005552,0.045691,0.069917,-0.006167,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.587785,0.809017,0,0.045691,0.069917,-0.007708,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.535827,0.844328,0,0.046592,0.070529,-0.007708,
+ -0.535827,0.844328,0,0.046592,0.070529,-0.007708,
+ -0.535819,0.844315,0.005552,0.046592,0.070529,-0.006167,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.535827,0.844328,0,0.046592,0.070529,-0.007708,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.481754,0.876307,0,0.04753,0.071084,-0.007708,
+ -0.535827,0.844328,0,0.046592,0.070529,-0.007708,
+ -0.481754,0.876307,0,0.04753,0.071084,-0.007708,
+ -0.509041,0.860742,0,0.047263,0.070926,-0.007708,
+ -0.535827,0.844328,0,0.046592,0.070529,-0.007708,
+ -0.509041,0.860742,0,0.047263,0.070926,-0.007708,
+ -0.509041,0.860742,0,0.047163,0.070867,-0.007708,
+ -0.481754,0.876307,0,0.04753,0.071084,-0.007708,
+ -0.481746,0.876293,0.005552,0.04753,0.071084,-0.006167,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.481754,0.876307,0,0.04753,0.071084,-0.007708,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.425779,0.904827,0,0.048501,0.071578,-0.007708,
+ -0.425779,0.904827,0,0.048501,0.071578,-0.007708,
+ -0.425773,0.904813,0.005552,0.048501,0.071578,-0.006167,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.425779,0.904827,0,0.048501,0.071578,-0.007708,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.368125,0.929776,0,0.049501,0.072011,-0.007708,
+ -0.368125,0.929776,0,0.049501,0.072011,-0.007708,
+ -0.368119,0.929762,0.005552,0.049501,0.072011,-0.006167,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.368125,0.929776,0,0.049501,0.072011,-0.007708,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.309017,0.951057,0,0.050526,0.07238,-0.007708,
+ -0.309017,0.951057,0,0.050526,0.07238,-0.007708,
+ -0.309012,0.951042,0.005552,0.050526,0.07238,-0.006167,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.309017,0.951057,0,0.050526,0.07238,-0.007708,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.24869,0.968583,0,0.051572,0.072684,-0.007708,
+ -0.309017,0.951057,0,0.050526,0.07238,-0.007708,
+ -0.24869,0.968583,0,0.051572,0.072684,-0.007708,
+ -0.278991,0.960294,0,0.051428,0.072642,-0.007708,
+ -0.309017,0.951057,0,0.050526,0.07238,-0.007708,
+ -0.278991,0.960294,0,0.051428,0.072642,-0.007708,
+ -0.278991,0.960294,0,0.051356,0.072621,-0.007708,
+ -0.24869,0.968583,0,0.051572,0.072684,-0.007708,
+ -0.248686,0.968568,0.005552,0.051572,0.072684,-0.006167,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.24869,0.968583,0,0.051572,0.072684,-0.007708,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.187381,0.982287,0,0.052635,0.072922,-0.007708,
+ -0.187381,0.982287,0,0.052635,0.072922,-0.007708,
+ -0.187378,0.982272,0.005552,0.052635,0.072922,-0.006167,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.187381,0.982287,0,0.052635,0.072922,-0.007708,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.125333,0.992115,0,0.053712,0.073092,-0.007708,
+ -0.125333,0.992115,0,0.053712,0.073092,-0.007708,
+ -0.125331,0.992099,0.005552,0.053712,0.073092,-0.006167,
+ -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167,
+ -0.125333,0.992115,0,0.053712,0.073092,-0.007708,
+ -0.07324,0.997287,0.007402,0.054796,0.073195,-0.006167,
+ -0.094108,0.995562,0,0.054796,0.073195,-0.007708,
+ 0.094108,0.995562,0,0.056974,0.073195,-0.007708,
+ 0.07324,0.997287,0.007402,0.056974,0.073195,-0.006167,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0.094108,0.995562,0,0.056974,0.073195,-0.007708,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0.125333,0.992115,0,0.058059,0.073092,-0.007708,
+ 0.125333,0.992115,0,0.058059,0.073092,-0.007708,
+ 0.125331,0.992099,0.005552,0.058059,0.073092,-0.006167,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.125333,0.992115,0,0.058059,0.073092,-0.007708,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.187381,0.982287,0,0.059135,0.072922,-0.007708,
+ 0.187381,0.982287,0,0.059135,0.072922,-0.007708,
+ 0.187378,0.982272,0.005552,0.059135,0.072922,-0.006167,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.187381,0.982287,0,0.059135,0.072922,-0.007708,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.24869,0.968583,0,0.060198,0.072684,-0.007708,
+ 0.24869,0.968583,0,0.060198,0.072684,-0.007708,
+ 0.248686,0.968568,0.005552,0.060198,0.072684,-0.006167,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.24869,0.968583,0,0.060198,0.072684,-0.007708,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.309017,0.951057,0,0.061245,0.07238,-0.007708,
+ 0.24869,0.968583,0,0.060198,0.072684,-0.007708,
+ 0.309017,0.951057,0,0.061245,0.07238,-0.007708,
+ 0.278991,0.960294,0,0.060414,0.072621,-0.007708,
+ 0.24869,0.968583,0,0.060198,0.072684,-0.007708,
+ 0.278991,0.960294,0,0.060414,0.072621,-0.007708,
+ 0.278991,0.960294,0,0.060343,0.072642,-0.007708,
+ 0.309017,0.951057,0,0.061245,0.07238,-0.007708,
+ 0.309012,0.951042,0.005552,0.061245,0.07238,-0.006167,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.309017,0.951057,0,0.061245,0.07238,-0.007708,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.368125,0.929776,0,0.06227,0.072011,-0.007708,
+ 0.368125,0.929776,0,0.06227,0.072011,-0.007708,
+ 0.368119,0.929762,0.005552,0.06227,0.072011,-0.006167,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.368125,0.929776,0,0.06227,0.072011,-0.007708,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.425779,0.904827,0,0.06327,0.071578,-0.007708,
+ 0.425779,0.904827,0,0.06327,0.071578,-0.007708,
+ 0.425773,0.904813,0.005552,0.06327,0.071578,-0.006167,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.425779,0.904827,0,0.06327,0.071578,-0.007708,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.481754,0.876307,0,0.064241,0.071084,-0.007708,
+ 0.481754,0.876307,0,0.064241,0.071084,-0.007708,
+ 0.481746,0.876293,0.005552,0.064241,0.071084,-0.006167,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.481754,0.876307,0,0.064241,0.071084,-0.007708,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.535827,0.844328,0,0.065178,0.070529,-0.007708,
+ 0.481754,0.876307,0,0.064241,0.071084,-0.007708,
+ 0.535827,0.844328,0,0.065178,0.070529,-0.007708,
+ 0.509041,0.860742,0,0.064607,0.070867,-0.007708,
+ 0.481754,0.876307,0,0.064241,0.071084,-0.007708,
+ 0.509041,0.860742,0,0.064607,0.070867,-0.007708,
+ 0.509041,0.860742,0,0.064507,0.070926,-0.007708,
+ 0.535827,0.844328,0,0.065178,0.070529,-0.007708,
+ 0.535819,0.844315,0.005552,0.065178,0.070529,-0.006167,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.535827,0.844328,0,0.065178,0.070529,-0.007708,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.587785,0.809017,0,0.06608,0.069917,-0.007708,
+ 0.587785,0.809017,0,0.06608,0.069917,-0.007708,
+ 0.587776,0.809005,0.005552,0.06608,0.069917,-0.006167,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.587785,0.809017,0,0.06608,0.069917,-0.007708,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.637424,0.770513,0,0.066941,0.069249,-0.007708,
+ 0.637424,0.770513,0,0.066941,0.069249,-0.007708,
+ 0.637414,0.770501,0.005552,0.066941,0.069249,-0.006167,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.637424,0.770513,0,0.066941,0.069249,-0.007708,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.684547,0.728969,0,0.067758,0.068528,-0.007708,
+ 0.684547,0.728969,0,0.067758,0.068528,-0.007708,
+ 0.684537,0.728957,0.005552,0.067758,0.068528,-0.006167,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.684547,0.728969,0,0.067758,0.068528,-0.007708,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.728969,0.684547,0,0.068528,0.067758,-0.007708,
+ 0.684547,0.728969,0,0.067758,0.068528,-0.007708,
+ 0.728969,0.684547,0,0.068528,0.067758,-0.007708,
+ 0.707107,0.707107,0,0.068189,0.068097,-0.007708,
+ 0.684547,0.728969,0,0.067758,0.068528,-0.007708,
+ 0.707107,0.707107,0,0.068189,0.068097,-0.007708,
+ 0.707107,0.707107,0,0.068097,0.068189,-0.007708,
+ 0.728969,0.684547,0,0.068528,0.067758,-0.007708,
+ 0.728957,0.684537,0.005552,0.068528,0.067758,-0.006167,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.728969,0.684547,0,0.068528,0.067758,-0.007708,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.770513,0.637424,0,0.069249,0.066941,-0.007708,
+ 0.770513,0.637424,0,0.069249,0.066941,-0.007708,
+ 0.770501,0.637414,0.005552,0.069249,0.066941,-0.006167,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.770513,0.637424,0,0.069249,0.066941,-0.007708,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.809017,0.587785,0,0.069917,0.06608,-0.007708,
+ 0.809017,0.587785,0,0.069917,0.06608,-0.007708,
+ 0.809005,0.587776,0.005552,0.069917,0.06608,-0.006167,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.809017,0.587785,0,0.069917,0.06608,-0.007708,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.844328,0.535827,0,0.070529,0.065178,-0.007708,
+ 0.844328,0.535827,0,0.070529,0.065178,-0.007708,
+ 0.844315,0.535819,0.005552,0.070529,0.065178,-0.006167,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.844328,0.535827,0,0.070529,0.065178,-0.007708,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.876307,0.481754,0,0.071084,0.064241,-0.007708,
+ 0.844328,0.535827,0,0.070529,0.065178,-0.007708,
+ 0.876307,0.481754,0,0.071084,0.064241,-0.007708,
+ 0.860742,0.509041,0,0.070926,0.064507,-0.007708,
+ 0.844328,0.535827,0,0.070529,0.065178,-0.007708,
+ 0.860742,0.509041,0,0.070926,0.064507,-0.007708,
+ 0.860742,0.509041,0,0.070867,0.064607,-0.007708,
+ 0.876307,0.481754,0,0.071084,0.064241,-0.007708,
+ 0.876293,0.481746,0.005552,0.071084,0.064241,-0.006167,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.876307,0.481754,0,0.071084,0.064241,-0.007708,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.904827,0.425779,0,0.071578,0.06327,-0.007708,
+ 0.904827,0.425779,0,0.071578,0.06327,-0.007708,
+ 0.904813,0.425773,0.005552,0.071578,0.06327,-0.006167,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.904827,0.425779,0,0.071578,0.06327,-0.007708,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.929776,0.368125,0,0.072011,0.06227,-0.007708,
+ 0.929776,0.368125,0,0.072011,0.06227,-0.007708,
+ 0.929762,0.368119,0.005552,0.072011,0.06227,-0.006167,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.929776,0.368125,0,0.072011,0.06227,-0.007708,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.951057,0.309017,0,0.07238,0.061245,-0.007708,
+ 0.951057,0.309017,0,0.07238,0.061245,-0.007708,
+ 0.951042,0.309012,0.005552,0.07238,0.061245,-0.006167,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.951057,0.309017,0,0.07238,0.061245,-0.007708,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.968583,0.24869,0,0.072684,0.060198,-0.007708,
+ 0.951057,0.309017,0,0.07238,0.061245,-0.007708,
+ 0.968583,0.24869,0,0.072684,0.060198,-0.007708,
+ 0.960294,0.278991,0,0.072642,0.060343,-0.007708,
+ 0.951057,0.309017,0,0.07238,0.061245,-0.007708,
+ 0.960294,0.278991,0,0.072642,0.060343,-0.007708,
+ 0.960294,0.278991,0,0.072621,0.060414,-0.007708,
+ 0.968583,0.24869,0,0.072684,0.060198,-0.007708,
+ 0.968568,0.248686,0.005552,0.072684,0.060198,-0.006167,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.968583,0.24869,0,0.072684,0.060198,-0.007708,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.982287,0.187381,0,0.072922,0.059135,-0.007708,
+ 0.982287,0.187381,0,0.072922,0.059135,-0.007708,
+ 0.982272,0.187378,0.005552,0.072922,0.059135,-0.006167,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.982287,0.187381,0,0.072922,0.059135,-0.007708,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.992115,0.125333,0,0.073092,0.058059,-0.007708,
+ 0.992115,0.125333,0,0.073092,0.058059,-0.007708,
+ 0.992099,0.125331,0.005552,0.073092,0.058059,-0.006167,
+ 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167,
+ 0.992115,0.125333,0,0.073092,0.058059,-0.007708,
+ 0.997287,0.07324,0.007402,0.073195,0.056974,-0.006167,
+ 0.995562,0.094108,0,0.073195,0.056974,-0.007708,
+ 0.995562,-0.094108,0,0.073195,0.054796,-0.007708,
+ 0.997287,-0.07324,0.007402,0.073195,0.054796,-0.006167,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.995562,-0.094108,0,0.073195,0.054796,-0.007708,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.992115,-0.125333,0,0.073092,0.053712,-0.007708,
+ 0.992115,-0.125333,0,0.073092,0.053712,-0.007708,
+ 0.992099,-0.125331,0.005552,0.073092,0.053712,-0.006167,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.992115,-0.125333,0,0.073092,0.053712,-0.007708,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.982287,-0.187381,0,0.072922,0.052635,-0.007708,
+ 0.982287,-0.187381,0,0.072922,0.052635,-0.007708,
+ 0.982272,-0.187378,0.005552,0.072922,0.052635,-0.006167,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.982287,-0.187381,0,0.072922,0.052635,-0.007708,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.968583,-0.24869,0,0.072684,0.051572,-0.007708,
+ 0.968583,-0.24869,0,0.072684,0.051572,-0.007708,
+ 0.968568,-0.248686,0.005552,0.072684,0.051572,-0.006167,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.968583,-0.24869,0,0.072684,0.051572,-0.007708,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.951057,-0.309017,0,0.07238,0.050526,-0.007708,
+ 0.968583,-0.24869,0,0.072684,0.051572,-0.007708,
+ 0.951057,-0.309017,0,0.07238,0.050526,-0.007708,
+ 0.960294,-0.278991,0,0.072621,0.051356,-0.007708,
+ 0.968583,-0.24869,0,0.072684,0.051572,-0.007708,
+ 0.960294,-0.278991,0,0.072621,0.051356,-0.007708,
+ 0.960294,-0.278991,0,0.072642,0.051428,-0.007708,
+ 0.951057,-0.309017,0,0.07238,0.050526,-0.007708,
+ 0.951042,-0.309012,0.005552,0.07238,0.050526,-0.006167,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.951057,-0.309017,0,0.07238,0.050526,-0.007708,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.929776,-0.368125,0,0.072011,0.049501,-0.007708,
+ 0.929776,-0.368125,0,0.072011,0.049501,-0.007708,
+ 0.929762,-0.368119,0.005552,0.072011,0.049501,-0.006167,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.929776,-0.368125,0,0.072011,0.049501,-0.007708,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.904827,-0.425779,0,0.071578,0.048501,-0.007708,
+ 0.904827,-0.425779,0,0.071578,0.048501,-0.007708,
+ 0.904813,-0.425773,0.005552,0.071578,0.048501,-0.006167,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.904827,-0.425779,0,0.071578,0.048501,-0.007708,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.876307,-0.481754,0,0.071084,0.04753,-0.007708,
+ 0.876307,-0.481754,0,0.071084,0.04753,-0.007708,
+ 0.876293,-0.481746,0.005552,0.071084,0.04753,-0.006167,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.876307,-0.481754,0,0.071084,0.04753,-0.007708,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.844328,-0.535827,0,0.070529,0.046592,-0.007708,
+ 0.876307,-0.481754,0,0.071084,0.04753,-0.007708,
+ 0.844328,-0.535827,0,0.070529,0.046592,-0.007708,
+ 0.860742,-0.509041,0,0.070867,0.047163,-0.007708,
+ 0.876307,-0.481754,0,0.071084,0.04753,-0.007708,
+ 0.860742,-0.509041,0,0.070867,0.047163,-0.007708,
+ 0.860742,-0.509041,0,0.070926,0.047263,-0.007708,
+ 0.844328,-0.535827,0,0.070529,0.046592,-0.007708,
+ 0.844315,-0.535819,0.005552,0.070529,0.046592,-0.006167,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.844328,-0.535827,0,0.070529,0.046592,-0.007708,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.809017,-0.587785,0,0.069917,0.045691,-0.007708,
+ 0.809017,-0.587785,0,0.069917,0.045691,-0.007708,
+ 0.809005,-0.587776,0.005552,0.069917,0.045691,-0.006167,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.809017,-0.587785,0,0.069917,0.045691,-0.007708,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.770513,-0.637424,0,0.069249,0.04483,-0.007708,
+ 0.770513,-0.637424,0,0.069249,0.04483,-0.007708,
+ 0.770501,-0.637414,0.005552,0.069249,0.04483,-0.006167,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.770513,-0.637424,0,0.069249,0.04483,-0.007708,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.728969,-0.684547,0,0.068528,0.044013,-0.007708,
+ 0.728969,-0.684547,0,0.068528,0.044013,-0.007708,
+ 0.728957,-0.684537,0.005552,0.068528,0.044013,-0.006167,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.728969,-0.684547,0,0.068528,0.044013,-0.007708,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.684547,-0.728969,0,0.067758,0.043242,-0.007708,
+ 0.728969,-0.684547,0,0.068528,0.044013,-0.007708,
+ 0.684547,-0.728969,0,0.067758,0.043242,-0.007708,
+ 0.707107,-0.707107,0,0.068097,0.043581,-0.007708,
+ 0.728969,-0.684547,0,0.068528,0.044013,-0.007708,
+ 0.707107,-0.707107,0,0.068097,0.043581,-0.007708,
+ 0.707107,-0.707107,0,0.068189,0.043673,-0.007708,
+ 0.684547,-0.728969,0,0.067758,0.043242,-0.007708,
+ 0.684537,-0.728957,0.005552,0.067758,0.043242,-0.006167,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.684547,-0.728969,0,0.067758,0.043242,-0.007708,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.637424,-0.770513,0,0.066941,0.042522,-0.007708,
+ 0.637424,-0.770513,0,0.066941,0.042522,-0.007708,
+ 0.637414,-0.770501,0.005552,0.066941,0.042522,-0.006167,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.637424,-0.770513,0,0.066941,0.042522,-0.007708,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.587785,-0.809017,0,0.06608,0.041854,-0.007708,
+ 0.587785,-0.809017,0,0.06608,0.041854,-0.007708,
+ 0.587776,-0.809005,0.005552,0.06608,0.041854,-0.006167,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.587785,-0.809017,0,0.06608,0.041854,-0.007708,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.535827,-0.844328,0,0.065178,0.041241,-0.007708,
+ 0.535827,-0.844328,0,0.065178,0.041241,-0.007708,
+ 0.535819,-0.844315,0.005552,0.065178,0.041241,-0.006167,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.535827,-0.844328,0,0.065178,0.041241,-0.007708,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.481754,-0.876307,0,0.064241,0.040687,-0.007708,
+ 0.535827,-0.844328,0,0.065178,0.041241,-0.007708,
+ 0.481754,-0.876307,0,0.064241,0.040687,-0.007708,
+ 0.509041,-0.860742,0,0.064507,0.040845,-0.007708,
+ 0.535827,-0.844328,0,0.065178,0.041241,-0.007708,
+ 0.509041,-0.860742,0,0.064507,0.040845,-0.007708,
+ 0.509041,-0.860742,0,0.064607,0.040904,-0.007708,
+ 0.481754,-0.876307,0,0.064241,0.040687,-0.007708,
+ 0.481746,-0.876293,0.005552,0.064241,0.040687,-0.006167,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.481754,-0.876307,0,0.064241,0.040687,-0.007708,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.425779,-0.904827,0,0.06327,0.040192,-0.007708,
+ 0.425779,-0.904827,0,0.06327,0.040192,-0.007708,
+ 0.425773,-0.904813,0.005552,0.06327,0.040192,-0.006167,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.425779,-0.904827,0,0.06327,0.040192,-0.007708,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.368125,-0.929776,0,0.06227,0.03976,-0.007708,
+ 0.368125,-0.929776,0,0.06227,0.03976,-0.007708,
+ 0.368119,-0.929762,0.005552,0.06227,0.03976,-0.006167,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.368125,-0.929776,0,0.06227,0.03976,-0.007708,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.309017,-0.951057,0,0.061245,0.03939,-0.007708,
+ 0.309017,-0.951057,0,0.061245,0.03939,-0.007708,
+ 0.309012,-0.951042,0.005552,0.061245,0.03939,-0.006167,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.309017,-0.951057,0,0.061245,0.03939,-0.007708,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.24869,-0.968583,0,0.060198,0.039087,-0.007708,
+ 0.309017,-0.951057,0,0.061245,0.03939,-0.007708,
+ 0.24869,-0.968583,0,0.060198,0.039087,-0.007708,
+ 0.278991,-0.960294,0,0.060343,0.039128,-0.007708,
+ 0.309017,-0.951057,0,0.061245,0.03939,-0.007708,
+ 0.278991,-0.960294,0,0.060343,0.039128,-0.007708,
+ 0.278991,-0.960294,0,0.060414,0.039149,-0.007708,
+ 0.24869,-0.968583,0,0.060198,0.039087,-0.007708,
+ 0.248686,-0.968568,0.005552,0.060198,0.039087,-0.006167,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.24869,-0.968583,0,0.060198,0.039087,-0.007708,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.187381,-0.982287,0,0.059135,0.038849,-0.007708,
+ 0.187381,-0.982287,0,0.059135,0.038849,-0.007708,
+ 0.187378,-0.982272,0.005552,0.059135,0.038849,-0.006167,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.187381,-0.982287,0,0.059135,0.038849,-0.007708,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.125333,-0.992115,0,0.058059,0.038678,-0.007708,
+ 0.125333,-0.992115,0,0.058059,0.038678,-0.007708,
+ 0.125331,-0.992099,0.005552,0.058059,0.038678,-0.006167,
+ 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167,
+ 0.125333,-0.992115,0,0.058059,0.038678,-0.007708,
+ 0.07324,-0.997287,0.007402,0.056974,0.038576,-0.006167,
+ 0.094108,-0.995562,0,0.056974,0.038576,-0.007708
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,9588,data,NULL};
+const struct gllist *companion_disc=&frame;
diff --git a/hacks/glx/companion_heart.c b/hacks/glx/companion_heart.c
new file mode 100644
index 0000000..1786a62
--- /dev/null
+++ b/hacks/glx/companion_heart.c
@@ -0,0 +1,653 @@
+#include "gllist.h"
+static const float data[]={
+ -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781,
+ -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781,
+ -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055116,0.063504,-0.005781,
+ 0,0,1,0.054127,0.064391,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.054127,0.064391,-0.005781,
+ 0,0,1,0.052967,0.065039,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.052967,0.065039,-0.005781,
+ 0,0,1,0.051693,0.065415,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.051693,0.065415,-0.005781,
+ 0,0,1,0.050367,0.065502,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.050367,0.065502,-0.005781,
+ 0,0,1,0.049054,0.065295,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.049054,0.065295,-0.005781,
+ 0,0,1,0.04782,0.064804,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.04782,0.064804,-0.005781,
+ 0,0,1,0.046724,0.064053,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.046724,0.064053,-0.005781,
+ 0,0,1,0.04582,0.063079,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.04582,0.063079,-0.005781,
+ 0,0,1,0.045152,0.06193,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.045152,0.06193,-0.005781,
+ 0,0,1,0.044754,0.060662,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.044754,0.060662,-0.005781,
+ 0,0,1,0.044645,0.059338,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.044645,0.059338,-0.005781,
+ 0,0,1,0.044702,0.058527,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.044702,0.058527,-0.005781,
+ 0,0,1,0.044827,0.057723,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.044827,0.057723,-0.005781,
+ 0,0,1,0.045017,0.056932,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.045017,0.056932,-0.005781,
+ 0,0,1,0.045272,0.05616,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.045272,0.05616,-0.005781,
+ 0,0,1,0.04559,0.055411,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.04559,0.055411,-0.005781,
+ 0,0,1,0.04597,0.054691,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.04597,0.054691,-0.005781,
+ 0,0,1,0.046407,0.054006,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.046407,0.054006,-0.005781,
+ 0,0,1,0.0469,0.053359,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.0469,0.053359,-0.005781,
+ 0,0,1,0.047445,0.052755,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.047445,0.052755,-0.005781,
+ 0,0,1,0.048038,0.052198,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.048038,0.052198,-0.005781,
+ 0,0,1,0.048675,0.051693,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.048675,0.051693,-0.005781,
+ 0,0,1,0.049352,0.051241,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.049352,0.051241,-0.005781,
+ 0,0,1,0.050001,0.050829,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.050001,0.050829,-0.005781,
+ 0,0,1,0.050634,0.050393,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.050634,0.050393,-0.005781,
+ 0,0,1,0.05125,0.049933,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.05125,0.049933,-0.005781,
+ 0,0,1,0.051848,0.049449,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.051848,0.049449,-0.005781,
+ 0,0,1,0.052427,0.048943,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.052427,0.048943,-0.005781,
+ 0,0,1,0.052987,0.048416,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.052987,0.048416,-0.005781,
+ 0,0,1,0.053525,0.047867,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.053525,0.047867,-0.005781,
+ 0,0,1,0.054043,0.047299,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.054043,0.047299,-0.005781,
+ 0,0,1,0.054538,0.046711,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.054538,0.046711,-0.005781,
+ 0,0,1,0.055011,0.046104,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055011,0.046104,-0.005781,
+ 0,0,1,0.05546,0.04548,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.05546,0.04548,-0.005781,
+ 0,0,1,0.055885,0.044839,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055885,0.044839,-0.005781,
+ 0,0,1,0.05631,0.04548,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.05631,0.04548,-0.005781,
+ 0,0,1,0.05676,0.046104,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.05676,0.046104,-0.005781,
+ 0,0,1,0.057232,0.046711,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.057232,0.046711,-0.005781,
+ 0,0,1,0.057728,0.047299,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.057728,0.047299,-0.005781,
+ 0,0,1,0.058245,0.047867,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.058245,0.047867,-0.005781,
+ 0,0,1,0.058784,0.048416,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.058784,0.048416,-0.005781,
+ 0,0,1,0.059343,0.048943,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.059343,0.048943,-0.005781,
+ 0,0,1,0.059922,0.049449,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.059922,0.049449,-0.005781,
+ 0,0,1,0.06052,0.049933,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.06052,0.049933,-0.005781,
+ 0,0,1,0.061136,0.050393,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.061136,0.050393,-0.005781,
+ 0,0,1,0.061769,0.050829,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.061769,0.050829,-0.005781,
+ 0,0,1,0.062418,0.051241,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.062418,0.051241,-0.005781,
+ 0,0,1,0.063095,0.051693,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.063095,0.051693,-0.005781,
+ 0,0,1,0.063732,0.052198,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.063732,0.052198,-0.005781,
+ 0,0,1,0.064326,0.052755,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.064326,0.052755,-0.005781,
+ 0,0,1,0.06487,0.053359,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.06487,0.053359,-0.005781,
+ 0,0,1,0.065363,0.054006,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.065363,0.054006,-0.005781,
+ 0,0,1,0.065801,0.054691,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.065801,0.054691,-0.005781,
+ 0,0,1,0.06618,0.055411,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.06618,0.055411,-0.005781,
+ 0,0,1,0.066498,0.05616,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.066498,0.05616,-0.005781,
+ 0,0,1,0.066754,0.056932,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.066754,0.056932,-0.005781,
+ 0,0,1,0.066944,0.057723,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.066944,0.057723,-0.005781,
+ 0,0,1,0.067068,0.058527,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.067068,0.058527,-0.005781,
+ 0,0,1,0.067125,0.059338,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.067125,0.059338,-0.005781,
+ 0,0,1,0.067016,0.060662,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.067016,0.060662,-0.005781,
+ 0,0,1,0.066618,0.06193,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.066618,0.06193,-0.005781,
+ 0,0,1,0.065951,0.063079,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.065951,0.063079,-0.005781,
+ 0,0,1,0.065047,0.064053,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.065047,0.064053,-0.005781,
+ 0,0,1,0.063951,0.064804,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.063951,0.064804,-0.005781,
+ 0,0,1,0.062716,0.065295,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.062716,0.065295,-0.005781,
+ 0,0,1,0.061404,0.065502,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.061404,0.065502,-0.005781,
+ 0,0,1,0.060078,0.065415,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.060078,0.065415,-0.005781,
+ 0,0,1,0.058804,0.065039,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.058804,0.065039,-0.005781,
+ 0,0,1,0.057644,0.064391,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.057644,0.064391,-0.005781,
+ 0,0,1,0.056655,0.063504,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.056655,0.063504,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055885,0.06242,-0.005781,
+ 0,0,1,0.055116,0.063504,-0.005781,
+ 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781,
+ 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818,
+ 0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781,
+ 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818,
+ 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781,
+ 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818,
+ 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781,
+ 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818,
+ 0.600355,0.41774,0.681958,0.05546,0.04548,-0.005781,
+ 0.583861,0.425853,0.691199,0.054915,0.044676,-0.004818,
+ 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781,
+ 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818,
+ 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781,
+ 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818,
+ 0.573435,0.432324,0.695894,0.055011,0.046104,-0.005781,
+ 0.557839,0.440321,0.703515,0.05439,0.045363,-0.004818,
+ 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781,
+ 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818,
+ 0.525024,0.459644,0.716294,0.054043,0.047299,-0.005781,
+ 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818,
+ 0.547914,0.446817,0.707209,0.054538,0.046711,-0.005781,
+ 0.525024,0.459644,0.716294,0.054043,0.047299,-0.005781,
+ 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781,
+ 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818,
+ 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818,
+ 0.528358,0.458036,0.714871,0.05384,0.046029,-0.004818,
+ 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781,
+ 0.507344,0.470385,0.722039,0.053525,0.047867,-0.005781,
+ 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781,
+ 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818,
+ 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818,
+ 0.502587,0.474851,0.722443,0.053266,0.046673,-0.004818,
+ 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781,
+ 0.484849,0.48521,0.727662,0.052987,0.048416,-0.005781,
+ 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781,
+ 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818,
+ 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818,
+ 0.480277,0.489774,0.727637,0.052668,0.047293,-0.004818,
+ 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781,
+ 0.463202,0.500363,0.731492,0.052427,0.048943,-0.005781,
+ 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781,
+ 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818,
+ 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818,
+ 0.458764,0.50505,0.731068,0.052047,0.047891,-0.004818,
+ 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781,
+ 0.442255,0.515933,0.733637,0.051848,0.049449,-0.005781,
+ 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781,
+ 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818,
+ 0.42249,0.532759,0.73326,0.050741,0.049011,-0.004818,
+ 0.437903,0.520767,0.732832,0.051404,0.048464,-0.004818,
+ 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781,
+ 0.42249,0.532759,0.73326,0.050741,0.049011,-0.004818,
+ 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781,
+ 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818,
+ 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781,
+ 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818,
+ 0.419718,0.534563,0.733539,0.05125,0.049933,-0.005781,
+ 0.403677,0.547538,0.732971,0.050057,0.049532,-0.004818,
+ 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781,
+ 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818,
+ 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781,
+ 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818,
+ 0.395847,0.555175,0.731496,0.050634,0.050393,-0.005781,
+ 0.38391,0.564835,0.730462,0.049354,0.050026,-0.004818,
+ 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781,
+ 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818,
+ 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781,
+ 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818,
+ 0.376177,0.572732,0.728333,0.050001,0.050829,-0.005781,
+ 0.375296,0.574093,0.727715,0.048634,0.050493,-0.004818,
+ 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781,
+ 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818,
+ 0.403275,0.554082,0.72826,0.048675,0.051693,-0.005781,
+ 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818,
+ 0.378691,0.573667,0.726291,0.049352,0.051241,-0.005781,
+ 0.403275,0.554082,0.72826,0.048675,0.051693,-0.005781,
+ 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781,
+ 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818,
+ 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818,
+ 0.405711,0.551851,0.728601,0.047882,0.051003,-0.004818,
+ 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781,
+ 0.439698,0.520339,0.732061,0.048038,0.052198,-0.005781,
+ 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781,
+ 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818,
+ 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818,
+ 0.455156,0.505988,0.732672,0.047175,0.051576,-0.004818,
+ 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781,
+ 0.478388,0.479119,0.735928,0.047445,0.052755,-0.005781,
+ 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781,
+ 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818,
+ 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818,
+ 0.492434,0.463571,0.736621,0.046517,0.052206,-0.004818,
+ 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781,
+ 0.513034,0.434953,0.740008,0.0469,0.053359,-0.005781,
+ 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781,
+ 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818,
+ 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818,
+ 0.525496,0.418365,0.740827,0.045912,0.05289,-0.004818,
+ 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781,
+ 0.543337,0.388194,0.744372,0.046407,0.054006,-0.005781,
+ 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781,
+ 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818,
+ 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818,
+ 0.554068,0.370754,0.745352,0.045365,0.053623,-0.004818,
+ 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781,
+ 0.569031,0.339242,0.749078,0.04597,0.054691,-0.005781,
+ 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781,
+ 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818,
+ 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818,
+ 0.577912,0.321162,0.750248,0.044879,0.054399,-0.004818,
+ 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781,
+ 0.589896,0.288542,0.754166,0.04559,0.055411,-0.005781,
+ 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781,
+ 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818,
+ 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818,
+ 0.596848,0.270049,0.755544,0.044458,0.055214,-0.004818,
+ 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781,
+ 0.60577,0.236571,0.759656,0.045272,0.05616,-0.005781,
+ 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781,
+ 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818,
+ 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818,
+ 0.610753,0.217903,0.761249,0.044105,0.056061,-0.004818,
+ 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781,
+ 0.616557,0.183837,0.765546,0.045017,0.056932,-0.005781,
+ 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781,
+ 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818,
+ 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818,
+ 0.619574,0.165232,0.767351,0.043821,0.056936,-0.004818,
+ 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781,
+ 0.622238,0.13086,0.771813,0.044827,0.057723,-0.005781,
+ 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781,
+ 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818,
+ 0.622674,0.06887,0.779444,0.043472,0.058741,-0.004818,
+ 0.623333,0.112547,0.773815,0.04361,0.057831,-0.004818,
+ 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781,
+ 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818,
+ 0.622674,0.06887,0.779444,0.043472,0.058741,-0.004818,
+ 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781,
+ 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818,
+ 0.622921,0.078006,0.778386,0.044702,0.058527,-0.005781,
+ 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781,
+ 0.615482,0.005518,0.788132,0.043409,0.05966,-0.004818,
+ 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781,
+ 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818,
+ 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781,
+ 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818,
+ 0.608032,-0.012608,0.793813,0.044645,0.059338,-0.005781,
+ 0.587334,-0.078712,0.805508,0.043489,0.061186,-0.004818,
+ 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781,
+ 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818,
+ 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781,
+ 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818,
+ 0.563271,-0.124273,0.816873,0.044754,0.060662,-0.005781,
+ 0.528554,-0.194938,0.826214,0.043898,0.062655,-0.004818,
+ 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781,
+ 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818,
+ 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781,
+ 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818,
+ 0.498136,-0.2337,0.835012,0.045152,0.06193,-0.005781,
+ 0.454671,-0.294294,0.840634,0.044613,0.063997,-0.004818,
+ 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781,
+ 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818,
+ 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781,
+ 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818,
+ 0.419714,-0.3263,0.846976,0.04582,0.063079,-0.005781,
+ 0.369159,-0.377727,0.849143,0.0456,0.065145,-0.004818,
+ 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781,
+ 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818,
+ 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781,
+ 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818,
+ 0.33096,-0.403408,0.853069,0.046724,0.064053,-0.005781,
+ 0.273921,-0.44663,0.851756,0.046812,0.066043,-0.004818,
+ 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781,
+ 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818,
+ 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781,
+ 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818,
+ 0.233173,-0.466563,0.853199,0.04782,0.064804,-0.005781,
+ 0.169323,-0.502195,0.848015,0.048188,0.066646,-0.004818,
+ 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781,
+ 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818,
+ 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781,
+ 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818,
+ 0.126112,-0.516835,0.846745,0.049054,0.065295,-0.005781,
+ 0.054393,-0.544766,0.836822,0.04966,0.066926,-0.004818,
+ 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781,
+ -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818,
+ -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781,
+ -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818,
+ 0.00829,-0.554159,0.832369,0.050367,0.065502,-0.005781,
+ -0.072758,-0.573144,0.816219,0.051157,0.066867,-0.004818,
+ -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781,
+ -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818,
+ -0.248853,-0.582215,0.774014,0.052967,0.065039,-0.005781,
+ -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818,
+ -0.12248,-0.576612,0.807785,0.051693,0.065415,-0.005781,
+ -0.248853,-0.582215,0.774014,0.052967,0.065039,-0.005781,
+ -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781,
+ -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818,
+ -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818,
+ -0.241161,-0.582165,0.776482,0.052605,0.066474,-0.004818,
+ -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781,
+ -0.375277,-0.56983,0.731068,0.054127,0.064391,-0.005781,
+ -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781,
+ -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818,
+ -0.558162,-0.527957,0.640091,0.055031,0.064761,-0.004818,
+ -0.434459,-0.558606,0.706544,0.053934,0.065766,-0.004818,
+ -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781,
+ -0.558162,-0.527957,0.640091,0.055031,0.064761,-0.004818,
+ -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781,
+ -0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818,
+ -0.641198,-0.455323,0.617694,0.055885,0.06242,-0.005781,
+ -0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818,
+ -0.563066,-0.515371,0.646025,0.055116,0.063504,-0.005781,
+ 0.641198,-0.455323,0.617694,0.055885,0.06242,-0.005781,
+ 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781,
+ 0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818,
+ 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818,
+ 0.627283,-0.480953,0.612536,0.055885,0.063727,-0.004818,
+ 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781,
+ 0.584317,-0.505368,0.634963,0.056655,0.063504,-0.005781,
+ 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781,
+ 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818,
+ 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818,
+ 0.53575,-0.534369,0.653775,0.056739,0.064761,-0.004818,
+ 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781,
+ 0.438876,-0.557947,0.704332,0.057644,0.064391,-0.005781,
+ 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781,
+ 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818,
+ 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818,
+ 0.377865,-0.569077,0.730322,0.057837,0.065766,-0.004818,
+ 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781,
+ 0.267975,-0.579599,0.769581,0.058804,0.065039,-0.005781,
+ 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781,
+ 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818,
+ 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818,
+ 0.214084,-0.583805,0.78316,0.059165,0.066474,-0.004818,
+ 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781,
+ 0.12248,-0.576612,0.807785,0.060078,0.065415,-0.005781,
+ -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781,
+ 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818,
+ -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818,
+ 0.072758,-0.573144,0.816219,0.060613,0.066867,-0.004818,
+ -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781,
+ -0.00829,-0.554159,0.832369,0.061404,0.065502,-0.005781,
+ -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781,
+ -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818,
+ -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818,
+ -0.054393,-0.544766,0.836822,0.06211,0.066926,-0.004818,
+ -0.126112,-0.516835,0.846745,0.062716,0.065295,-0.005781,
+ 0.622274,0.404734,0.670049,0.055885,0.043244,-0.004818,
+ 0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781,
+ 0.611328,0.411243,0.676134,0.055414,0.04397,-0.004818,
+ -0.622274,0.404734,0.670049,0.055885,0.043244,-0.004818,
+ -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818,
+ -0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781,
+ -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781,
+ -0.619748,0.407106,0.670953,0.055885,0.044839,-0.005781,
+ -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818,
+ -0.611328,0.411243,0.676134,0.056357,0.04397,-0.004818,
+ -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818,
+ -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781,
+ -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781,
+ -0.600355,0.41774,0.681958,0.05631,0.04548,-0.005781,
+ -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818,
+ -0.583861,0.425853,0.691199,0.056856,0.044676,-0.004818,
+ -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818,
+ -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781,
+ -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781,
+ -0.573435,0.432324,0.695894,0.05676,0.046104,-0.005781,
+ -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818,
+ -0.557839,0.440321,0.703515,0.05738,0.045363,-0.004818,
+ -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818,
+ -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781,
+ -0.525024,0.459644,0.716294,0.057728,0.047299,-0.005781,
+ -0.547914,0.446817,0.707209,0.057232,0.046711,-0.005781,
+ -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818,
+ -0.525024,0.459644,0.716294,0.057728,0.047299,-0.005781,
+ -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818,
+ -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781,
+ -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818,
+ -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781,
+ -0.528358,0.458036,0.714871,0.05793,0.046029,-0.004818,
+ -0.507344,0.470385,0.722039,0.058245,0.047867,-0.005781,
+ -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818,
+ -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781,
+ -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818,
+ -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781,
+ -0.502587,0.474851,0.722443,0.058505,0.046673,-0.004818,
+ -0.484849,0.48521,0.727662,0.058784,0.048416,-0.005781,
+ -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818,
+ -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781,
+ -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818,
+ -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781,
+ -0.480277,0.489774,0.727637,0.059103,0.047293,-0.004818,
+ -0.463202,0.500363,0.731492,0.059343,0.048943,-0.005781,
+ -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818,
+ -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781,
+ -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818,
+ -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781,
+ -0.458764,0.50505,0.731068,0.059724,0.047891,-0.004818,
+ -0.442255,0.515933,0.733637,0.059922,0.049449,-0.005781,
+ -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818,
+ -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781,
+ -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818,
+ -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781,
+ -0.437903,0.520767,0.732832,0.060366,0.048464,-0.004818,
+ -0.421867,0.532005,0.734165,0.06052,0.049933,-0.005781,
+ -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818,
+ -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781,
+ -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818,
+ -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781,
+ -0.417553,0.537009,0.732987,0.06103,0.049011,-0.004818,
+ -0.401898,0.548661,0.73311,0.061136,0.050393,-0.005781,
+ -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818,
+ -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781,
+ -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818,
+ -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781,
+ -0.397577,0.553859,0.731555,0.061714,0.049532,-0.004818,
+ -0.382209,0.565977,0.730469,0.061769,0.050829,-0.005781,
+ -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818,
+ -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781,
+ -0.379372,0.571846,0.727371,0.063137,0.050493,-0.004818,
+ -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781,
+ -0.377837,0.571394,0.728525,0.062416,0.050026,-0.004818,
+ -0.379372,0.571846,0.727371,0.063137,0.050493,-0.004818,
+ -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818,
+ -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781,
+ -0.403275,0.554082,0.72826,0.063095,0.051693,-0.005781,
+ -0.37698,0.573856,0.727032,0.062418,0.051241,-0.005781,
+ -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818,
+ -0.403275,0.554082,0.72826,0.063095,0.051693,-0.005781,
+ -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818,
+ -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781,
+ -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818,
+ -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781,
+ -0.405711,0.551851,0.728601,0.063888,0.051003,-0.004818,
+ -0.439698,0.520339,0.732061,0.063732,0.052198,-0.005781,
+ -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818,
+ -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781,
+ -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818,
+ -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781,
+ -0.455156,0.505988,0.732672,0.064596,0.051576,-0.004818,
+ -0.478388,0.479119,0.735928,0.064326,0.052755,-0.005781,
+ -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818,
+ -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781,
+ -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818,
+ -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781,
+ -0.492434,0.463571,0.736621,0.065254,0.052206,-0.004818,
+ -0.513034,0.434953,0.740008,0.06487,0.053359,-0.005781,
+ -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818,
+ -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781,
+ -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818,
+ -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781,
+ -0.525496,0.418365,0.740827,0.065859,0.05289,-0.004818,
+ -0.543337,0.388194,0.744372,0.065363,0.054006,-0.005781,
+ -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818,
+ -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781,
+ -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818,
+ -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781,
+ -0.554068,0.370754,0.745352,0.066406,0.053623,-0.004818,
+ -0.569031,0.339242,0.749078,0.065801,0.054691,-0.005781,
+ -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818,
+ -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781,
+ -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818,
+ -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781,
+ -0.577912,0.321162,0.750248,0.066892,0.054399,-0.004818,
+ -0.589896,0.288542,0.754166,0.06618,0.055411,-0.005781,
+ -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818,
+ -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781,
+ -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818,
+ -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781,
+ -0.596848,0.270049,0.755544,0.067313,0.055214,-0.004818,
+ -0.60577,0.236571,0.759656,0.066498,0.05616,-0.005781,
+ -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818,
+ -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781,
+ -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818,
+ -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781,
+ -0.610753,0.217903,0.761249,0.067666,0.056061,-0.004818,
+ -0.616557,0.183837,0.765546,0.066754,0.056932,-0.005781,
+ -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818,
+ -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781,
+ -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818,
+ -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781,
+ -0.619574,0.165232,0.767351,0.067949,0.056936,-0.004818,
+ -0.622238,0.13086,0.771813,0.066944,0.057723,-0.005781,
+ -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818,
+ -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781,
+ -0.622674,0.06887,0.779444,0.068298,0.058741,-0.004818,
+ -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781,
+ -0.623333,0.112547,0.773815,0.068161,0.057831,-0.004818,
+ -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781,
+ -0.622674,0.06887,0.779444,0.068298,0.058741,-0.004818,
+ -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818,
+ -0.622921,0.078006,0.778386,0.067068,0.058527,-0.005781,
+ -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818,
+ -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781,
+ -0.615482,0.005518,0.788132,0.068362,0.05966,-0.004818,
+ -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818,
+ -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781,
+ -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781,
+ -0.608032,-0.012608,0.793813,0.067125,0.059338,-0.005781,
+ -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818,
+ -0.587334,-0.078712,0.805508,0.068281,0.061186,-0.004818,
+ -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818,
+ -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781,
+ -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781,
+ -0.563271,-0.124273,0.816873,0.067016,0.060662,-0.005781,
+ -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818,
+ -0.528554,-0.194938,0.826214,0.067873,0.062655,-0.004818,
+ -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818,
+ -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781,
+ -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781,
+ -0.498136,-0.2337,0.835012,0.066618,0.06193,-0.005781,
+ -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818,
+ -0.454671,-0.294294,0.840634,0.067158,0.063997,-0.004818,
+ -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818,
+ -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781,
+ -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781,
+ -0.419714,-0.3263,0.846976,0.065951,0.063079,-0.005781,
+ -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818,
+ -0.369159,-0.377727,0.849143,0.06617,0.065145,-0.004818,
+ -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818,
+ -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781,
+ -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781,
+ -0.33096,-0.403408,0.853069,0.065047,0.064053,-0.005781,
+ -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818,
+ -0.273921,-0.44663,0.851756,0.064959,0.066043,-0.004818,
+ -0.169323,-0.502195,0.848015,0.063583,0.066646,-0.004818,
+ -0.233173,-0.466563,0.853199,0.063951,0.064804,-0.005781
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,648,data,NULL};
+const struct gllist *companion_heart=&frame;
diff --git a/hacks/glx/companion_quad.c b/hacks/glx/companion_quad.c
new file mode 100644
index 0000000..3cfd230
--- /dev/null
+++ b/hacks/glx/companion_quad.c
@@ -0,0 +1,389 @@
+#include "gllist.h"
+static const float data[]={
+ 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442,
+ 0.138522,0.464654,-0.87459,0.773415,1.636364,-0.251499,
+ 0.138522,0.464654,-0.87459,0.775033,1.681818,-0.227094,
+ 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442,
+ 0.138522,0.464654,-0.87459,0.775033,1.681818,-0.227094,
+ 0.11097,0.464834,-0.878416,0.796039,1.681818,-0.223767,
+ -0.917485,0.21303,-0.335916,0.757576,1.636364,-0.208242,
+ -0.917485,0.21303,-0.335916,0.757576,1.681818,-0.179415,
+ -0.917485,0.21303,-0.335916,0.775033,1.681818,-0.227094,
+ -0.917485,0.21303,-0.335916,0.757576,1.636364,-0.208242,
+ -0.917485,0.21303,-0.335916,0.775033,1.681818,-0.227094,
+ -0.917485,0.21303,-0.335916,0.773415,1.636364,-0.251499,
+ -1,0,0,0.757576,1.636364,-0.208242,
+ -1,0,0,0.757576,1.636364,-0.121212,
+ -1,0,0,0.757576,1.549333,-0.121212,
+ -1,0,0,0.757576,1.636364,-0.208242,
+ -1,0,0,0.757576,1.549333,-0.121212,
+ -1,0,0,0.757576,1.578161,-0.075758,
+ -1,0,0,0.757576,1.636364,-0.208242,
+ -1,0,0,0.757576,1.578161,-0.075758,
+ -1,0,0,0.757576,1.636364,-0.075758,
+ -1,0,0,0.757576,1.636364,-0.208242,
+ -1,0,0,0.757576,1.636364,-0.075758,
+ -1,0,0,0.757576,1.681818,-0.121212,
+ -1,0,0,0.757576,1.636364,-0.208242,
+ -1,0,0,0.757576,1.681818,-0.121212,
+ -1,0,0,0.757576,1.681818,-0.179415,
+ -0.917485,-0.335916,0.21303,0.757576,1.578161,-0.075758,
+ -0.917485,-0.335916,0.21303,0.757576,1.549333,-0.121212,
+ -0.917485,-0.335916,0.21303,0.773415,1.506076,-0.121212,
+ -0.917485,-0.335916,0.21303,0.757576,1.578161,-0.075758,
+ -0.917485,-0.335916,0.21303,0.773415,1.506076,-0.121212,
+ -0.917485,-0.335916,0.21303,0.775033,1.530482,-0.075758,
+ 0.138522,-0.87459,0.464654,0.773415,1.506076,-0.121212,
+ 0.11097,-0.878416,0.464834,0.79903,1.510133,-0.121212,
+ 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758,
+ 0.138522,-0.87459,0.464654,0.773415,1.506076,-0.121212,
+ 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758,
+ 0.138522,-0.87459,0.464654,0.775033,1.530482,-0.075758,
+ 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758,
+ 0.11097,-0.878416,0.464834,0.79903,1.510133,-0.121212,
+ 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212,
+ 0.11097,-0.878416,0.464834,0.796039,1.533809,-0.075758,
+ 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212,
+ 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758,
+ 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758,
+ 0.055595,-0.883651,0.464834,0.83883,1.513897,-0.121212,
+ 0,-0.885398,0.464834,0.878788,1.515152,-0.121212,
+ 0.055595,-0.883651,0.464834,0.837333,1.537712,-0.075758,
+ 0,-0.885398,0.464834,0.878788,1.515152,-0.121212,
+ 0,-0.885398,0.464834,0.878788,1.539015,-0.075758,
+ -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212,
+ -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758,
+ 0,-0.885398,0.464834,0.878788,1.539015,-0.075758,
+ -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212,
+ 0,-0.885398,0.464834,0.878788,1.539015,-0.075758,
+ 0,-0.885398,0.464834,0.878788,1.515152,-0.121212,
+ -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212,
+ -0.11097,-0.878416,0.464834,0.961536,1.533809,-0.075758,
+ -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758,
+ -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212,
+ -0.055595,-0.883651,0.464834,0.920242,1.537712,-0.075758,
+ -0.055595,-0.883651,0.464834,0.918745,1.513897,-0.121212,
+ -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212,
+ -0.138522,-0.87459,0.464654,0.984161,1.506076,-0.121212,
+ -0.138522,-0.87459,0.464654,0.982542,1.530482,-0.075758,
+ -0.11097,-0.878416,0.464834,0.958545,1.510133,-0.121212,
+ -0.138522,-0.87459,0.464654,0.982542,1.530482,-0.075758,
+ -0.11097,-0.878416,0.464834,0.961536,1.533809,-0.075758,
+ 0.917485,-0.335916,0.21303,1,1.549333,-0.121212,
+ 0.917485,-0.335916,0.21303,1,1.578161,-0.075758,
+ 0.917485,-0.335916,0.21303,0.982542,1.530482,-0.075758,
+ 0.917485,-0.335916,0.21303,1,1.549333,-0.121212,
+ 0.917485,-0.335916,0.21303,0.982542,1.530482,-0.075758,
+ 0.917485,-0.335916,0.21303,0.984161,1.506076,-0.121212,
+ 1,0,0,1,1.636364,-0.121212,
+ 1,0,0,1,1.636364,-0.208242,
+ 1,0,0,1,1.681818,-0.179415,
+ 1,0,0,1,1.636364,-0.121212,
+ 1,0,0,1,1.681818,-0.179415,
+ 1,0,0,1,1.681818,-0.121212,
+ 1,0,0,1,1.636364,-0.121212,
+ 1,0,0,1,1.681818,-0.121212,
+ 1,0,0,1,1.636364,-0.075758,
+ 1,0,0,1,1.636364,-0.121212,
+ 1,0,0,1,1.636364,-0.075758,
+ 1,0,0,1,1.578161,-0.075758,
+ 1,0,0,1,1.636364,-0.121212,
+ 1,0,0,1,1.578161,-0.075758,
+ 1,0,0,1,1.549333,-0.121212,
+ 0.917485,0.21303,-0.335916,1,1.681818,-0.179415,
+ 0.917485,0.21303,-0.335916,1,1.636364,-0.208242,
+ 0.917485,0.21303,-0.335916,0.984161,1.636364,-0.251499,
+ 0.917485,0.21303,-0.335916,1,1.681818,-0.179415,
+ 0.917485,0.21303,-0.335916,0.984161,1.636364,-0.251499,
+ 0.917485,0.21303,-0.335916,0.982542,1.681818,-0.227094,
+ -0.138522,0.464654,-0.87459,0.984161,1.636364,-0.251499,
+ -0.11097,0.464834,-0.878416,0.958545,1.636364,-0.247442,
+ -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767,
+ -0.138522,0.464654,-0.87459,0.984161,1.636364,-0.251499,
+ -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767,
+ -0.138522,0.464654,-0.87459,0.982542,1.681818,-0.227094,
+ -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767,
+ -0.11097,0.464834,-0.878416,0.958545,1.636364,-0.247442,
+ -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368,
+ -0.11097,0.464834,-0.878416,0.961536,1.681818,-0.223767,
+ -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368,
+ -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863,
+ -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863,
+ -0.055595,0.464834,-0.883651,0.918745,1.636364,-0.24368,
+ 0,0.464834,-0.885398,0.878788,1.636364,-0.242424,
+ -0.055595,0.464834,-0.883651,0.920242,1.681818,-0.219863,
+ 0,0.464834,-0.885398,0.878788,1.636364,-0.242424,
+ 0,0.464834,-0.885398,0.878788,1.681818,-0.218561,
+ 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368,
+ 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863,
+ 0,0.464834,-0.885398,0.878788,1.681818,-0.218561,
+ 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368,
+ 0,0.464834,-0.885398,0.878788,1.681818,-0.218561,
+ 0,0.464834,-0.885398,0.878788,1.636364,-0.242424,
+ 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442,
+ 0.11097,0.464834,-0.878416,0.796039,1.681818,-0.223767,
+ 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863,
+ 0.11097,0.464834,-0.878416,0.79903,1.636364,-0.247442,
+ 0.055595,0.464834,-0.883651,0.837333,1.681818,-0.219863,
+ 0.055595,0.464834,-0.883651,0.83883,1.636364,-0.24368,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.878788,1.681818,-0.218561,
+ 0,1,0,0.837333,1.681818,-0.219863,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.837333,1.681818,-0.219863,
+ 0,1,0,0.796039,1.681818,-0.223767,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.796039,1.681818,-0.223767,
+ 0,1,0,0.775033,1.681818,-0.227094,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.775033,1.681818,-0.227094,
+ 0,1,0,0.757576,1.681818,-0.179415,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.757576,1.681818,-0.179415,
+ 0,1,0,0.757576,1.681818,-0.121212,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.757576,1.681818,-0.121212,
+ 0,1,0,1,1.681818,-0.121212,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,1,1.681818,-0.121212,
+ 0,1,0,1,1.681818,-0.179415,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,1,1.681818,-0.179415,
+ 0,1,0,0.982542,1.681818,-0.227094,
+ 0,1,0,0.920242,1.681818,-0.219863,
+ 0,1,0,0.982542,1.681818,-0.227094,
+ 0,1,0,0.961536,1.681818,-0.223767,
+ 0,0.707107,0.707107,0.757576,1.681818,-0.121212,
+ 0,0.707107,0.707107,0.757576,1.636364,-0.075758,
+ 0,0.707107,0.707107,1,1.636364,-0.075758,
+ 0,0.707107,0.707107,0.757576,1.681818,-0.121212,
+ 0,0.707107,0.707107,1,1.636364,-0.075758,
+ 0,0.707107,0.707107,1,1.681818,-0.121212,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,1,1.636364,-0.075758,
+ 0,0,1,0.757576,1.636364,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.757576,1.636364,-0.075758,
+ 0,0,1,0.757576,1.578161,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.757576,1.578161,-0.075758,
+ 0,0,1,0.775033,1.530482,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.775033,1.530482,-0.075758,
+ 0,0,1,0.796039,1.533809,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.796039,1.533809,-0.075758,
+ 0,0,1,0.837333,1.537712,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.837333,1.537712,-0.075758,
+ 0,0,1,0.878788,1.539015,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.878788,1.539015,-0.075758,
+ 0,0,1,0.920242,1.537712,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.920242,1.537712,-0.075758,
+ 0,0,1,0.961536,1.533809,-0.075758,
+ 0,0,1,1,1.578161,-0.075758,
+ 0,0,1,0.961536,1.533809,-0.075758,
+ 0,0,1,0.982542,1.530482,-0.075758,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.121212,1.125055,0,
+ 0,0,1,0.223833,1.125055,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.223833,1.125055,0,
+ 0,0,1,0.227944,1.136476,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.227944,1.136476,0,
+ 0,0,1,0.245409,1.176833,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.245409,1.176833,0,
+ 0,0,1,0.265373,1.216015,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.265373,1.216015,0,
+ 0,0,1,0.287758,1.253867,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.287758,1.253867,0,
+ 0,0,1,0.312476,1.290236,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.312476,1.290236,0,
+ 0,0,1,0.339427,1.324985,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.339427,1.324985,0,
+ 0,0,1,0.368509,1.35797,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.368509,1.35797,0,
+ 0,0,1,0.399606,1.389067,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.399606,1.389067,0,
+ 0,0,1,0.432591,1.418148,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.432591,1.418148,0,
+ 0,0,1,0.467339,1.4451,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.467339,1.4451,0,
+ 0,0,1,0.503709,1.469818,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.503709,1.469818,0,
+ 0,0,1,0.541561,1.492203,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.541561,1.492203,0,
+ 0,0,1,0.580742,1.512167,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.580742,1.512167,0,
+ 0,0,1,0.6211,1.52963,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.6211,1.52963,0,
+ 0,0,1,0.632521,1.533742,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.632521,1.533742,0,
+ 0,0,1,0.632521,1.636364,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.632521,1.636364,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.121212,1.636364,0,
+ 0,0,1,0.121212,1.125055,0,
+ 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212,
+ 0.645427,-0.606097,0.464834,0.368509,1.35797,0,
+ 0.682211,-0.564374,0.464834,0.339427,1.324985,0,
+ 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212,
+ 0.682211,-0.564374,0.464834,0.339427,1.324985,0,
+ 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212,
+ 0.645427,-0.606097,0.464834,0.368509,1.35797,0,
+ 0.645427,-0.606097,0.464834,0.4149,1.314409,-0.121212,
+ 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212,
+ 0.645427,-0.606097,0.464834,0.368509,1.35797,0,
+ 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212,
+ 0.606097,-0.645427,0.464834,0.399606,1.389067,0,
+ 0.606097,-0.645427,0.464834,0.399606,1.389067,0,
+ 0.606097,-0.645427,0.464834,0.443167,1.342676,-0.121212,
+ 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212,
+ 0.606097,-0.645427,0.464834,0.399606,1.389067,0,
+ 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212,
+ 0.564374,-0.682211,0.464834,0.432591,1.418148,0,
+ 0.564374,-0.682211,0.464834,0.432591,1.418148,0,
+ 0.564374,-0.682211,0.464834,0.473155,1.369115,-0.121212,
+ 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212,
+ 0.564374,-0.682211,0.464834,0.432591,1.418148,0,
+ 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212,
+ 0.520424,-0.716302,0.464834,0.467339,1.4451,0,
+ 0.520424,-0.716302,0.464834,0.467339,1.4451,0,
+ 0.520424,-0.716302,0.464834,0.504742,1.393618,-0.121212,
+ 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212,
+ 0.520424,-0.716302,0.464834,0.467339,1.4451,0,
+ 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212,
+ 0.47442,-0.747566,0.464834,0.503709,1.469818,0,
+ 0.47442,-0.747566,0.464834,0.503709,1.469818,0,
+ 0.47442,-0.747566,0.464834,0.537806,1.416088,-0.121212,
+ 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212,
+ 0.47442,-0.747566,0.464834,0.503709,1.469818,0,
+ 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212,
+ 0.426544,-0.77588,0.464834,0.541561,1.492203,0,
+ 0.426544,-0.77588,0.464834,0.541561,1.492203,0,
+ 0.426544,-0.77588,0.464834,0.572218,1.436436,-0.121212,
+ 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212,
+ 0.426544,-0.77588,0.464834,0.541561,1.492203,0,
+ 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212,
+ 0.376984,-0.801132,0.464834,0.580742,1.512167,0,
+ 0.376984,-0.801132,0.464834,0.580742,1.512167,0,
+ 0.376984,-0.801132,0.464834,0.607836,1.454588,-0.121212,
+ 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212,
+ 0.376984,-0.801132,0.464834,0.580742,1.512167,0,
+ 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212,
+ 0.325937,-0.823222,0.464834,0.6211,1.52963,0,
+ 0.29995,-0.833143,0.464654,0.632521,1.533742,0,
+ 0.325937,-0.823222,0.464834,0.6211,1.52963,0,
+ 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212,
+ 0.29995,-0.833143,0.464654,0.632521,1.533742,0,
+ 0.325937,-0.823222,0.464834,0.644527,1.470464,-0.121212,
+ 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212,
+ 0.29995,-0.833143,0.464654,0.632521,1.533742,0,
+ 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212,
+ 0.273603,-0.842063,0.464834,0.67563,1.504045,-0.081077,
+ 0.273603,-0.842063,0.464834,0.67563,1.504045,-0.081077,
+ 0.273603,-0.842063,0.464834,0.682139,1.484006,-0.121212,
+ 0.247044,-0.850333,0.464654,0.69697,1.488315,-0.121212,
+ 0.882948,0,0.469472,0.632521,1.636364,0,
+ 0.882948,0,0.469472,0.632521,1.533742,0,
+ 0.882948,0,0.469472,0.67563,1.504045,-0.081077,
+ 0.882948,0,0.469472,0.632521,1.636364,0,
+ 0.882948,0,0.469472,0.67563,1.504045,-0.081077,
+ 0.882948,0,0.469472,0.69697,1.488315,-0.121212,
+ 0.882948,0,0.469472,0.632521,1.636364,0,
+ 0.882948,0,0.469472,0.69697,1.488315,-0.121212,
+ 0.882948,0,0.469472,0.69697,1.636364,-0.121212,
+ 0.799251,0.424969,0.424969,0.69697,1.636364,-0.121212,
+ 0.799251,0.424969,0.424969,0.632521,1.757576,-0.121212,
+ 0.799251,0.424969,0.424969,0.632521,1.636364,0,
+ 0,0.707107,0.707107,0.632521,1.757576,-0.121212,
+ 0,0.707107,0.707107,0.121212,1.757576,-0.121212,
+ 0,0.707107,0.707107,0.121212,1.636364,0,
+ 0,0.707107,0.707107,0.632521,1.757576,-0.121212,
+ 0,0.707107,0.707107,0.121212,1.636364,0,
+ 0,0.707107,0.707107,0.632521,1.636364,0,
+ -0.57735,0.57735,0.57735,0.121212,1.757576,-0.121212,
+ -0.57735,0.57735,0.57735,0,1.636364,-0.121212,
+ -0.57735,0.57735,0.57735,0.121212,1.636364,0,
+ -0.707107,0,0.707107,0,1.636364,-0.121212,
+ -0.707107,0,0.707107,0,1.125055,-0.121212,
+ -0.707107,0,0.707107,0.121212,1.125055,0,
+ -0.707107,0,0.707107,0,1.636364,-0.121212,
+ -0.707107,0,0.707107,0.121212,1.125055,0,
+ -0.707107,0,0.707107,0.121212,1.636364,0,
+ -0.424969,-0.799251,0.424969,0,1.125055,-0.121212,
+ -0.424969,-0.799251,0.424969,0.121212,1.060606,-0.121212,
+ -0.424969,-0.799251,0.424969,0.121212,1.125055,0,
+ 0,-0.882948,0.469472,0.223833,1.125055,0,
+ 0,-0.882948,0.469472,0.121212,1.125055,0,
+ 0,-0.882948,0.469472,0.121212,1.060606,-0.121212,
+ 0,-0.882948,0.469472,0.223833,1.125055,0,
+ 0,-0.882948,0.469472,0.121212,1.060606,-0.121212,
+ 0,-0.882948,0.469472,0.269262,1.060606,-0.121212,
+ 0,-0.882948,0.469472,0.223833,1.125055,0,
+ 0,-0.882948,0.469472,0.269262,1.060606,-0.121212,
+ 0,-0.882948,0.469472,0.25353,1.081945,-0.081077,
+ 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212,
+ 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077,
+ 0.850333,-0.247044,0.464654,0.269262,1.060606,-0.121212,
+ 0.823222,-0.325937,0.464834,0.227944,1.136476,0,
+ 0.833143,-0.29995,0.464654,0.223833,1.125055,0,
+ 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077,
+ 0.823222,-0.325937,0.464834,0.227944,1.136476,0,
+ 0.842063,-0.273603,0.464834,0.25353,1.081945,-0.081077,
+ 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212,
+ 0.823222,-0.325937,0.464834,0.227944,1.136476,0,
+ 0.842063,-0.273603,0.464834,0.27357,1.075436,-0.121212,
+ 0.823222,-0.325937,0.464834,0.287112,1.113048,-0.121212,
+ 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212,
+ 0.801132,-0.376984,0.464834,0.245409,1.176833,0,
+ 0.823222,-0.325937,0.464834,0.227944,1.136476,0,
+ 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212,
+ 0.823222,-0.325937,0.464834,0.227944,1.136476,0,
+ 0.823222,-0.325937,0.464834,0.287112,1.113048,-0.121212,
+ 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212,
+ 0.77588,-0.426544,0.464834,0.265373,1.216015,0,
+ 0.801132,-0.376984,0.464834,0.245409,1.176833,0,
+ 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212,
+ 0.801132,-0.376984,0.464834,0.245409,1.176833,0,
+ 0.801132,-0.376984,0.464834,0.302989,1.149739,-0.121212,
+ 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212,
+ 0.747566,-0.47442,0.464834,0.287758,1.253867,0,
+ 0.77588,-0.426544,0.464834,0.265373,1.216015,0,
+ 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212,
+ 0.77588,-0.426544,0.464834,0.265373,1.216015,0,
+ 0.77588,-0.426544,0.464834,0.321139,1.185358,-0.121212,
+ 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212,
+ 0.716302,-0.520424,0.464834,0.312476,1.290236,0,
+ 0.747566,-0.47442,0.464834,0.287758,1.253867,0,
+ 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212,
+ 0.747566,-0.47442,0.464834,0.287758,1.253867,0,
+ 0.747566,-0.47442,0.464834,0.341488,1.21977,-0.121212,
+ 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212,
+ 0.682211,-0.564374,0.464834,0.339427,1.324985,0,
+ 0.716302,-0.520424,0.464834,0.312476,1.290236,0,
+ 0.682211,-0.564374,0.464834,0.388461,1.284421,-0.121212,
+ 0.716302,-0.520424,0.464834,0.312476,1.290236,0,
+ 0.716302,-0.520424,0.464834,0.363958,1.252833,-0.121212
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,384,data,NULL};
+const struct gllist *companion_quad=&frame;
diff --git a/hacks/glx/companioncube.man b/hacks/glx/companioncube.man
new file mode 100644
index 0000000..e15b15e
--- /dev/null
+++ b/hacks/glx/companioncube.man
@@ -0,0 +1,85 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+companioncube - a vital aparatus.
+.SH SYNOPSIS
+.B companioncube
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fIratio\fP]
+[\-spin]
+[\-wander]
+[\-count \fInumber\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+The symptoms most commonly produced by Enrichment Center testing are
+superstition, perceiving inanimate objects as alive, and hallucinations.
+The Enrichment Center reminds you that the weighted companion cube will
+never threaten to stab you and, in fact, cannot speak. In the event that
+the Weighted Companion Cube does speak, the Enrichment Center urges you to
+disregard its advice.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+How fast the animation should run.
+Less than 1 for slower, greater than 1 for faster.
+.TP 8
+.B \-count \fInumber\fP
+How many cubes. Default 3.
+.TP 8
+.B \-spin
+.B \-no\-spin
+Instead of bouncing, float and spin.
+.TP 8
+.B \-wander
+.B \-no\-wander
+Instead of bouncing, float and drift.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR tronbit (1),
+.BR lament (1),
+.BR dangerball (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2011 by Jamie Zawinski. Permission to use, copy,
+modify, distribute, and sell this software and its documentation for
+any purpose is hereby granted without fee, provided that the above
+copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation.
+No representations are made about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+.SH AUTHOR
+Jamie Zawinski, with apologies to the fine folks at Valve Software
+and Aperture Science.
diff --git a/hacks/glx/cow_face.c b/hacks/glx/cow_face.c
new file mode 100644
index 0000000..e57d2bb
--- /dev/null
+++ b/hacks/glx/cow_face.c
@@ -0,0 +1,341 @@
+#include "gllist.h"
+static const float data[]={
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837,
+ 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609,
+ 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413,
+ 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466,
+ 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.823157,0.134624,-0.551625,4.971872,1.924079,-0.586026,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609,
+ 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413,
+ 0.774925,-0.116115,-0.621296,4.953403,1.907939,-0.605609,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.546619,0.025491,-0.836994,4.925499,1.917814,-0.613413,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358,
+ 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466,
+ 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.555353,0.50765,-0.658692,4.953739,1.95258,-0.592256,
+ 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705,
+ 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047,
+ 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ -0.034221,-0.995012,-0.093703,5.803425,1.260787,-0.210002,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128,
+ 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705,
+ 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ 0.204472,-0.587725,-0.782797,5.674999,0.950754,-0.22796,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ 0.256335,-0.2349,-0.937611,5.757506,0.9579,-0.210732,
+ 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ -0.091049,-0.145989,-0.985087,5.897758,1.009309,-0.080583,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ -0.126433,-0.433465,-0.892257,5.87863,0.986485,-0.128292,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097,
+ 0.485455,-0.874253,0.003847,5.895899,1.18273,-0.164705,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ 0.064626,-0.99783,0.012619,5.840665,1.221942,-0.187128,
+ 0.035706,-0.99787,-0.054588,5.849792,1.19348,-0.181047,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ -0.007021,-0.990239,-0.139206,5.573803,0.952578,-0.243886,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.193291,-0.074799,-0.978286,4.897808,1.946794,-0.628057,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.133638,0.26732,-0.954296,4.925394,1.955229,-0.618837,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026,
+ 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057,
+ 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256,
+ 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.444094,0.036127,0.895251,4.971872,1.924079,0.586026,
+ 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137,
+ 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ 0.458202,0.052175,0.887316,4.953403,1.907939,0.605609,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.347878,0.028988,0.937092,4.925499,1.917814,0.613413,
+ 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.328548,0.219459,0.918637,4.953739,1.95258,0.592256,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583,
+ 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583,
+ 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084,
+ 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197,
+ 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ -0.026478,0.945923,-0.323309,5.803425,1.260787,0.210002,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ 0.850248,-0.122854,-0.511845,5.674999,0.950754,0.22796,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ 0.971427,0.045661,-0.232906,5.757506,0.9579,0.210732,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ 0.535268,0.844682,0.000171,5.871947,1.021428,0.001102,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ 0.329366,0.742755,-0.582952,5.87863,0.986485,0.128292,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ 0.054059,0.926072,-0.373455,5.897758,1.009309,0.080583,
+ 0.169215,-0.167065,-0.971317,5.895899,1.18273,0.164705,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ -0.071389,0.260053,-0.962952,5.840665,1.221942,0.187128,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ 0.054838,0.68532,-0.726174,5.849792,1.19348,0.181047,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248,
+ -0.03479,0.696668,-0.716549,5.573803,0.952578,0.243886,
+ -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.719268,0.159442,0.676189,4.925394,1.955229,0.618837,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.561013,0.750789,0.348684,4.897808,1.946794,0.628057
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,336,data,NULL};
+const struct gllist *cow_face=&frame;
diff --git a/hacks/glx/cow_hide.c b/hacks/glx/cow_hide.c
new file mode 100644
index 0000000..3728eef
--- /dev/null
+++ b/hacks/glx/cow_hide.c
@@ -0,0 +1,13055 @@
+#include "gllist.h"
+static const float data[]={
+ -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826,
+ -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445,
+ 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445,
+ 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367,
+ 0.023112,-0.187685,-0.981957,2.520417,-0.954785,-0.739445,
+ 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ -0.200187,-0.124247,-0.971848,2.407309,-0.97498,-0.805091,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156,
+ 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.727708,-0.453484,-0.514581,2.486533,-1.274971,-0.627822,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.370396,-0.365961,-0.853744,2.318787,-1.29409,-0.673863,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.6483,-0.171023,-0.741928,2.386465,-1.116066,-0.761367,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.71475,-0.118625,-0.689246,2.354287,-1.193746,-0.735189,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.4379,-0.250054,-0.863549,2.514167,-1.077721,-0.706614,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.478274,-0.500384,-0.721713,2.510841,-1.158786,-0.678057,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493,
+ 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684,
+ 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018,
+ 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684,
+ 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301,
+ 0.543412,-0.359347,-0.758665,2.757946,-1.099958,-0.471684,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.290845,-0.56858,-0.769497,2.61797,-1.235597,-0.520238,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156,
+ 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.677632,-0.514013,-0.525933,2.549322,-1.335209,-0.535156,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.287759,-0.574148,-0.766517,2.45706,-1.400958,-0.539866,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997,
+ 0.324748,-0.466051,-0.823003,2.274533,-1.433487,-0.567366,
+ 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301,
+ 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ 0.663699,-0.195183,-0.722085,2.847364,-1.103812,-0.402301,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.675576,-0.202498,-0.708937,2.803736,-1.255869,-0.438328,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ 0.648132,-0.027411,-0.761034,2.515314,-1.507063,-0.483275,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169,
+ 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ 0.58512,-0.108234,-0.803692,2.422296,-1.510915,-0.494169,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ 0.518786,-0.204527,-0.830078,2.249663,-1.492705,-0.53127,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.112446,-0.61866,-0.77757,2.928787,-1.107467,-0.312054,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ 0.276661,-0.626708,-0.728489,2.893096,-1.302168,-0.332049,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378,
+ 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ 0.883063,-0.251635,-0.396079,2.721135,-1.520418,-0.362378,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ 0.918784,-0.122699,-0.375208,2.545261,-1.5933,-0.38631,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ 0.876436,-0.293555,-0.381688,2.396607,-1.593239,-0.389972,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ 0.728904,-0.519576,-0.445802,2.243492,-1.584783,-0.431143,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789,
+ 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597,
+ 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485,
+ 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975,
+ 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493,
+ 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ 0.189478,-0.558571,-0.807525,2.960118,-0.941827,-0.284743,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.245892,-0.489895,-0.836385,2.670253,-1.108365,-0.544018,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.430574,-0.353967,-0.830249,2.710721,-0.830091,-0.532493,
+ 0.539192,-0.226204,-0.811236,2.857666,-0.930625,-0.391195,
+ 0.709718,-0.453838,-0.538824,2.669281,-0.930664,-0.557166,
+ 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485,
+ 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975,
+ 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597,
+ 0.720876,-0.356662,-0.594247,2.637655,-0.768176,-0.637039,
+ 0.771881,-0.100912,-0.627707,2.647368,-0.61155,-0.669485,
+ 0.295093,-0.940225,-0.16999,2.82554,-0.567578,-0.552597,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.08136,-0.929085,-0.360806,2.910769,-0.638444,-0.431191,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.676544,-0.141883,-0.722604,2.993075,-0.708434,-0.342596,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.667276,-0.159228,-0.727591,3.045715,-0.767786,-0.261741,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188,
+ 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242,
+ -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857,
+ -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511,
+ -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908,
+ -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191,
+ 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191,
+ -0.4144,-0.844957,-0.338113,-0.422877,-1.7512,-0.823423,
+ 0.100949,-0.548551,-0.830001,-0.564074,-1.789401,-0.803191,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908,
+ -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.150892,-0.83775,-0.524792,-0.680046,-1.768325,-0.81908,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511,
+ -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154,
+ -0.11636,-0.749063,-0.6522,-1.091175,-1.70712,-0.727242,
+ -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033,
+ -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ 0.162276,-0.745105,-0.646905,-1.226563,-1.655159,-0.687343,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.068777,-0.757383,-0.649339,-0.543078,-1.810473,-0.563825,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ 0.248915,-0.807091,-0.535392,-0.112666,-1.806584,-0.383324,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ 0.023352,-0.872807,-0.487506,-0.523838,-1.850065,-0.388007,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ -0.351476,-0.711504,-0.608463,-1.089642,-1.757196,-0.685154,
+ -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.468954,-0.586277,-0.660577,-0.812845,-1.785424,-0.768511,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.231653,-0.530839,-0.815198,-0.972089,-1.774507,-0.76857,
+ -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225,
+ -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851,
+ 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111,
+ 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111,
+ 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111,
+ -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794,
+ -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794,
+ 0.526213,0.349004,-0.775433,1.721745,-3.116887,-0.979111,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ -0.874488,-0.088621,-0.476882,1.709173,-3.133145,-0.80794,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ 0.43768,-0.823149,0.361748,2.021366,-2.881725,-0.945561,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ -0.1083,-0.048546,0.992932,1.911792,-2.895773,-0.950117,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ -0.496829,-0.096649,-0.86245,1.848272,-2.92726,-0.996966,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ -0.044013,0.340434,-0.939238,1.806371,-2.949735,-0.984058,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ 0.57446,0.218241,-0.788902,1.802387,-3.089615,-0.961851,
+ -0.088841,0.02472,-0.995739,1.735077,-3.022732,-0.972751,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ -0.967491,-0.143323,0.208372,1.741854,-3.114181,-0.700705,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ 0.81992,-0.126246,0.558385,1.945632,-2.87671,-0.703118,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ 0.963394,-0.268066,-0.003702,1.857471,-2.950722,-0.669988,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ -0.343436,-0.507052,0.790537,1.776024,-2.980086,-0.707575,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563,
+ 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048,
+ 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048,
+ 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139,
+ -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ 0.000667,0.002295,-0.999997,-3.169489,-2.110039,-1.076796,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ 0.81802,-0.47123,-0.329827,-3.117476,-1.866892,-1.108034,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ -0.820357,0.160676,-0.548815,-3.177824,-2.279173,-1.04758,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366,
+ -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.156447,-0.088128,-0.983747,-3.207447,-2.103206,-1.071366,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ -0.019303,-0.142974,-0.989538,-3.281816,-2.305055,-1.001878,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104,
+ 0.422569,-0.18743,-0.886739,-3.327526,-2.075729,-1.005328,
+ -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ -0.906134,0.012265,0.422812,-3.068444,-2.260195,-1.03507,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ 0.461464,-0.003303,-0.887153,-3.047974,-2.109628,-1.063497,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ 0.247956,0.087485,0.964813,-3.010917,-1.884498,-1.08351,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353,
+ 0.24139,0.178826,0.953809,-2.918293,-1.904184,-1.004659,
+ 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ -0.765488,-0.115048,-0.633082,-2.969687,-2.097941,-0.982836,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ -0.779685,0.025369,-0.625657,-3.007483,-2.270712,-0.984279,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572,
+ 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208,
+ 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353,
+ 0.937141,-0.149709,-0.315204,-2.981187,-2.142718,-0.858353,
+ 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994,
+ 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.567578,-0.469833,0.6761,-3.040398,-2.156239,-0.808208,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ 0.890357,-0.340018,0.302742,-3.120761,-2.15777,-0.766432,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994,
+ 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ 0.257818,-0.230014,0.938415,-3.253309,-2.137354,-0.760713,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ 0.148388,-0.325205,0.933929,-3.235873,-2.335338,-0.820588,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ -0.050511,-0.258376,0.964723,-3.381262,-1.828189,-0.697034,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.042094,-0.220101,0.974568,-3.422698,-2.070796,-0.773898,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ -0.085416,-0.081635,0.992995,-3.339489,-2.328145,-0.827572,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.35872,0.092902,-0.928811,-3.389388,-2.305625,-0.950348,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ -0.401279,-0.250965,0.880904,-3.412068,-2.356105,-0.865813,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ -0.51975,0.138222,-0.843063,-3.498521,-1.762078,-0.762472,
+ -0.453746,-0.057149,-0.889297,-3.451965,-2.077314,-0.931974,
+ -0.348227,-0.192528,0.917426,-3.463753,-2.079892,-0.844667,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.424393,0.057227,-0.903668,-3.49052,-1.760417,-0.903104,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.136917,-0.20176,-0.969818,1.648793,-2.280014,-0.929365,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.17902,-0.308668,-0.934171,1.6249,-2.087301,-0.963391,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ -0.739347,0.031953,-0.672566,1.572979,-1.827591,-0.985823,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ -0.4008,-0.167777,-0.900672,1.586321,-2.273752,-0.880969,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ -0.417424,-0.199203,-0.886609,1.529305,-2.092083,-0.887353,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.521685,-0.261319,-0.812131,1.508714,-1.808578,-0.934359,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.883058,-0.239959,-0.403273,1.60129,-2.267132,-0.787696,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ -0.872722,-0.174901,-0.455813,1.544087,-2.080722,-0.786432,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.874358,-0.225285,-0.429819,1.473886,-1.818947,-0.799576,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601,
+ 0.186476,0.252953,-0.949337,1.960643,-2.71286,-0.90089,
+ 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ -0.274087,0.000043,0.961705,2.021591,-1.755289,-0.912093,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.985192,-0.12583,0.116459,1.930747,-2.463535,-0.894743,
+ 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.957938,-0.285979,-0.023877,2.013095,-2.051912,-0.911043,
+ 0.996811,-0.048518,0.063355,1.98533,-2.221319,-0.893145,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ -0.069043,-0.157333,-0.985129,1.771416,-2.769024,-0.9461,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601,
+ 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ 0.820312,-0.193024,-0.538358,1.880971,-2.733242,-0.8902,
+ -0.845931,-0.255219,0.468256,1.830669,-2.736121,-0.903313,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ -0.09542,0.162222,-0.98213,1.717145,-1.80953,-1.004092,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ 0.109483,-0.310605,-0.944213,1.720031,-2.105568,-0.971354,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ 0.039,-0.185675,-0.981837,1.710406,-2.272223,-0.954296,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ -0.051713,-0.100832,-0.993559,1.737623,-2.485017,-0.918334,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.473622,-0.284001,-0.833682,1.818846,-1.756976,-1.023593,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.159615,0.129847,-0.978602,1.941767,-1.759457,-0.997454,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ 0.459595,-0.144347,-0.87632,1.839224,-2.109267,-0.998351,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ 0.830793,-0.244757,-0.499878,1.918641,-2.083654,-1.001275,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ 0.431429,-0.109339,-0.895497,1.818266,-2.313852,-0.968652,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.407719,-0.190267,-0.893064,1.801127,-2.48469,-0.938593,
+ 0.846555,-0.103661,-0.52211,1.90637,-2.282284,-0.964887,
+ 0.843062,-0.10517,-0.527433,1.864064,-2.469953,-0.935601,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ 0.193853,0.161608,-0.967628,1.596751,-1.722028,-0.684655,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ -0.819257,-0.566976,-0.085772,1.643403,-2.076583,-0.689565,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ -0.912869,-0.285577,-0.291747,1.663494,-2.485963,-0.790773,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ 0.056398,-0.684481,0.726846,1.736425,-2.743683,-0.736866,
+ -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.671694,-0.023528,-0.740455,2.057496,-2.887282,-0.844225,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.990285,-0.10079,0.095796,2.001343,-2.847715,-0.762517,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ 0.975634,-0.187232,0.114377,1.841282,-2.716008,-0.708009,
+ 0.751149,0.43192,0.49922,1.884318,-2.724404,-0.701999,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ 0.601229,-0.111152,0.791308,1.828658,-2.477348,-0.67347,
+ -0.898389,-0.217201,0.381735,1.677597,-2.237953,-0.696318,
+ -0.887036,-0.210048,0.411154,1.756349,-2.446399,-0.705428,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ -0.062994,-0.00854,0.997977,1.972647,-2.728848,-0.772496,
+ -0.247433,-0.24804,-0.936618,1.994078,-2.713047,-0.824553,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.382074,-0.25681,0.887732,1.740323,-1.67983,-0.664098,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ 0.972392,0.232654,-0.018037,2.053108,-1.738285,-0.824853,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ -0.924461,-0.213386,0.315973,1.991892,-1.7484,-0.65277,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ -0.732521,-0.474279,-0.488336,2.047696,-2.050138,-0.814712,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ -0.845196,-0.27877,-0.455994,2.02453,-2.195334,-0.811284,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ -0.587844,-0.244917,-0.771009,1.953911,-2.462233,-0.830594,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ -0.943599,-0.160394,0.289646,1.947264,-2.443232,-0.732587,
+ -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ 0.608407,-0.244593,-0.754993,2.158051,-1.209613,-0.783941,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ -0.157802,-0.148625,-0.976222,2.141273,-1.234642,-0.941254,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.329905,-0.225598,-0.916661,2.099566,-1.259996,-1.055763,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.661097,-0.258238,-0.70446,1.966698,-1.22816,-1.153716,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ -0.632119,-0.359381,-0.686491,1.805207,-1.268427,-1.165317,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ 0.942118,-0.292663,-0.163592,1.601721,-1.262359,-1.14142,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.772916,-0.305378,-0.556189,1.49748,-1.283201,-1.088258,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.38578,-0.259547,-0.88533,1.430817,-1.301205,-1.024924,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ 0.051664,-0.122235,-0.991156,1.804927,-1.581954,-1.089198,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ -0.672688,-0.442616,-0.592944,1.801794,-1.465464,-1.129277,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ 0.290478,-0.146424,-0.945612,1.937009,-1.625419,-1.026843,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ -0.759627,-0.28527,-0.584455,1.974215,-1.469208,-1.068951,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ 0.74023,-0.090866,-0.666185,2.036036,-1.57908,-0.967151,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ -0.498756,-0.2241,-0.83727,2.071448,-1.410118,-1.006192,
+ -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ -0.239734,-0.173966,-0.955125,2.111557,-1.376942,-0.89657,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ 0.999491,-0.02584,-0.01873,2.059844,-1.561331,-0.858957,
+ 0.727678,-0.414895,-0.546211,2.126237,-1.330172,-0.721011,
+ 0.437631,-0.408484,-0.801012,2.0796,-1.473377,-0.654997,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ 0.70745,-0.193334,-0.679806,2.180012,-1.130557,-0.821812,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.587909,-0.233166,-0.774594,1.838895,-1.087204,-1.201408,
+ -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.571338,-0.120921,-0.811758,2.024692,-1.074646,-1.172465,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ -0.182029,-0.190207,-0.964721,2.148553,-1.103067,-1.06541,
+ -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647,
+ -0.019419,-0.11596,-0.993064,2.17745,-1.127765,-0.974416,
+ -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ 0.954473,-0.270031,-0.126745,1.612396,-1.485728,-1.099731,
+ -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ -0.211092,-0.082708,-0.973961,1.650318,-1.645881,-1.053347,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ 0.80128,-0.303744,-0.515451,1.5167,-1.45305,-1.068516,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ 0.441315,-0.29978,-0.845797,1.454817,-1.430228,-0.976569,
+ -0.652584,-0.147678,-0.743186,1.54175,-1.643613,-1.01419,
+ -0.970971,-0.219011,-0.096178,1.480629,-1.640132,-0.953447,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ 0.924702,-0.311562,-0.218757,1.645819,-1.087442,-1.173773,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.73827,-0.277136,-0.614942,1.524407,-1.125312,-1.142248,
+ 0.366416,-0.175098,-0.913827,1.438439,-1.148029,-1.098069,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.889638,-0.392482,0.233458,2.985371,1.982663,0,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ 0.889638,-0.392482,0.233458,2.985371,1.982663,0,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.449624,0.075438,-0.890027,3.053144,-0.609681,-0.326931,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.533629,-0.162705,-0.82992,3.107533,-0.691019,-0.264602,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.889638,-0.392482,0.233458,2.985371,1.982663,0,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ 0.441787,-0.375177,-0.814903,3.009101,1.971604,-0.03422,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.45552,-0.330524,-0.826593,2.715712,1.828219,-0.167709,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.483908,-0.405185,-0.775667,3.036361,1.913989,-0.169838,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.489736,-0.346185,-0.800197,2.738132,1.687333,-0.295046,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.482381,-0.398126,-0.780259,3.058366,1.773346,-0.297337,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ 0.5205,-0.336657,-0.784692,2.77568,1.53871,-0.352829,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ 0.702554,-0.570096,-0.42592,3.086666,1.632991,-0.338863,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ 0.760747,-0.509474,-0.40212,2.815366,1.377583,-0.413399,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ -0.317114,0.866865,-0.384686,3.115383,1.49239,-0.380228,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ -0.16423,0.819635,-0.548842,2.854291,1.093951,-0.49465,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ -0.273708,0.760234,-0.589175,3.163181,1.209972,-0.462438,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ -0.043323,0.541029,-0.839887,2.948387,0.783357,-0.515058,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ -0.158888,0.47696,-0.864444,3.189664,0.907503,-0.500122,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ 0.04432,0.372862,-0.926828,3.06109,0.397226,-0.574193,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ -0.095989,0.297871,-0.949768,3.280681,0.510802,-0.499434,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ 0.098376,0.32868,-0.939304,3.136321,0.171237,-0.539896,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ -0.078774,0.27578,-0.957987,3.321825,0.26669,-0.46575,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ 0.159882,0.223439,-0.961516,3.16616,0.02131,-0.457261,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ -0.027323,0.180938,-0.983115,3.36004,0.165487,-0.412685,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.224429,0.165293,-0.96037,3.199571,-0.153739,-0.38015,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.065337,0.07376,-0.995133,3.378799,0.073736,-0.355362,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ 0.331391,0.08899,-0.939287,3.286426,-0.300744,-0.276331,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.445439,-0.182623,-0.876489,3.342159,-0.384674,-0.201349,
+ 0.226651,-0.023678,-0.973688,3.43895,-0.08258,-0.257015,
+ 0.383941,-0.196382,-0.902232,3.514981,-0.121886,-0.187589,
+ 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ 0.07924,-0.231862,-0.969516,3.955635,0.432417,-0.197586,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ 0.325831,-0.277459,-0.903798,3.737014,0.181837,-0.176819,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.081635,-0.03459,-0.996062,3.889626,0.475277,-0.247365,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ 0.144017,-0.141696,-0.979378,3.700363,0.265794,-0.240762,
+ -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.023695,0.006701,-0.999697,3.67471,0.338839,-0.30784,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.178707,0.132414,-0.974951,3.861841,0.560638,-0.311961,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.128537,0.152973,-0.979835,3.641195,0.407454,-0.362198,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.21777,0.161093,-0.962614,3.849352,0.664451,-0.387198,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.175197,0.22468,-0.958553,3.61965,0.472046,-0.391742,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.273816,0.228927,-0.93414,3.823137,0.853054,-0.461519,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.203969,0.261593,-0.94338,3.559394,0.706516,-0.452535,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.385487,0.478576,-0.788901,3.747724,1.184933,-0.518662,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.270788,0.46353,-0.84369,3.528445,1.060127,-0.489443,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ -0.447812,0.698934,-0.557634,3.650974,1.46374,-0.478617,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ -0.354832,0.724971,-0.590348,3.47341,1.366149,-0.454658,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ -0.463441,0.825581,-0.321928,3.590526,1.70109,-0.411994,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ -0.384424,0.863444,-0.326623,3.377233,1.5878,-0.400781,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ 0.492397,-0.77993,-0.386336,3.541188,1.849183,-0.386366,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ 0.673211,-0.58089,-0.457551,3.337545,1.748927,-0.34021,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ 0.313443,-0.691245,-0.651102,3.479418,1.97825,-0.317478,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ 0.454048,-0.464454,-0.760344,3.276333,1.863773,-0.294266,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ 0.161194,-0.480657,-0.861966,3.460196,2.103494,-0.180368,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.020519,-0.282941,-0.958918,3.4583,2.151656,-0.102662,
+ 0.428291,-0.499911,-0.752765,3.252224,2.026347,-0.148215,
+ 0.261393,-0.399072,-0.878872,3.233975,2.059193,-0.072431,
+ 0.486425,0.192908,-0.852161,2.986408,-0.413503,-0.428964,
+ 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.177367,0.480226,-0.859025,2.811504,0.469098,-0.657443,
+ 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.288711,0.386915,-0.875753,2.898733,0.271916,-0.651298,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.519338,0.264458,-0.812619,2.953029,-0.12769,-0.520499,
+ 0.016767,-0.927537,-0.373356,2.835437,-0.231101,-0.57789,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.41428,0.318289,-0.852681,2.91987,0.084875,-0.64246,
+ 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527,
+ 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.908163,-0.140074,-0.394486,2.5392,-0.727778,-0.750475,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.907314,0.09913,-0.4086,2.618307,-0.549092,-0.805491,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975,
+ 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ 0.788801,-0.19938,-0.581412,2.514162,0.988713,-0.674527,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.804239,-0.153549,-0.574128,2.604217,0.728827,-0.769671,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.742962,-0.255405,-0.618688,2.70696,0.393597,-0.849582,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.241303,0.584583,-0.77462,2.753156,0.400829,-0.713141,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.722145,-0.312679,-0.617041,2.731512,0.219003,-0.891585,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.462789,0.48004,-0.745243,2.790681,0.219187,-0.718263,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.636794,0.461927,-0.617346,2.734183,0.038769,-0.86581,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.539114,0.412574,-0.734261,2.790657,0.044324,-0.717488,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.759315,0.386803,-0.523282,2.702577,-0.197406,-0.795611,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.85208,0.278905,-0.442914,2.690576,-0.368057,-0.819343,
+ 0.696162,0.333274,-0.635835,2.743995,-0.129852,-0.718277,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ 0.072694,0.752739,-0.654294,2.679445,0.687427,-0.720573,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ 0.040193,0.650965,-0.758043,2.747937,0.712253,-0.615674,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.474213,-0.311965,-0.823286,2.361089,1.76666,-0.202595,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.488174,-0.280956,-0.826287,2.406969,1.645328,-0.341479,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.531574,-0.288506,-0.796362,2.519027,1.485931,-0.422962,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ -0.071584,0.92252,-0.379253,2.542439,0.999928,-0.648592,
+ 0.769657,-0.480833,-0.420033,2.553871,1.284278,-0.512335,
+ -0.080985,0.883253,-0.461851,2.637461,1.01726,-0.581611,
+ -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824,
+ 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.598679,-0.200355,-0.775527,2.183003,1.65407,-0.341767,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.561098,-0.272385,-0.781649,2.301359,1.397721,-0.546015,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.752227,-0.484776,-0.446258,2.396355,1.242239,-0.597722,
+ 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.906617,-0.14387,-0.39667,2.482917,0.997637,-0.702425,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.900366,-0.205985,-0.38329,2.5704,0.738683,-0.830405,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.815771,-0.424495,-0.392838,2.616001,0.447717,-0.960748,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.718673,-0.290446,-0.631784,2.668936,0.206182,-1.014371,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797,
+ 0.614456,0.489786,-0.618509,2.649413,0.031535,-1.024796,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.662294,0.443714,-0.603725,2.60743,-0.208248,-0.974218,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.69338,0.351142,-0.629224,2.594499,-0.422948,-0.981263,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ 0.748939,0.152982,-0.644738,2.543372,-0.548031,-0.937182,
+ 0.795625,-0.129968,-0.591684,2.410367,-0.777999,-0.841105,
+ -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824,
+ -0.012663,0.029084,-0.999497,2.229345,-0.992723,-0.862826,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ -0.096144,-0.182414,-0.97851,2.292449,-0.871852,-0.8824,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.525142,-0.062799,-0.848694,2.346081,-0.74535,-1.013296,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.449887,0.239006,-0.860511,2.384638,-0.591919,-1.043058,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797,
+ 0.397823,0.403779,-0.823832,2.439827,-0.395385,-1.131324,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.387987,0.466054,-0.795148,2.452588,-0.244072,-1.138797,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.387394,0.516219,-0.763835,2.50049,-0.035029,-1.170179,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.328244,0.603536,-0.726637,2.495354,0.250522,-1.132081,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.187431,0.691784,-0.697355,2.448969,0.529858,-1.037335,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.065855,0.814333,-0.576649,2.399389,0.782091,-0.915279,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.628361,-0.426126,-0.65083,2.347317,1.066114,-0.758763,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.697438,-0.478568,-0.533435,2.266003,1.273253,-0.663332,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.772313,-0.244122,-0.586461,2.189848,1.468992,-0.517501,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ 0.805898,-0.146097,-0.573745,2.096552,1.678482,-0.32681,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ 0.383978,-0.566345,-0.729256,0.480235,-1.631521,-0.401961,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394,
+ 0.779025,-0.626993,0,1.456656,1.785879,0,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.513731,-0.239493,-0.823847,1.807583,1.756546,-0.177627,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108,
+ 0.506924,-0.406124,-0.760323,1.798719,1.714447,-0.259352,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ 0.552632,-0.484765,-0.677938,1.821946,1.618209,-0.403751,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ 0.696414,-0.392791,-0.600602,1.859443,1.450393,-0.632222,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ 0.026499,0.942993,-0.331757,1.958254,1.130271,-0.861813,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ 0.019336,0.837694,-0.545798,1.975941,0.827957,-1.018423,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ 0.052979,0.780732,-0.622616,2.023441,0.529338,-1.144399,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ 0.115383,0.694944,-0.709746,2.0817,0.283249,-1.259461,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ 0.146937,0.551946,-0.820832,2.14179,-0.055306,-1.295565,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ 0.12555,0.440005,-0.889176,2.136269,-0.187666,-1.278057,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ 0.10998,0.376752,-0.919762,2.108912,-0.357128,-1.259691,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ -0.809154,0.004832,-0.587577,2.158585,-0.955809,-1.113647,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.561574,-0.148323,-0.814024,2.245624,-0.864372,-0.995778,
+ -0.742985,0.015712,-0.669123,2.222082,-0.957342,-1.014137,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ -0.965506,-0.176768,0.191185,2.058189,-0.931238,-1.163518,
+ -0.942755,-0.29871,0.148273,1.867657,-0.920633,-1.206933,
+ 0.097864,0.250653,-0.963118,2.013534,-0.662303,-1.191491,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ -0.794709,-0.185222,0.578041,1.451825,-1.576856,-0.702758,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.084936,-0.226589,0.97028,1.963153,-1.588839,-0.612861,
+ 0.552828,-0.750794,-0.36151,2.0482,-1.581983,-0.555832,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ -0.493424,-0.165611,0.853877,1.599889,-1.595526,-0.623185,
+ -0.217942,-0.897186,0.384134,1.721211,-1.590185,-0.601932,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ 0.080262,-0.270606,-0.959339,1.328862,-1.352627,-0.758733,
+ 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ 0.023392,-0.110333,-0.993619,1.310865,-1.136322,-0.914838,
+ 0.02992,-0.202031,-0.978922,1.348219,-1.282064,-0.845204,
+ -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494,
+ 0.859237,-0.17312,-0.481395,1.635139,-0.965221,-1.184968,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ -0.031021,0.098798,-0.994624,1.644178,-0.857872,-1.208494,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ 0.714393,-0.109998,-0.691045,1.536037,-0.985876,-1.185597,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ -0.039079,0.203923,-0.978207,1.640095,-0.674556,-1.246804,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.779025,-0.626993,0,1.456656,1.785879,0,
+ 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ -0.185127,-0.491394,-0.851035,1.223415,-1.532658,-0.434522,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ 0.213167,-0.525559,-0.823619,0.912989,-1.499314,-0.419547,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ -0.148631,-0.373855,-0.915501,1.210555,-1.460061,-0.576841,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ 0.23972,-0.400363,-0.884445,0.912699,-1.455066,-0.576185,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ -0.305786,-0.232288,-0.923329,1.19204,-1.330605,-0.678707,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ 0.25339,-0.287519,-0.923648,0.922703,-1.296032,-0.728307,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.102263,-0.969566,-0.222452,1.219163,-1.218342,-0.823029,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.187438,-0.340915,-0.921219,0.93066,-1.216516,-0.831196,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643,
+ 0.120054,-0.825719,-0.551157,1.230116,-1.085439,-0.894543,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643,
+ 0.114032,-0.218132,-0.969234,0.956456,-1.070504,-0.921063,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.152876,-0.742504,-0.652163,1.252961,-0.928825,-1.001643,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.10833,0.05569,-0.992554,0.939974,-0.894739,-1.019809,
+ 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.107989,0.168108,-0.979836,0.948819,-0.638568,-1.102958,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ 0.088722,0.251367,-0.963817,0.97453,-0.525273,-1.140353,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ -0.026262,0.311275,-0.949957,1.678622,-0.410061,-1.291177,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ 0.060533,0.377837,-0.923891,0.960321,-0.308052,-1.243133,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ -0.02226,0.394285,-0.918719,1.664159,-0.189659,-1.266729,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ 0.016737,0.497476,-0.867316,0.943855,-0.101127,-1.274771,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ -0.05128,0.509983,-0.858655,1.660355,0.019397,-1.246002,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ -0.024013,0.58573,-0.810151,0.950215,0.042751,-1.256188,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ -0.046579,0.627301,-0.777383,1.649027,0.224458,-1.211969,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ -0.057955,0.638634,-0.767325,0.927775,0.195225,-1.233043,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818,
+ -0.047373,0.758242,-0.65025,1.63008,0.420236,-1.172369,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818,
+ -0.069142,0.724976,-0.685295,0.939271,0.379986,-1.185872,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ -0.055544,0.828008,-0.557959,1.582203,0.771083,-1.06818,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ -0.06371,0.842533,-0.534864,0.921312,0.755659,-0.99933,
+ 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ 0.791391,-0.43807,-0.426373,0.857323,0.985001,-0.874029,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ -0.070642,0.834207,-0.546908,1.570685,0.938327,-0.989108,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ 0.623235,-0.257987,-0.738255,0.760722,1.205036,-0.700545,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ -0.061264,0.921927,-0.382487,1.517126,1.334367,-0.741076,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ 0.631747,-0.24686,-0.734817,0.725959,1.478055,-0.461804,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108,
+ 0.304965,-0.136677,-0.942505,1.504951,1.483493,-0.585976,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.218538,-0.213954,-0.952084,1.497138,1.618935,-0.401108,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.659349,-0.248914,-0.709437,0.737904,1.604213,-0.281713,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.12742,0.021045,-0.991626,1.462507,1.745481,-0.222394,
+ 0.206882,-0.117024,-0.971342,1.483832,1.697594,-0.288781,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ 0.335626,-0.735806,-0.588171,-0.221516,1.686349,-0.151403,
+ -0.208715,-0.624734,-0.752427,0.223642,1.684075,-0.160743,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ 0.303379,-0.73119,-0.611002,-0.267035,1.627058,-0.266577,
+ -0.251063,-0.683027,-0.685888,0.23733,1.595746,-0.288672,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ 0.298349,-0.828641,-0.473647,-0.247999,1.565146,-0.389142,
+ -0.252973,-0.819125,-0.51482,0.289039,1.496446,-0.430055,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ 0.267279,-0.944479,-0.191107,-0.179548,1.471301,-0.544513,
+ -0.13716,-0.98063,-0.139827,0.305671,1.298417,-0.629719,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ 0.029207,0.916877,-0.398099,-0.192546,1.305535,-0.70008,
+ 0.007127,0.896038,-0.44392,0.243473,1.134082,-0.819993,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ 0.051939,0.876473,-0.478641,-0.406155,1.005088,-0.971088,
+ 0.009434,0.815301,-0.578961,0.316341,0.785311,-1.08626,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ 0.092427,0.86666,-0.490263,-0.11519,0.458427,-1.346197,
+ 0.040473,0.760778,-0.647749,0.539252,0.353984,-1.254493,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.129186,0.757141,-0.64035,0.005537,0.163519,-1.472265,
+ 0.080812,0.697931,-0.711591,0.53915,0.148262,-1.321014,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.101272,0.634315,-0.766413,0.018086,0.002865,-1.523199,
+ 0.09853,0.626571,-0.773111,0.516872,-0.020713,-1.356627,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.089104,0.59547,-0.798421,0.034087,-0.225059,-1.542949,
+ 0.111825,0.518485,-0.847743,0.542386,-0.188227,-1.370375,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.147941,0.53134,-0.834141,0.010486,-0.502317,-1.576297,
+ 0.163727,0.387435,-0.907242,0.546875,-0.39094,-1.363244,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.206788,0.399922,-0.892917,0.021051,-0.831931,-1.511548,
+ 0.227108,0.258715,-0.938876,0.550658,-0.633015,-1.331311,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.246802,0.252523,-0.935586,-0.04157,-1.143825,-1.395176,
+ 0.263434,0.119819,-0.957207,0.527724,-0.862854,-1.253811,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.274567,0.116527,-0.954481,-0.071941,-1.346991,-1.237379,
+ 0.304293,-0.024391,-0.952266,0.544825,-1.133123,-1.096902,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.303729,-0.050718,-0.951408,-0.0723,-1.450245,-1.087397,
+ 0.372063,-0.134052,-0.918477,0.530629,-1.316423,-0.929842,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.33122,-0.270106,-0.904067,-0.063012,-1.583021,-0.865082,
+ 0.424286,-0.254348,-0.869073,0.538756,-1.408602,-0.764911,
+ 0.420794,-0.405156,-0.811653,0.489819,-1.524947,-0.672392,
+ 0.291858,-0.681117,-0.67149,-0.094135,-1.769086,-0.556924,
+ 0.327725,-0.489439,-0.808112,-0.07847,-1.688266,-0.80023,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.004725,-0.680391,-0.732834,-0.894132,1.712652,-0.151911,
+ 0.235033,-0.721825,-0.650944,-0.559706,1.69418,-0.186107,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.034172,-0.858604,-0.511498,-0.954897,1.677544,-0.293034,
+ 0.244106,-0.79539,-0.554768,-0.557624,1.641278,-0.271462,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.037423,-0.986705,-0.158154,-1.017767,1.607824,-0.541965,
+ 0.213948,-0.943673,-0.252405,-0.626493,1.585426,-0.443136,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.013768,-0.992402,-0.122267,-1.04607,1.509097,-0.76106,
+ 0.190577,-0.970681,-0.146488,-0.597781,1.48962,-0.641047,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.076524,0.950336,-0.301672,-1.115594,1.39238,-0.819623,
+ 0.048754,0.934073,-0.353738,-0.674657,1.333008,-0.761059,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.100598,0.942931,-0.317428,-1.278903,1.192051,-0.946843,
+ 0.081223,0.915345,-0.394394,-0.910602,1.204118,-0.83774,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.150328,0.92948,-0.336851,-1.200768,0.978822,-1.103391,
+ 0.120116,0.912706,-0.390565,-0.969076,0.901205,-1.146223,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.235667,0.756618,-0.60991,-1.147922,0.807955,-1.254191,
+ 0.1717,0.74071,-0.649514,-0.752416,0.438132,-1.467349,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.305452,0.425365,-0.851918,-1.120716,0.424016,-1.45699,
+ 0.167704,0.495674,-0.852164,-0.645496,0.179261,-1.584316,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.325482,0.443544,-0.835063,-1.077307,0.165008,-1.553393,
+ 0.140536,0.558684,-0.817388,-0.536767,-0.144454,-1.682232,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.242426,0.58207,-0.77616,-1.053434,-0.342553,-1.690245,
+ 0.136523,0.621747,-0.771228,-0.533528,-0.58228,-1.701405,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ 0.070189,0.510248,-0.857158,-1.077209,-0.869649,-1.633144,
+ 0.100131,0.509748,-0.854477,-0.505045,-0.913827,-1.645612,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ -0.078623,0.370994,-0.925301,-1.061272,-1.141877,-1.49623,
+ 0.063174,0.351351,-0.93411,-0.487217,-1.193519,-1.504026,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ -0.123389,0.256577,-0.958615,-1.001366,-1.335897,-1.353338,
+ 0.078896,0.195617,-0.977502,-0.524231,-1.399266,-1.313019,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ 0.10737,-0.293005,-0.950063,-0.535144,-1.615983,-0.920556,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ 0.097816,-0.016117,-0.995074,-0.526127,-1.495,-1.167736,
+ 0.769758,0.095155,-0.631204,2.688131,-0.517509,-0.672975,
+ 0.763734,0.228435,-0.603761,2.736198,-0.346225,-0.659345,
+ 0.226413,-0.89822,-0.376747,2.881063,-0.493146,-0.521968,
+ 0.594643,-0.107364,-0.796789,2.663024,-1.440487,-0.478149,
+ 0.655995,-0.105886,-0.747301,2.740886,-1.339225,-0.463604,
+ 0.690473,-0.61586,-0.379425,2.824356,-1.407256,-0.355013,
+ 0.184661,-0.694307,-0.695585,1.373216,-0.56462,-1.106245,
+ 0.419396,-0.035927,-0.907092,1.428883,-0.98669,-1.133905,
+ 0.045651,-0.004499,-0.998947,1.337875,-0.945716,-1.021299,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ -0.267766,-0.862787,-0.428835,-1.215563,1.757097,-0.133494,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.263452,-0.648591,-0.714089,-1.227613,1.709095,-0.276029,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ -0.301558,-0.77828,-0.550766,-1.292756,1.656509,-0.51403,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ -0.154129,-0.981148,-0.116585,-1.338488,1.613735,-0.725441,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ 0.095331,0.952335,-0.289775,-1.403848,1.533059,-0.902827,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.10291,0.954344,-0.280422,-1.551526,1.400025,-1.050193,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.172251,0.950689,-0.257916,-1.552899,1.128654,-1.15104,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ 0.28101,0.853935,-0.437982,-1.454529,0.875045,-1.238858,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ 0.381239,0.555717,-0.738807,-1.405685,0.573835,-1.352181,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ 0.376012,0.360026,-0.853813,-1.479588,0.295746,-1.440042,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ 0.207079,0.373404,-0.904261,-1.489699,-0.024215,-1.510987,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ -0.045242,0.348413,-0.936249,-1.395501,-0.698702,-1.553257,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ -0.212948,0.334057,-0.918182,-1.376176,-0.948757,-1.451608,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ -0.282152,0.285245,-0.915983,-1.402349,-1.127845,-1.309055,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ -0.507894,-0.767261,-0.391606,-1.365948,1.769608,-0.133901,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ -0.375453,-0.69207,-0.616502,-1.396332,1.723782,-0.267642,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ -0.1427,-0.847733,-0.510868,-1.417595,1.67618,-0.529265,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ -0.178511,-0.973481,-0.143068,-1.465432,1.655336,-0.722125,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ 0.067879,0.951186,-0.30106,-1.582187,1.567542,-0.982349,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ 0.085022,0.963119,-0.255291,-1.721806,1.391264,-1.113307,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ 0.120743,0.971588,-0.203561,-1.733703,1.083864,-1.181489,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ 0.117963,0.926753,-0.356669,-1.807421,0.657142,-1.209422,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ 0.109947,0.693426,-0.712089,-1.796156,0.452382,-1.243643,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ 0.076565,0.333251,-0.939724,-1.81092,0.287592,-1.292257,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ -0.039599,0.171847,-0.984327,-1.79513,0.033439,-1.37116,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ -0.164972,0.181757,-0.969406,-1.802864,-0.282523,-1.401315,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ -0.216817,0.278777,-0.935561,-1.837859,-0.540871,-1.295851,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ -0.219724,0.297861,-0.928978,-1.782928,-0.770786,-1.173619,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ -0.165685,0.059692,-0.98437,-0.952525,-1.440582,-1.16865,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ -0.227368,0.161984,-0.960242,-1.757573,-0.945337,-1.075832,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567,
+ -0.326048,0.118611,-0.937883,-1.407658,-1.236026,-1.11293,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ -0.387895,-0.42081,-0.820034,-1.683863,1.789041,-0.121501,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ -0.433119,-0.541143,-0.720814,-1.714432,1.747956,-0.247594,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ -0.455057,-0.684123,-0.569999,-1.744732,1.734849,-0.433807,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ -0.084259,-0.367691,-0.926123,-1.929731,1.617188,-0.80639,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.061261,0.954316,-0.292452,-1.996117,1.387891,-1.064104,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.076969,0.969253,-0.233719,-1.980388,1.134038,-1.143196,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ 0.057779,0.975002,-0.214553,-2.013663,0.810726,-1.158827,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ -0.021294,0.896295,-0.442946,-2.030191,0.547622,-1.189762,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ -0.072244,0.618144,-0.782738,-2.021159,0.411979,-1.234679,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ -0.038944,0.247819,-0.968023,-1.932916,0.232972,-1.304589,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ -0.00315,0.115338,-0.993321,-1.897394,0.037852,-1.365798,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ 0.016683,0.197618,-0.980137,-1.950547,-0.275573,-1.377028,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ 0.032424,0.316591,-0.948008,-2.033655,-0.526012,-1.277639,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ 0.053195,0.343167,-0.937767,-2.050292,-0.755566,-1.114167,
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ 0.057735,0.173734,-0.983099,-2.043593,-0.875823,-1.028879,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.088769,-0.475351,-0.875307,-2.079597,1.817785,-0.138375,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.099302,-0.563694,-0.819993,-2.10017,1.78998,-0.229245,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.093801,-0.705497,-0.702478,-2.137524,1.753182,-0.433142,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.058028,-0.329667,-0.942312,-2.172139,1.62301,-0.805318,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.096347,0.961203,-0.258467,-2.205791,1.356023,-1.081662,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ 0.098712,0.966371,-0.23745,-2.296056,1.06281,-1.171139,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ 0.079848,0.962653,-0.258695,-2.298249,0.768333,-1.203884,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ 0.031476,0.864418,-0.501788,-2.256285,0.547326,-1.238301,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ -0.004377,0.58747,-0.809234,-2.1584,0.381542,-1.272962,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ 0.044022,0.273891,-0.960753,-2.070413,0.207766,-1.335106,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ 0.136965,0.155729,-0.978258,-2.064786,0.018789,-1.411866,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ 0.173447,0.205435,-0.963178,-2.187634,-0.375454,-1.406902,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ 0.136801,0.29658,-0.945159,-2.276341,-0.689823,-1.268026,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ 0.095019,0.330845,-0.938889,-2.292049,-0.933921,-1.128136,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.079214,-0.175111,-0.981357,-2.672899,1.90511,-0.067168,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ 0.204115,-0.405276,-0.891116,-2.697367,1.871291,-0.218796,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ 0.396045,-0.47666,-0.784821,-2.703112,1.825435,-0.395127,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ 0.238702,-0.258568,-0.936037,-2.715246,1.746763,-0.604653,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ 0.11717,0.938619,-0.324447,-2.71748,1.576797,-0.875971,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ 0.080398,0.9582,-0.274571,-2.68493,1.262021,-1.11049,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ 0.069061,0.958871,-0.275312,-2.572286,0.835495,-1.252192,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ 0.051291,0.888276,-0.456438,-2.536112,0.656633,-1.269661,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.008282,0.691944,-0.721904,-2.520947,0.559036,-1.273617,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.0448,0.42163,-0.905661,-2.47375,0.300945,-1.316695,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.02449,0.224062,-0.974267,-2.433366,0.078222,-1.371269,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.017579,0.132168,-0.991072,-2.41473,-0.108377,-1.395384,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.055858,0.145868,-0.987726,-2.38292,-0.41745,-1.375045,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.115746,0.20405,-0.972094,-2.430508,-0.822313,-1.254486,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.379807,-0.084066,-0.921238,-3.519716,1.685231,-0.31713,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.373751,-0.169261,-0.911954,-3.527168,1.583508,-0.512679,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.426971,-0.09322,-0.899447,-3.512997,1.44805,-0.611386,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.457657,0.090776,-0.884483,-3.476235,1.287798,-0.704766,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.575033,0.794917,-0.193504,-3.442151,1.105486,-0.762934,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.636638,0.552106,-0.538397,-3.379131,0.767915,-0.885996,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.643784,0.341688,-0.684684,-3.306875,0.379713,-0.98762,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.646492,0.202786,-0.735477,-3.251181,0.175063,-1.053445,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.624566,0.121329,-0.77149,-3.160225,-0.018852,-1.113626,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.588581,0.130279,-0.797872,-3.101125,-0.35476,-1.162409,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.553145,0.12021,-0.824367,-3.096267,-0.6681,-1.140081,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.547788,0.055501,-0.834774,-3.122061,-0.998702,-1.065015,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153,
+ -0.563128,0.005618,-0.826351,-3.15021,-1.259588,-1.001021,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745,
+ -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745,
+ -0.6343,-0.110875,-0.765095,-3.734989,1.589433,-0.295202,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.619245,-0.050391,-0.783579,-3.697974,1.466697,-0.433432,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.549206,0.149158,-0.822268,-3.684619,1.35069,-0.501428,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.846545,0.532317,0,-3.655148,1.190938,-0.573692,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.881408,0.44424,-0.16053,-3.639878,1.015186,-0.615203,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.881352,0.261345,-0.393596,-3.582867,0.734419,-0.697787,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.880731,0.130089,-0.4554,-3.504525,0.405574,-0.847066,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.874101,0.053175,-0.482825,-3.424258,0.158638,-0.918279,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.875552,0.01506,-0.482889,-3.365413,-0.113447,-0.9524,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898,
+ -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456,
+ -0.86587,-0.001845,-0.500266,-3.290393,-0.424259,-0.984153,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.285709,0.130064,-0.949449,-2.624856,-0.8882,-1.261176,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.404056,0.117264,-0.907187,-2.937658,-1.002749,-1.219413,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.311485,0.082882,-0.94663,-2.616467,-0.511373,-1.344133,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.449233,0.123555,-0.88483,-2.901159,-0.619504,-1.284058,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.351241,0.075821,-0.93321,-2.649338,-0.241719,-1.339644,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.512472,0.102596,-0.852553,-2.90708,-0.345582,-1.281557,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.33898,0.203127,-0.918603,-2.687022,0.076781,-1.290565,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.545639,0.142044,-0.825894,-2.971546,0.032038,-1.215971,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.261543,0.44691,-0.855492,-2.787011,0.264495,-1.237352,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.539732,0.31653,-0.780063,-3.044646,0.224321,-1.164934,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ -0.169971,0.704712,-0.688833,-2.79063,0.46881,-1.224273,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ -0.505556,0.519614,-0.688778,-3.112555,0.457376,-1.084816,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ -0.088843,0.888,-0.45118,-2.825835,0.755899,-1.209042,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ -0.47652,0.732046,-0.486866,-3.19641,0.797564,-0.985913,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ -0.051905,0.965082,-0.256753,-2.930312,1.10358,-1.125876,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ -0.337275,0.918092,-0.208215,-3.244771,1.19554,-0.910945,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ -0.012448,0.906487,-0.422051,-3.028932,1.461517,-0.941324,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ 0.193955,-0.251788,-0.948148,-3.27808,1.432418,-0.853958,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ 0.1643,0.873906,-0.457487,-3.08565,1.65734,-0.784479,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ -0.004872,-0.216103,-0.976358,-3.338742,1.598933,-0.689636,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ 0.573426,-0.441087,-0.69038,-3.109047,1.789477,-0.565323,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ -0.006683,-0.232823,-0.972496,-3.395381,1.726325,-0.55477,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ -0.15812,-0.033626,-0.986847,-2.765069,-1.561164,-1.084313,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ 0.53288,-0.088285,0.841573,-2.299356,-1.025449,-1.044687,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ -0.164191,0.153328,-0.974439,-2.566746,-1.211312,-1.167101,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ 0.79444,0.150524,0.588394,-2.687162,-1.539807,-0.988048,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ -0.914496,-0.253608,0.315247,1.945206,-2.015769,-0.672724,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ -0.363523,-0.150625,0.919327,1.921881,-2.157616,-0.692678,
+ -0.53197,-0.108751,0.839751,1.747671,-2.067518,-0.638841,
+ -0.570406,-0.192005,0.798606,1.772999,-2.230292,-0.64494,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ 0.546571,-0.125171,0.828005,2.069379,1.727818,-0.212746,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ 0.547549,-0.279581,-0.788686,2.13239,1.755821,-0.180271,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.234266,0.044111,-0.971171,-2.862576,-1.546894,-1.117139,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ 0.776291,-0.374868,-0.5068,-3.23261,-1.834299,-1.087832,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ -0.390861,0.032481,-0.919876,-3.063133,-1.440555,-1.090926,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ 0.726897,-0.546446,-0.415953,-2.955052,-1.49684,-1.128812,
+ -0.387051,0.087837,-0.917865,-2.982676,-1.264649,-1.133596,
+ -0.279485,0.127803,-0.951606,-2.725776,-1.214862,-1.190384,
+ -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628,
+ -0.086361,-0.084973,-0.992634,-3.36599,-1.48517,-0.888076,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ 0.356923,-0.210291,-0.910156,-3.357996,-1.811803,-0.975625,
+ -0.032036,-0.072305,-0.996868,-3.342096,-1.533989,-0.921628,
+ -0.596319,-0.021767,-0.802452,-3.188954,-1.408279,-0.963611,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572,
+ -0.807765,-0.096776,-0.581507,-2.892438,-1.95081,-0.87812,
+ 0.26198,0.048424,0.963858,-2.837147,-1.791733,-0.921563,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ 0.773659,-0.235087,0.588375,-3.144012,-2.333635,-0.829994,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ 0.866897,-0.268351,-0.420091,-3.030605,-2.311222,-0.88433,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969,
+ 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229,
+ 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229,
+ 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229,
+ -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058,
+ -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058,
+ 0.170703,0.25395,-0.952035,-3.316551,-3.168932,-1.121229,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ -0.67011,-0.018974,-0.742019,-3.330406,-3.18519,-0.950058,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ -0.080858,0.024731,-0.996419,-2.986345,-2.93377,-1.087679,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ -0.661663,-0.02548,-0.749368,-3.107105,-2.947818,-1.092235,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ -0.833016,0.038682,-0.551896,-3.177108,-2.979305,-1.139084,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ 0.753698,-0.027204,0.656657,-3.223286,-3.00178,-1.126176,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ 0.913315,0.39776,0.087427,-3.227676,-3.14166,-1.103969,
+ 0.121953,0.140869,-0.982488,-3.301857,-3.074776,-1.114869,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ 0.517272,-0.552302,-0.653753,-3.302419,-3.017921,-1.128514,
+ 0.197648,0.486888,-0.850809,-3.333954,-3.058673,-0.974748,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ -0.178214,-0.110838,0.977729,-3.294389,-3.166225,-0.842823,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ 0.403627,0.101273,0.909301,-3.06981,-2.928755,-0.845236,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.058899,-0.007802,0.998233,-3.166971,-3.002766,-0.812106,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ -0.674431,0.094186,0.732306,-3.256731,-3.032131,-0.849693,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984,
+ 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ 0.507452,0.36284,-0.781563,-2.946527,-2.939327,-0.986343,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ 0.72114,0.258272,0.642848,-3.008412,-2.89976,-0.904635,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ -0.020456,0.943466,-0.330837,-3.32033,-2.827513,-1.063914,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ -0.354049,-0.10839,-0.928925,-3.347304,-2.573628,-0.955211,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ 0.030762,-0.124297,0.991768,-3.26181,-2.821069,-1.088218,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ 0.433219,-0.09361,-0.896414,-3.251541,-2.56405,-1.023627,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.753891,0.130682,-0.643872,-3.141072,-2.785287,-1.032318,
+ -0.637764,0.107242,-0.76273,-3.196508,-2.788166,-1.045431,
+ -0.440199,0.219838,-0.870572,-3.162498,-2.556375,-1.058409,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ -0.775358,0.344514,-0.529274,-3.078699,-2.553982,-1.046834,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ -0.156071,0.243426,-0.95728,-3.053267,-2.764905,-1.043008,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ -0.326843,-0.236652,0.91497,-3.372066,-2.569159,-0.904785,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ -0.978077,-0.070308,0.196017,-3.339637,-2.846837,-0.966368,
+ -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ 0.255431,-0.055528,0.965231,-3.297886,-2.54902,-0.861657,
+ -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ -0.556404,-0.045521,0.829664,-3.300372,-2.795728,-0.878984,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ -0.215783,-0.895808,0.388544,-3.240554,-2.555467,-0.856262,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ -0.121543,0.046,0.99152,-3.184812,-2.768053,-0.850127,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ -0.065687,-0.249194,0.966223,-3.132772,-2.528669,-0.848639,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ 0.313529,0.096126,0.944701,-3.137383,-2.776449,-0.844117,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ 0.886562,-0.46255,-0.007485,-3.04661,-2.510881,-0.900772,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ -0.501053,-0.05946,-0.863371,-3.022819,-2.52224,-0.979148,
+ 0.761939,0.13671,0.633055,-3.040038,-2.780893,-0.914614,
+ 0.484364,0.195734,-0.85269,-3.016419,-2.765091,-0.966671,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.811102,-0.12903,-0.570495,-3.319817,-1.365015,-0.886015,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.84112,-0.026303,-0.540209,-3.233333,-0.683782,-1.015512,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.813168,-0.06637,-0.578232,-3.238094,-0.979377,-0.961631,
+ -0.799953,-0.096213,-0.592299,-3.27751,-1.177346,-0.9153,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456,
+ -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.982633,-0.143429,0.11773,-3.631292,0.701013,-0.420276,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.995584,-0.070631,0.061842,-3.570384,0.385564,-0.52448,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.997475,-0.070819,0.005318,-3.520188,0.140164,-0.618561,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.980175,-0.184883,0.071243,-3.458251,-0.12595,-0.731712,
+ -0.976177,-0.17359,0.130171,-3.406618,-0.343461,-0.746456,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0,
+ -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.880002,-0.033987,-0.473752,-3.709741,1.351194,-0.211745,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.870331,0.069096,-0.487595,-3.701634,1.27265,-0.270469,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.822733,0.223687,-0.522565,-3.695872,1.156978,-0.316829,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ -0.938447,-0.345423,0,-3.672431,1.044224,-0.364991,
+ -0.946902,-0.290276,0.138264,-3.664355,0.932851,-0.370749,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ -0.891992,-0.016938,-0.451734,-3.88734,1.003866,-0.057635,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ -0.860797,0.234294,-0.451812,-3.86082,1.479723,-0.062137,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ -0.686439,0.576002,-0.443872,-3.698925,1.787941,-0.06664,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ -0.369855,0.817227,-0.441981,-3.469715,1.961504,-0.071141,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ -0.548359,-0.017804,-0.836053,-3.851206,1.007586,-0.099831,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ -0.530021,0.13773,-0.836725,-3.821694,1.477989,-0.107631,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ -0.429713,0.351913,-0.831568,-3.660928,1.770041,-0.115431,
+ 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ -0.240211,0.502412,-0.830591,-3.445903,1.923509,-0.123229,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ 0.000763,-0.01871,-0.999825,-3.80184,1.012668,-0.115288,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ -0.004656,-0.025693,-0.999659,-3.768245,1.475619,-0.124295,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ -0.020872,-0.032587,-0.999251,-3.609021,1.745588,-0.133304,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.549332,-0.018885,-0.835391,-3.752468,1.017751,-0.099865,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.516335,-0.196022,-0.833651,-3.714787,1.473248,-0.107668,
+ 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273,
+ 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ 0.368421,-0.433142,-0.82259,-3.557104,1.72113,-0.11547,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.892142,-0.018571,-0.451373,-3.716312,1.021474,-0.057693,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ 0.843387,-0.305323,-0.442128,-3.675638,1.471512,-0.062201,
+ 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.589192,-0.69056,-0.4195,-3.519086,1.70322,-0.066709,
+ 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029,
+ 0.011581,0.887039,-0.461548,-3.238225,2.005405,-0.075645,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.000909,0.669011,-0.743252,-3.227504,1.961738,-0.131029,
+ 0.005821,-0.234321,-0.972142,-3.053102,1.96881,-0.051104,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.243464,-0.335965,-0.909864,-3.077669,1.871112,-0.217368,
+ 0.49938,-0.45475,-0.737443,-3.07531,1.846,-0.363149,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724,
+ 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.897742,-0.15037,-0.414063,4.852578,1.889721,-0.605031,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.746476,-0.187741,-0.638379,4.926194,1.859813,-0.582137,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105,
+ 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515,
+ 0.560378,0.257626,-0.78715,4.944706,1.840663,-0.575374,
+ 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779,
+ 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903,
+ 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ 0.961046,0.110911,-0.253159,4.825996,2.089176,-0.576083,
+ 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978,
+ 0.274422,-0.24433,-0.930051,4.964945,2.053575,-0.499903,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.017555,-0.142899,-0.989582,5.020077,1.97817,-0.480978,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779,
+ 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ 0.762434,-0.012904,-0.646937,4.983034,1.806343,-0.505779,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ 0.683237,-0.051725,-0.728363,4.963546,1.783161,-0.553515,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105,
+ 0.675892,0.137563,-0.724049,4.908019,1.796041,-0.587882,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105,
+ -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803,
+ 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.618085,0.650911,-0.440779,5.030289,1.827419,-0.440803,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ 0.352601,0.621479,-0.699597,4.991904,1.760829,-0.510386,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ 0.171039,0.554898,-0.814146,4.936066,1.737668,-0.557276,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026,
+ -0.281999,-0.030938,-0.958916,4.871155,1.741238,-0.592326,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ -0.120429,-0.209965,-0.970264,4.816181,1.79786,-0.604026,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ -0.064166,-0.189382,-0.979805,5.00244,2.105746,-0.468233,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ -0.028502,-0.108631,-0.993673,4.927885,2.15656,-0.516579,
+ 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.267717,-0.172975,-0.947844,4.872539,2.159259,-0.542891,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393,
+ 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393,
+ 0.490646,-0.178293,-0.852923,4.798297,2.118191,-0.591085,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.787133,0.61647,0.019654,4.807794,2.143653,-0.570393,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ 0.668087,0.738269,0.092842,4.881855,2.194544,-0.530288,
+ 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329,
+ 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713,
+ -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329,
+ 0.530808,0.847432,0.010124,4.93795,2.181155,-0.486939,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ -0.212651,-0.104685,-0.971504,5.030641,2.102197,-0.432329,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327,
+ -0.222902,0.035918,-0.974179,5.085813,1.888503,-0.408327,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ 0.373808,-0.059429,-0.9256,4.89385,2.220523,-0.417713,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ 0.276212,-0.065585,-0.958856,4.995978,2.148785,-0.344534,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795,
+ 0.122987,-0.006582,-0.992386,5.06084,2.053335,-0.309324,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.041586,0.068165,-0.996807,5.097062,1.954206,-0.328795,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.035084,0.005692,-0.999368,5.105589,1.864086,-0.347113,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.269003,0.864361,-0.424874,5.058179,1.788186,-0.417387,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.532717,0.840798,-0.09629,5.019836,1.739907,-0.485562,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ 0.722741,0.690989,0.01339,4.917973,1.68148,-0.544201,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.870384,0.492055,-0.017698,4.862636,1.684144,-0.570155,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ 0.947044,0.280641,-0.156039,4.752337,1.723388,-0.591296,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.925586,0.05083,-0.375109,4.697607,1.768061,-0.576663,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428,
+ 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ 0.742633,0.65679,-0.130853,5.072165,2.04363,-0.209228,
+ 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042,
+ 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993,
+ 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042,
+ 0.681964,0.386262,-0.621069,5.127157,1.942759,-0.211214,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.584509,0.341142,-0.736187,5.152698,1.830661,-0.287042,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.577823,0.271654,-0.769626,5.133171,1.715563,-0.334258,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428,
+ 0.032152,0.123743,-0.991793,4.615408,1.639641,-0.577768,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ -0.077208,0.343417,-0.936004,4.560751,1.785154,-0.562428,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185,
+ 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888,
+ 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888,
+ 0.510305,0.850999,-0.124054,4.551484,1.841749,-0.575191,
+ 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.561002,0.750769,-0.348745,4.533113,1.989009,-0.578975,
+ 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ 0.328548,0.219459,-0.918637,4.561299,2.133066,-0.547248,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.237937,0.08172,-0.967837,5.103427,1.624404,-0.434275,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.198142,0.152918,-0.968171,4.982822,1.503071,-0.507606,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327,
+ 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523,
+ 0.198441,0.172024,-0.964898,4.927282,1.486953,-0.526327,
+ -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ 0.204819,0.130792,-0.970022,4.79841,1.473149,-0.570618,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.154028,0.078449,-0.984947,4.715646,1.502195,-0.584339,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ -0.99798,-0.063521,0,5.378289,1.768448,0.000441,
+ 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606,
+ -0.99798,-0.063521,0,5.378289,1.768448,0.000441,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ -0.99798,-0.063521,0,5.378289,1.768448,0.000441,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.243507,0.533327,-0.810103,5.321136,1.795562,-0.119606,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.458202,0.052175,-0.887316,5.218821,1.803552,-0.199306,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797,
+ 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.347878,0.028988,-0.937092,5.216855,1.636645,-0.279797,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.282492,0.026082,-0.958915,5.233176,1.442459,-0.362988,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.210495,0.185422,-0.959849,5.223191,1.371491,-0.388069,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ 0.154687,0.171026,-0.973048,5.158322,1.23677,-0.418043,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ -0.03359,0.173471,-0.984266,4.95536,1.236724,-0.50523,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ 0.289202,0.572304,-0.767353,4.761601,1.363013,-0.57137,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982,
+ 0.380651,0.443224,-0.811577,4.679116,1.438434,-0.589658,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ 0.362705,0.428702,-0.827442,4.596478,1.512987,-0.598982,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ 0.332757,0.286207,-0.898531,4.560024,1.604023,-0.589333,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ 0.302715,0.058971,-0.951255,4.477781,1.687858,-0.597407,
+ -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888,
+ 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.347794,0.132396,-0.928176,4.459682,1.778884,-0.588185,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905,
+ 0.168187,0.30029,-0.938903,5.421809,1.685349,-0.123555,
+ 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905,
+ 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452,
+ 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452,
+ 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.112152,0.130705,-0.985057,5.383208,1.619661,-0.202452,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.069483,0.206284,-0.976022,5.373133,1.541142,-0.246712,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.054287,0.055115,-0.997003,5.334328,1.402713,-0.332639,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.235746,0.648569,-0.723728,5.296963,1.322443,-0.357984,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.101496,0.616609,-0.780699,5.260653,1.184173,-0.352062,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.550962,0.627632,-0.550018,5.604888,1.546091,-0.113773,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.477288,0.71618,-0.509197,5.566339,1.498677,-0.190905,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.887994,0.419811,-0.187682,5.528186,1.44018,-0.250666,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.884602,-0.366981,-0.287755,5.608974,1.317869,-0.319719,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.749779,0.312647,-0.583167,5.471928,1.345179,-0.313899,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.777215,-0.378098,-0.50297,5.563253,1.235295,-0.317238,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.358075,0.480709,-0.800438,5.425783,1.264372,-0.329687,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188,
+ 0.524848,0.480957,-0.702293,5.397967,1.174238,-0.346802,
+ 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337,
+ 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476,
+ 0.286794,0.030057,-0.957521,5.813217,1.415581,-0.195261,
+ 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ 0.194103,-0.204609,-0.959406,5.886832,1.385674,-0.172365,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ 0.244568,-0.04472,-0.9686,5.847989,1.311569,-0.261476,
+ 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.259896,0.111139,-0.95922,5.979357,1.325532,-0.125337,
+ 0.230527,0.277297,-0.932718,5.941384,1.330818,-0.178936,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.193495,-0.385604,-0.902147,5.931474,1.233483,-0.215613,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324,
+ -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324,
+ 0.054456,-0.320459,-0.945696,5.934596,1.054796,-0.077039,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545,
+ 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545,
+ 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545,
+ 0.169576,-0.140705,-0.975421,5.923808,1.025283,-0.153084,
+ 0.120494,-0.516376,-0.847843,5.85775,0.997026,-0.236768,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.051115,-0.906355,-0.419414,5.912147,1.117911,-0.254197,
+ 0.16399,-0.527952,-0.833291,5.884856,1.062202,-0.249545,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.161367,-0.802085,-0.574996,5.837875,1.141493,-0.305184,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.218068,-0.756332,-0.616772,5.77341,1.225861,-0.323025,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.188634,-0.17518,-0.966297,5.783731,1.341471,-0.28459,
+ 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.725751,-0.657941,-0.200998,5.764774,1.279824,-0.308562,
+ 0.364327,0.145753,-0.919795,5.681726,1.282503,-0.333871,
+ 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.063422,-0.817077,-0.573029,5.800778,1.078596,-0.31945,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.612046,-0.714077,-0.339844,5.672187,1.164767,-0.35408,
+ 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.348619,-0.077188,-0.934081,5.580797,1.174135,-0.351054,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188,
+ 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.17011,-0.985049,0.027217,5.690122,1.092917,-0.37085,
+ 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.108306,-0.808441,-0.578527,5.598282,1.094735,-0.386994,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.148862,-0.934725,-0.322692,5.580727,0.99933,-0.349867,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ 0.228199,-0.705361,-0.671112,5.580223,1.04747,-0.372696,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.802898,-0.287005,-0.522477,5.47963,1.11131,-0.364188,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272,
+ 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.155351,-0.987262,-0.034337,5.470775,1.009574,-0.355371,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.241652,-0.897637,-0.368581,5.535184,0.98018,-0.341257,
+ 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.114701,-0.691524,-0.713188,5.425352,1.035967,-0.34272,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.298912,-0.321997,-0.898315,5.434594,0.970412,-0.330823,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ 0.241049,-0.626018,-0.741618,5.480649,0.941387,-0.316248,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ -0.016623,-0.697515,-0.716378,5.546347,0.916044,-0.246782,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.045194,-0.595739,-0.801906,5.638369,0.904402,-0.222548,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.72603,0.248277,-0.641279,5.388455,1.119419,-0.351883,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965,
+ 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965,
+ 0.272751,-0.332382,-0.902845,5.379461,1.045817,-0.349748,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ 0.161397,-0.648357,-0.744032,5.370709,0.980272,-0.337432,
+ 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177,
+ -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.106359,-0.394397,-0.912764,5.851404,0.929008,-0.105362,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.105003,-0.636187,-0.764356,5.748613,0.92049,-0.205099,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ -0.277696,-0.435918,-0.856073,5.797411,0.880032,-0.072306,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ 0.200817,-0.971977,-0.122205,5.70463,0.849158,-0.12813,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324,
+ -0.023775,-0.598435,-0.800819,5.60337,0.852748,-0.162335,
+ -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ 0.009824,-0.644035,-0.764933,5.511556,0.863525,-0.177613,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066,
+ 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ -0.301162,-0.110218,-0.947182,5.568745,0.834653,-0.07139,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324,
+ -0.430969,-0.132769,-0.892546,5.449164,0.847535,-0.103909,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ -0.101883,0.176778,-0.978963,5.3569,0.85112,-0.138324,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177,
+ 0.142784,-0.229696,-0.962732,5.373646,0.885375,-0.20884,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473,
+ 0.037801,-0.082839,-0.995846,5.299005,0.908991,-0.260177,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ -0.293162,-0.051827,-0.954657,5.247762,0.848549,-0.108546,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ -0.172671,0.234525,-0.956652,5.26443,0.855571,-0.181694,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.034138,0.050771,-0.998127,5.137075,0.824518,-0.144842,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ -0.241534,0.200654,-0.949421,4.963526,0.797382,-0.14344,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ -0.317809,0.237299,-0.91798,5.153735,0.831575,-0.218348,
+ -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.31398,0.125785,-0.94106,4.99671,0.81056,-0.280771,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ -0.196146,-0.333078,-0.922272,5.197562,0.922406,-0.302473,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ 0.050019,-0.552867,-0.831767,5.223571,0.974029,-0.362117,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ 0.563602,0.822451,-0.076991,5.021254,0.951308,-0.405567,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ -0.400711,0.089185,-0.911853,5.004627,0.908637,-0.345273,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ 0.067357,0.280762,-0.957411,4.733657,1.227371,-0.592883,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.311768,0.950117,0.008871,4.74325,1.05921,-0.563421,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ 0.609817,0.770093,-0.187297,4.744871,0.950945,-0.491082,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987,
+ -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ -0.419631,0.061765,-0.905591,4.66969,0.738163,-0.188296,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.134248,0.990294,0.035989,4.399629,0.850459,-0.391855,
+ -0.497134,0.140473,-0.856227,4.728809,0.878731,-0.405801,
+ -0.434729,0.079706,-0.897027,4.712067,0.770512,-0.333393,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ -0.081906,0.996619,0.006487,4.297891,0.911506,-0.447987,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ -0.062739,0.996071,-0.062495,4.416475,0.921264,-0.458839,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ 0.651262,0.697944,-0.29788,4.496191,1.024566,-0.579491,
+ -0.11884,0.991349,0.055713,4.333503,0.951176,-0.481517,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581,
+ 0.461485,0.788927,0.405742,4.277227,1.077746,-0.550819,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.794567,0.588129,0.15089,4.366867,1.131136,-0.630581,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ -0.034875,0.308036,-0.950735,4.430999,1.535753,-0.638888,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661,
+ 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388,
+ -0.148853,0.101172,-0.98367,4.404221,1.662433,-0.61661,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ 0.504832,0.844097,-0.180678,4.38638,1.770868,-0.596666,
+ 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.000755,0.939587,0.34231,4.312225,1.683392,-0.639944,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.693689,0.317886,0.646331,4.329607,1.464801,-0.661485,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.329366,0.742755,0.582952,4.247733,1.381058,-0.649596,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ 0.054059,0.926072,0.373454,4.175444,1.350332,-0.613988,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ 0.104327,0.725166,0.680624,4.221814,1.660769,-0.59409,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ 0.288171,0.239224,0.927216,4.121121,1.614451,-0.587188,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ -0.194126,0.280848,-0.939914,4.971394,2.146686,-0.224781,
+ 0.2189,0.87846,-0.424724,4.83289,2.262727,-0.283787,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ 0.444094,0.036128,-0.895251,5.156645,1.942902,-0.119993,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ 0.936734,-0.314344,0.154001,5.741781,1.463956,-0.124891,
+ 0.987857,-0.047506,-0.147925,5.687035,1.499636,-0.110765,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ 0.461068,-0.584089,-0.668024,5.915025,1.382159,-0.13682,
+ 0.901575,-0.270544,-0.337593,5.842092,1.427708,-0.130724,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ 0.850248,-0.122855,0.511845,4.342351,2.581176,-0.140317,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ 0.335985,-0.093511,0.937214,4.332083,2.586481,-0.194917,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ 0.169215,-0.167065,0.971316,4.339601,2.592642,-0.258891,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.337014,-0.030018,-0.941021,4.634996,2.369115,-0.140117,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164,
+ 0.603381,-0.138834,0.785275,4.452383,2.524558,-0.130255,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ 0.104604,0.23696,0.965872,4.440143,2.510529,-0.269164,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ 0.054838,0.685321,0.726174,4.429895,2.495758,-0.306894,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ 0.272203,0.043076,-0.961275,4.577573,2.389535,-0.256196,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ -0.026478,0.945923,0.32331,4.187258,2.590221,-0.135844,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ -0.071389,0.260054,0.962951,4.203325,2.589186,-0.219164,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.01127,-0.268802,0.96313,4.211652,2.602538,-0.264011,
+ -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ 0.223577,0.97296,0.057987,4.084506,2.570978,-0.218168,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ -0.849668,0.488772,0.197904,4.029016,2.519175,-0.249385,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ -0.247355,0.948391,0.198417,4.101754,2.557092,-0.265856,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.778384,0.466328,-0.420305,4.055262,2.505284,-0.297282,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.671787,0.737297,-0.07138,4.100907,2.560626,-0.302396,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.130291,0.991051,-0.029017,4.063205,2.509679,-0.342987,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.877603,-0.025307,-0.47872,4.035753,2.399538,-0.343957,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597,
+ -0.683788,0.700764,0.203383,4.00011,2.424158,-0.313254,
+ -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597,
+ -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747,
+ -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747,
+ -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.892748,0.392127,0.221893,3.961908,2.347745,-0.374747,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.501952,0.842503,-0.195533,4.043796,2.386524,-0.400392,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.981668,0.173926,0.077954,4.025364,2.3593,-0.402597,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955,
+ -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.894795,0.444359,0.043442,3.967085,2.280648,-0.537643,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468,
+ -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.941564,0.056552,-0.332054,3.903911,2.241501,-0.512468,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.463096,-0.149334,-0.873637,4.010847,2.270246,-0.622149,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.641549,-0.578509,-0.503727,3.928869,2.223919,-0.615683,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.990661,0.056144,0.124249,4.077563,2.305187,-0.510338,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.978317,0.206989,0.00716,4.112302,2.285832,-0.5955,
+ -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ -0.832539,-0.5495,-0.070196,4.146067,2.278102,-0.707372,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ -0.862876,-0.450622,-0.228877,4.04473,2.254459,-0.744209,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ -0.473779,-0.24744,-0.845167,4.172143,2.303394,-0.778972,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ -0.713872,-0.610821,-0.342469,4.079122,2.264104,-0.84501,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ 0.760119,-0.003927,-0.649772,4.215419,2.350484,-0.885764,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575,
+ -0.564249,0.755597,0.33271,4.194233,2.408334,-1.008471,
+ -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ -0.396467,0.225967,-0.889805,4.155551,2.388662,-1.09196,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986,
+ -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ 0.911709,-0.064352,-0.405765,4.104864,2.298353,-0.915735,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108,
+ 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108,
+ 0.89585,0.32639,-0.301532,4.102304,2.29996,-1.025862,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.916648,-0.2944,-0.270344,3.990744,2.205448,-0.710795,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ -0.719395,-0.61545,-0.322011,4.0247,2.187859,-0.814219,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284,
+ 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284,
+ 0.3335,0.232683,-0.913584,4.059714,2.194906,-0.888152,
+ 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108,
+ 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284,
+ 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108,
+ -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365,
+ -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365,
+ 0.161194,-0.480657,0.861966,4.047406,2.207209,-1.015108,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ -0.279333,0.256919,-0.925184,4.097362,2.3666,-1.239986,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561,
+ -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099,
+ 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099,
+ 0.245858,0.150988,-0.957474,4.061989,2.231988,-1.178382,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ -0.086812,-0.050981,0.994919,4.058311,2.293363,-1.338054,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ 0.428291,-0.499911,0.752765,4.024858,2.106568,-1.208099,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284,
+ -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ -0.463441,0.825581,0.321928,4.020299,2.141675,-1.002365,
+ 0.261393,-0.399072,0.878872,4.036947,1.992167,-1.072561,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291,
+ -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291,
+ -0.984655,0.15519,-0.07981,3.857922,2.141554,-0.521067,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087,
+ -0.384424,0.863444,0.326623,3.966639,1.969285,-0.549291,
+ -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ 0.492393,-0.77993,0.38634,4.022592,2.123052,-0.903284,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ 0.313443,-0.691245,0.651102,3.989434,2.118832,-0.765086,
+ -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809,
+ -0.791764,-0.610494,0.020171,3.892378,2.149432,-0.603589,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809,
+ -0.975013,-0.179567,-0.130791,3.945464,2.1301,-0.689536,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.354832,0.724971,0.590348,3.98291,1.987391,-0.639809,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ 0.454048,-0.464454,0.760344,4.031515,1.968248,-0.91846,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ -0.270788,0.46353,0.843691,4.017509,1.996169,-0.731654,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692,
+ 0.196849,0.14562,-0.969559,4.389484,2.190421,-0.47332,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ 0.159882,0.223439,0.961516,4.3427,2.112281,-0.516692,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031,
+ 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196,
+ 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259,
+ 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646,
+ -0.172151,0.101796,0.979797,4.094116,2.426172,-1.381032,
+ 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.963659,-0.230665,-0.134738,4.212974,2.303184,-0.587113,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927,
+ -0.990956,-0.062739,-0.118613,4.212058,2.27945,-0.625927,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172,
+ -0.938303,-0.3372,-0.076703,4.229332,2.274522,-0.672749,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.841909,-0.49598,-0.212588,4.273005,2.310529,-0.762172,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494,
+ -0.203969,0.261593,0.94338,4.314791,2.142163,-0.54065,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ 0.531574,-0.288506,0.796362,4.274886,2.22003,-0.679075,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ -0.571598,0.654164,0.495323,4.307092,2.367482,-0.877202,
+ 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ -0.601466,0.441167,0.666041,4.266263,2.421651,-1.054799,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ -0.195132,0.128745,0.97229,4.17047,2.458441,-1.241846,
+ -0.434016,0.136262,0.890541,4.228523,2.435029,-1.098575,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.483908,-0.405185,0.775667,4.197644,2.394643,-1.248646,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444,
+ 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444,
+ 0.441787,-0.375177,0.814903,4.245861,2.375093,-1.141312,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ 0.325831,-0.277459,0.903798,4.303193,2.347123,-1.044413,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464,
+ 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ 0.144017,-0.141696,0.979378,4.369751,2.298204,-0.921894,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.383941,-0.196382,0.902232,4.197516,2.349135,-1.253043,
+ 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.226651,-0.023678,0.973688,4.218457,2.356834,-1.142444,
+ 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.175197,0.22468,0.958553,4.26732,2.121987,-0.61494,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ -0.023695,0.006701,0.999697,4.38099,2.207701,-0.839016,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ 0.065337,0.07376,0.995133,4.275405,2.319905,-1.0464,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ -0.027323,0.180938,0.983115,4.296538,2.243779,-0.925459,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ -0.078774,0.27578,0.957987,4.289048,2.172969,-0.858693,
+ -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019,
+ 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668,
+ 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.177367,0.480226,0.859025,4.197609,2.164063,-0.857433,
+ 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.040193,0.650965,0.758043,4.222795,2.228178,-0.952752,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046,
+ 0.769657,-0.480833,0.420033,4.211815,2.28249,-1.039137,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.331391,0.08899,0.939287,4.169404,2.306276,-1.284031,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.488174,-0.280956,0.826287,4.199317,2.304652,-1.17454,
+ 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759,
+ 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ 0.41428,0.318289,0.85268,4.15109,2.102939,-0.889759,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ 0.519338,0.264458,0.812619,4.148865,2.148829,-0.986567,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ 0.486425,0.192908,0.852161,4.154566,2.19048,-1.129552,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.449624,0.075438,0.890027,4.152557,2.235471,-1.217046,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ 0.547549,-0.279581,0.788686,4.119993,2.063095,-1.049178,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ 0.598679,-0.200355,0.775527,4.12616,2.12093,-1.17252,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ 0.561098,-0.272385,0.78165,4.133175,2.175231,-1.259323,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949,
+ 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949,
+ 0.474213,-0.311965,0.823286,4.141759,2.279958,-1.29534,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949,
+ 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259,
+ 0.445439,-0.182623,0.876489,4.140097,2.295949,-1.367196,
+ -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ 0.204286,0.745568,0.634347,4.303615,1.799914,-0.610388,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ 0.525316,0.261331,0.809784,4.304562,1.906537,-0.572242,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.224429,0.165293,0.96037,4.305411,2.059245,-0.539407,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.615047,0.769185,-0.17341,4.377095,1.871713,-0.595743,
+ 0.361081,-0.056526,-0.93082,4.43302,2.024714,-0.563794,
+ 0.36359,0.089346,-0.927264,4.43261,1.878873,-0.577888,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ -0.051423,0.948155,0.313619,4.240116,1.770049,-0.583946,
+ -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851,
+ -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641,
+ 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668,
+ -0.095989,0.297871,0.949768,4.290375,2.112337,-0.80019,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ 0.288711,0.386915,0.875753,4.153175,2.084823,-0.799668,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ 0.533629,-0.162705,0.82992,4.131949,2.050757,-0.921856,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851,
+ -0.128537,0.152973,0.979835,4.354411,2.102985,-0.80258,
+ -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351,
+ -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851,
+ -0.080985,0.883253,0.461851,4.278045,1.97666,-0.537351,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ -0.317114,0.866865,0.384686,4.354941,2.064161,-0.778851,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.158888,0.47696,0.864444,4.281287,2.055751,-0.787,
+ -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ -0.2127,-0.171223,-0.961999,5.961686,1.110978,-0.090324,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ -0.026148,0.006311,-0.999638,5.998088,1.231874,-0.107334,
+ 0.111896,-0.605741,-0.787755,5.950684,1.082725,-0.175648,
+ 0.223936,-0.919046,-0.324355,5.959462,1.157227,-0.187097,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.231006,-0.859096,-0.456717,5.681086,1.054964,-0.35586,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.173726,-0.983856,0.042973,5.672385,1.007694,-0.341778,
+ 0.010578,-0.902776,-0.429981,5.763952,1.062109,-0.338641,
+ 0.396941,-0.593504,-0.700137,5.755282,1.004149,-0.307505,
+ 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833,
+ 0.798302,-0.559383,0.22317,5.685194,1.452202,-0.188749,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.707709,-0.687035,-0.164711,5.647186,1.394606,-0.257833,
+ 0.831976,-0.511655,0.214534,5.730427,1.435668,-0.209848,
+ 0.744254,-0.654161,-0.134758,5.710154,1.360653,-0.290072,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.123418,-0.784469,-0.607763,5.241466,1.040469,-0.383965,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.043397,0.435461,-0.899161,5.250485,1.123029,-0.385234,
+ 0.274481,0.961015,-0.033322,5.011084,1.06677,-0.458562,
+ 0.012421,0.392537,-0.919653,4.991713,1.163096,-0.504149,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.481644,0.842268,0.242081,4.449011,1.260929,-0.647431,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ 0.381066,0.919021,-0.100938,4.567896,1.149805,-0.642484,
+ 0.184871,0.227139,-0.956154,4.522247,1.398278,-0.644892,
+ -0.026366,0.234118,-0.971851,4.641547,1.285422,-0.622034,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.667258,0.181112,-0.722471,4.688114,2.046378,-0.604518,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ -0.013461,-0.014478,-0.999805,4.697024,1.862575,-0.604048,
+ 0.856604,0.474873,-0.201803,4.728963,2.036146,-0.614307,
+ 0.827569,0.284292,-0.484054,4.742358,1.882232,-0.62165,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.721999,0.398917,-0.565316,4.861611,2.001639,-0.621913,
+ 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358,
+ 0.264979,0.116702,-0.957166,4.842883,2.021333,-0.638025,
+ 0.544735,0.449335,-0.708069,4.824747,1.946835,-0.626358,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.397989,0.4494,-0.799778,4.861618,1.854067,-0.618095,
+ 0.708269,-0.122724,-0.695193,4.852582,1.816115,-0.603105,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.711192,0.127662,-0.69131,4.935561,2.016016,-0.5857,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.872792,-0.115436,-0.474246,4.973133,1.992779,-0.533466,
+ 0.699393,0.056752,-0.71248,4.751519,2.039658,-0.634134,
+ 0.813293,0.022433,-0.581422,4.788476,2.028047,-0.608619,
+ 0.269343,0.329305,-0.904993,4.760921,1.881357,-0.61312,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.108828,-0.182644,-0.977137,4.982364,1.8733,-0.53619,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.661825,0.260115,-0.703085,4.991709,1.844295,-0.520761,
+ 0.470021,0.182979,-0.863481,4.991746,2.009819,-0.523206,
+ 0.431713,0.22912,-0.872427,5.01143,1.875569,-0.463205,
+ 0.412833,-0.156453,-0.897269,5.001903,1.914398,-0.486724,
+ 0.910294,-0.144636,-0.387873,4.881574,2.094571,-0.539949,
+ 0.588787,-0.248293,-0.769207,4.918466,2.084725,-0.532713,
+ 0.312982,-0.015529,-0.949632,4.93588,2.051665,-0.572853,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ -0.114527,0.103064,-0.988059,4.739441,2.299169,-0.369987,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.719268,0.159441,-0.676189,4.636582,2.263383,-0.471997,
+ 0.45571,-0.00339,-0.890122,4.837331,2.235678,-0.479332,
+ 0.766773,0.253147,-0.589894,4.74405,2.179337,-0.556057,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.332526,0.910491,-0.245832,5.067202,2.027704,-0.422291,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.781868,0.537364,-0.316105,5.057495,2.002751,-0.451974,
+ 0.077536,0.770695,-0.632469,5.095375,1.961238,-0.401516,
+ 0.89264,0.34991,-0.284178,5.075994,1.900999,-0.443793,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ 0.020519,-0.282941,0.958918,4.046673,2.341349,-1.45253,
+ 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163,
+ 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259,
+ 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ 0.5205,-0.336657,0.784692,4.159229,1.949902,-0.923197,
+ -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ -0.273816,0.228927,0.93414,4.150297,1.820575,-0.917046,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ 0.760747,-0.509474,0.40212,4.137657,1.944837,-1.061024,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ -0.21777,0.161093,0.962614,4.127903,1.828359,-1.090512,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ -0.16423,0.819635,0.548842,4.143794,2.01372,-1.201386,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ -0.178707,0.132414,0.974951,4.152166,1.868775,-1.225002,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ -0.043323,0.541029,0.839887,4.12329,2.086854,-1.295135,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ -0.081635,-0.03459,0.996062,4.103303,2.038565,-1.363737,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ 0.098376,0.32868,0.939304,4.111934,2.234814,-1.399949,
+ 0.04432,0.372862,0.926827,4.11268,2.195089,-1.366908,
+ 0.07924,-0.231863,0.969516,4.082988,2.175805,-1.45093,
+ -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087,
+ 0.969409,0.243853,-0.027951,4.148883,1.759918,-0.573765,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ 0.971427,0.04566,0.232906,4.076852,1.746601,-0.527436,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ -0.571598,0.654164,-0.495323,3.886058,1.550141,-0.50483,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ 0.811896,0.498733,-0.303464,4.067576,1.572668,-0.534997,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ -0.601466,0.441167,-0.666041,3.98851,1.297806,-0.539537,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ 0.800967,0.453078,0.391371,4.085564,1.288885,-0.544406,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ -0.434016,0.136262,-0.890541,4.041657,1.039756,-0.496922,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ 0.04154,0.947538,0.316932,4.141189,1.008775,-0.499342,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ -0.195132,0.128745,-0.97229,4.068249,0.798926,-0.400813,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ -0.051101,0.977083,0.206633,4.216374,0.852328,-0.405873,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ -0.172151,0.101796,-0.979797,4.105198,0.672581,-0.300001,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ -0.086812,-0.050981,-0.994919,4.120842,0.627141,-0.185461,
+ 0.731768,0.675964,-0.087106,4.319799,0.731007,-0.291212,
+ 0.448666,0.893201,-0.029856,4.359048,0.700414,-0.166651,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341,
+ -0.777939,0.62834,-0.000226,3.745669,2.266001,-0.24193,
+ -0.451389,0.892327,-0.00019,3.727093,2.308406,-0.150049,
+ -0.210883,0.942026,0.260987,3.828001,2.35254,-0.233341,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.447812,0.698934,0.557634,4.059885,1.86046,-0.470087,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.564871,0.754993,-0.333026,3.881998,1.764428,-0.476337,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356,
+ 0.673211,-0.580891,0.457551,3.922437,1.972461,-0.483563,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356,
+ -0.512639,0.858604,-0.000762,3.814876,1.968416,-0.443,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ -0.502349,0.838172,0.212398,3.870548,2.292106,-0.368964,
+ -0.768362,0.592232,0.242656,3.823349,2.141733,-0.428356,
+ -0.698288,0.715816,-0.000608,3.758215,2.206683,-0.323051,
+ -0.273708,0.760234,0.589175,4.245225,2.008532,-0.772641,
+ 0.752227,-0.484776,0.446258,4.232341,1.903079,-0.534362,
+ -0.385487,0.478576,0.788901,4.094112,1.889281,-0.578435,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ -0.176356,-0.113876,-0.977717,1.678986,-2.513137,-0.891745,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ -0.483189,-0.207332,-0.850613,1.655948,-2.520927,-0.844269,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ -0.024032,-0.835976,0.54824,1.734568,-2.965876,-0.986396,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ -0.246054,-0.154918,-0.956796,1.718315,-2.775468,-0.921796,
+ -0.90358,0.003167,-0.428408,1.705953,-3.006628,-0.83263,
+ 0.21689,-0.976039,0.017487,1.700797,-2.794792,-0.82425,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ -0.176655,-0.950799,-0.254508,-1.108758,-1.770749,-0.473033,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ -0.253979,-0.745808,-0.615845,-0.977375,-1.793126,-0.498747,
+ -0.040019,-0.929968,-0.365457,-0.972514,-1.822778,-0.372649,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.149005,-0.65467,-0.741084,-1.266738,-1.691944,-0.557922,
+ -0.079302,-0.84299,-0.532051,-1.305099,-1.70846,-0.48423,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ -0.108631,-0.122719,-0.986478,-3.35851,1.810253,-0.380095,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ -0.091034,0.391629,-0.915609,-3.413372,1.871604,-0.142309,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.489736,-0.346185,0.800197,4.129926,2.30877,-1.402259,
+ 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163,
+ 0.45552,-0.330523,0.826593,4.149438,2.34055,-1.353693,
+ 0.702554,-0.570096,0.42592,4.101726,2.312318,-1.438163,
+ 0.482381,-0.398126,0.780259,4.148927,2.388726,-1.376879,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.982106,-0.010346,-0.188044,-2.964215,-1.978727,-0.776572,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ 0.230893,-0.309688,0.922378,-3.211005,-1.850398,-0.700723,
+ 0.789099,-0.039289,0.613008,-3.066022,-1.953125,-0.719516,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.163727,0.387435,0.907242,2.520417,-0.954785,0.739445,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.111825,0.518485,0.847743,2.407309,-0.97498,0.805091,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366,
+ 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863,
+ 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366,
+ 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.335626,-0.735806,0.588171,2.318787,-1.29409,0.673863,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.267279,-0.944479,0.191107,2.486533,-1.274971,0.627822,
+ 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057,
+ 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057,
+ 0.372063,-0.134052,0.918477,2.386465,-1.116066,0.761367,
+ 0.420794,-0.405156,0.811653,2.354287,-1.193746,0.735189,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.304293,-0.024391,0.952266,2.514167,-1.077721,0.706614,
+ 0.129186,0.757141,0.64035,2.510841,-1.158786,0.678057,
+ 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.206788,0.399922,0.892917,2.757946,-1.099958,0.471684,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.092427,0.86666,0.490262,2.61797,-1.235597,0.520238,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ 0.051939,0.876473,0.478641,2.549322,-1.335209,0.535156,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.029207,0.916877,0.398099,2.45706,-1.400958,0.539866,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.298349,-0.828641,0.473647,2.274533,-1.433487,0.567366,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ 0.246802,0.252523,0.935586,2.847364,-1.103812,0.402301,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ 0.274567,0.116527,0.954481,2.803736,-1.255869,0.438328,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ 0.327725,-0.489439,0.808112,2.515314,-1.507063,0.483275,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ 0.291858,-0.681117,0.67149,2.422296,-1.510915,0.494169,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ 0.248915,-0.807091,0.535392,2.249663,-1.492705,0.53127,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ 0.820584,-0.571526,0,2.931756,-1.129655,0,
+ 0.213948,-0.943673,0.252405,2.928787,-1.107467,0.312054,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ -0.255632,0.966774,0,2.896234,-1.31956,0,
+ 0.190577,-0.970681,0.146488,2.893096,-1.302168,0.332049,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ 0.826305,-0.563222,0,2.821376,-1.431534,0,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ -0.133012,0.991114,0,2.706963,-1.528854,0,
+ 0.081223,0.915345,0.394394,2.721135,-1.520418,0.362378,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ 0.815341,-0.578981,0,2.534227,-1.617078,0,
+ 0.120116,0.912706,0.390565,2.545261,-1.5933,0.38631,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ -0.144073,0.989567,0,2.348182,-1.624595,0,
+ 0.1717,0.74071,0.649514,2.396607,-1.593239,0.389972,
+ 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832,
+ -0.073566,0.99729,0,2.167167,-1.596326,0,
+ 0.167704,0.495674,0.852164,2.243492,-1.584783,0.431143,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485,
+ 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493,
+ 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ -0.334515,0.94239,0,2.970902,-0.959664,0,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.244106,-0.79539,0.554768,2.960118,-0.941827,0.284743,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.942695,-0.333657,0,3.065544,-0.788768,0,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.101272,0.634315,0.766413,2.670253,-1.108365,0.544018,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.263434,0.119819,0.957207,2.669281,-0.930664,0.557166,
+ 0.147941,0.53134,0.834141,2.857666,-0.930625,0.391195,
+ 0.089104,0.59547,0.798421,2.710721,-0.830091,0.532493,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485,
+ 0.078896,0.195617,0.977502,2.82554,-0.567578,0.552597,
+ 0.430574,-0.353967,0.830249,2.647368,-0.61155,0.669485,
+ 0.227108,0.258715,0.938876,2.637655,-0.768176,0.637039,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ 0.063174,0.351351,0.93411,2.910769,-0.638444,0.431191,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ 0.10737,-0.293005,0.950063,3.045715,-0.767786,0.261741,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ 0.097816,-0.016117,0.995074,2.993075,-0.708434,0.342596,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343,
+ -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857,
+ 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511,
+ 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908,
+ -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423,
+ -0.019419,-0.11596,0.993064,-0.422877,-1.7512,0.823423,
+ 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.031476,0.864418,0.501787,-0.564074,-1.789401,0.803191,
+ 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.045651,-0.004499,0.998947,-0.680046,-1.768325,0.81908,
+ -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857,
+ -0.965506,-0.176768,-0.191185,-1.091175,-1.70712,0.727242,
+ 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154,
+ -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154,
+ -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033,
+ 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033,
+ -0.942755,-0.29871,-0.148273,-1.226563,-1.655159,0.687343,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ -0.004377,0.58747,0.809234,-0.543078,-1.810473,0.563825,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ -0.084764,-0.996401,0,-0.155114,-1.828285,0,
+ 0.057779,0.975002,0.214553,-0.112666,-1.806584,0.383324,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ 0.854132,-0.520056,0,-0.530369,-1.860806,0,
+ 0.044022,0.273891,0.960753,-0.523838,-1.850065,0.388007,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ 0.113474,-0.993541,0,-0.956007,-1.825728,0,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857,
+ 0.859237,-0.17312,0.481395,-1.089642,-1.757196,0.685154,
+ -0.017579,0.132168,0.991072,-0.972089,-1.774507,0.76857,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ 0.419396,-0.035927,0.907092,-0.812845,-1.785424,0.768511,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396,
+ -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396,
+ 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111,
+ 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851,
+ 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ 0.461464,-0.003303,0.887153,1.721745,-3.116887,0.979111,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705,
+ 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575,
+ -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575,
+ -0.050511,-0.258376,-0.964723,1.709173,-3.133145,0.80794,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ -0.775358,0.344514,0.529274,2.021366,-2.881725,0.945561,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ -0.032037,-0.072305,0.996868,1.911792,-2.895773,0.950117,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ 0.433219,-0.09361,0.896414,1.848272,-2.92726,0.996966,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851,
+ 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ 0.000666,0.002295,0.999997,1.802387,-3.089615,0.961851,
+ -0.51975,0.138222,0.843063,1.806371,-2.949735,0.984058,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ -0.906134,0.012265,-0.422813,1.735077,-3.022732,0.972751,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705,
+ 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ -0.326843,-0.236651,-0.91497,1.741854,-3.114181,0.700705,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496,
+ -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496,
+ 0.012244,-0.298111,0.954453,1.945632,-2.87671,0.703118,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ -0.492859,-0.096404,0.864752,1.857471,-2.950722,0.669988,
+ 0.753698,-0.027204,-0.656657,1.776024,-2.980086,0.707575,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547,
+ 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563,
+ 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313,
+ -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313,
+ -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ 0.405633,0.578229,0.707893,-3.117476,-1.866892,1.108034,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ -0.833016,0.038682,0.551896,-3.169489,-2.110039,1.076796,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ 0.503689,0.453945,0.735004,-3.177824,-2.279173,1.04758,
+ -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ 0.197648,0.486888,0.850809,-3.207447,-2.103206,1.071366,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ 0.144389,0.231536,0.962051,-3.281816,-2.305055,1.001878,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ -0.985013,0.106757,-0.135469,-3.327526,-2.075729,1.005328,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ -0.637763,0.107242,0.76273,-3.068444,-2.260195,1.03507,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ 0.070969,0.266956,0.961092,-3.010917,-1.884498,1.08351,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ -0.67011,-0.018974,0.742019,-3.047974,-2.109628,1.063497,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ 0.413011,0.629609,0.658038,-2.918293,-1.904184,1.004659,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.385346,-0.01874,-0.922582,-2.969687,-2.097941,0.982836,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ -0.471141,0.022027,-0.881783,-3.007483,-2.270712,0.984279,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ 0.156207,-0.109405,-0.981647,-2.981187,-2.142718,0.858353,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ -0.978077,-0.070308,-0.196017,-3.040398,-2.156239,0.808208,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ -0.556404,-0.045521,-0.829664,-3.120761,-2.15777,0.766432,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ 0.72114,0.258271,-0.642848,-3.253309,-2.137354,0.760713,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ 0.845209,0.529005,0.075999,-3.235873,-2.335338,0.820588,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472,
+ 0.77125,0.634502,0.050796,-3.381262,-1.828189,0.697034,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ 0.712283,0.385668,-0.586441,-3.422698,-2.070796,0.773898,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ 0.684834,0.490952,-0.538488,-3.339489,-2.328145,0.827572,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ -0.948593,-0.185732,-0.25627,-3.389388,-2.305625,0.950348,
+ 0.403627,0.101273,-0.909302,-3.412068,-2.356105,0.865813,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ -0.948593,-0.185732,-0.25627,-3.451965,-2.077314,0.931974,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ -0.058899,-0.007802,-0.998233,-3.463753,-2.079892,0.844667,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ 0.596352,0.583149,0.551635,-3.498521,-1.762078,0.762472,
+ -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628,
+ 0.637284,0.689194,0.344791,-3.49052,-1.760417,0.903104,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ -0.701253,0.091018,-0.707079,1.648793,-2.280014,0.929365,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ -0.706628,-0.050081,-0.705811,1.6249,-2.087301,0.963391,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ -0.990285,-0.10079,-0.095796,1.572979,-1.827591,0.985823,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.743894,0.373896,-0.553916,1.586321,-2.273752,0.880969,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.752232,0.244351,-0.611914,1.529305,-2.092083,0.887353,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.866543,0.493887,0.071972,1.508714,-1.808578,0.934359,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.963394,-0.268066,0.003702,1.60129,-2.267132,0.787696,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.714275,0.465374,-0.522723,1.544087,-2.080722,0.786432,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.81992,-0.126246,-0.558385,1.473886,-1.818947,0.799576,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ -0.440199,0.219838,0.870572,1.960643,-2.71286,0.90089,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ 0.862528,0.499882,-0.078511,2.021591,-1.755289,0.912093,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ 0.768073,0.514956,0.380637,1.930747,-2.463535,0.894743,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ 0.52783,0.437826,0.727807,2.013095,-2.051912,0.911043,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ 0.626232,0.565165,0.53705,1.98533,-2.221319,0.893145,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ -0.4909,0.016111,-0.871067,1.771416,-2.769024,0.9461,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ -0.90358,0.003168,0.428409,1.880971,-2.733242,0.8902,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ -0.062994,-0.00854,-0.997977,1.830669,-2.736121,0.903313,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.343436,-0.507052,-0.790537,1.717145,-1.80953,1.004092,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.554151,-0.205896,-0.80655,1.720031,-2.105568,0.971354,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593,
+ -0.554502,-0.046423,-0.830886,1.710406,-2.272223,0.954296,
+ -0.184432,-0.109597,-0.976716,1.737623,-2.485017,0.918334,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ -0.997638,0.009858,-0.067986,1.941767,-1.759457,0.997454,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ -0.150944,-0.987886,-0.036012,1.818846,-1.756976,1.023593,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887,
+ 0.21581,0.484483,0.847763,1.918641,-2.083654,1.001275,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887,
+ -0.630099,-0.773677,-0.066329,1.839224,-2.109267,0.998351,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ -0.783521,-0.393963,0.480508,1.90637,-2.282284,0.964887,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.874488,-0.088621,0.476882,1.864064,-2.469953,0.935601,
+ -0.967491,-0.143323,-0.208372,1.818266,-2.313852,0.968652,
+ -0.955753,-0.169718,-0.240275,1.801127,-2.48469,0.938593,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.79444,0.150525,-0.588393,1.596751,-1.722028,0.684655,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.261981,0.048424,-0.963857,1.643403,-2.076583,0.689565,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ 0.030762,-0.124297,-0.991768,1.736425,-2.743683,0.736866,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ 0.79991,0.598082,0.049409,1.663494,-2.485963,0.790773,
+ -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517,
+ -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ -0.753891,0.130682,0.643872,2.001343,-2.847715,0.762517,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ -0.820357,0.160676,0.548815,2.057496,-2.887282,0.844225,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.672894,0.661099,0.331907,1.841282,-2.716008,0.708009,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ -0.545598,-0.330416,0.770161,1.884318,-2.724404,0.701999,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.43336,0.0979,-0.895888,1.677597,-2.237953,0.696318,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ 0.331576,0.146631,-0.931964,1.756349,-2.446399,0.705428,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ 0.229413,0.089674,-0.96919,1.828658,-2.477348,0.67347,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ -0.074103,0.409269,0.909399,1.972647,-2.728848,0.772496,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ 0.636282,0.100894,0.76483,1.994078,-2.713047,0.824553,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.726897,-0.546447,0.415952,1.740323,-1.67983,0.664098,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ 0.313529,0.096126,-0.944701,1.991892,-1.7484,0.65277,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ -0.495591,0.225654,0.838731,2.053108,-1.738285,0.824853,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ -0.492627,0.113675,0.862784,2.047696,-2.050138,0.814712,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ 0.225987,0.181604,-0.957053,1.947264,-2.443232,0.732587,
+ -0.430524,-0.648446,0.627828,2.02453,-2.195334,0.811284,
+ 0.213417,-0.547722,0.808983,1.953911,-2.462233,0.830594,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ 0.383978,-0.566345,0.729256,2.158051,-1.209613,0.783941,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.671694,-0.023528,0.740455,2.141273,-1.234642,0.941254,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ -0.088841,0.02472,0.995739,2.099566,-1.259996,1.055763,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ 0.57446,0.218241,0.788902,1.966698,-1.22816,1.153716,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ 0.526213,0.349004,0.775433,1.805207,-1.268427,1.165317,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ 0.926951,0.366239,-0.081429,1.601721,-1.262359,1.14142,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ -0.496829,-0.096649,0.86245,1.49748,-1.283201,1.088258,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ 0.013288,-0.297478,0.954636,1.430817,-1.301205,1.024924,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ 0.339699,0.626415,0.701576,1.801794,-1.465464,1.129277,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ -0.937976,-0.320543,-0.132115,1.804927,-1.581954,1.089198,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ -0.144755,0.439659,0.886423,1.974215,-1.469208,1.068951,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ -0.987313,0.097591,-0.125253,1.937009,-1.625419,1.026843,
+ 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ 0.157806,0.230905,0.960094,2.071448,-1.410118,1.006192,
+ 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ 0.872426,0.488735,-0.003223,2.036036,-1.57908,0.967151,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ 0.303379,-0.73119,0.611002,2.126237,-1.330172,0.721011,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ 0.235033,-0.721825,0.650944,2.0796,-1.473377,0.654997,
+ -0.562282,-0.328887,0.758731,2.111557,-1.376942,0.89657,
+ -0.541077,0.245809,0.804247,2.059844,-1.561331,0.858957,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ 0.424286,-0.254348,0.869073,2.180012,-1.130557,0.821812,
+ 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518,
+ 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518,
+ -0.084936,-0.226589,-0.97028,1.838895,-1.087204,1.201408,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647,
+ -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647,
+ -0.1083,-0.048546,-0.992932,2.024692,-1.074646,1.172465,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ -0.069765,-0.126006,-0.989573,2.148553,-1.103067,1.06541,
+ -0.217942,-0.897186,-0.384133,2.17745,-1.127765,0.974416,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ 0.056398,-0.684481,-0.726846,1.650318,-1.645881,1.053347,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ 0.457853,0.537523,0.708124,1.612396,-1.485728,1.099731,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ -0.404532,-0.045989,0.913367,1.54175,-1.643613,1.01419,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ 0.874983,0.217677,0.432459,1.480629,-1.640132,0.953447,
+ -0.081045,0.40912,0.908874,1.5167,-1.45305,1.068516,
+ 0.444124,0.617476,0.649214,1.454817,-1.430228,0.976569,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ -0.024032,-0.835976,-0.54824,1.645819,-1.087442,1.173773,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ -0.044013,0.340434,0.939238,1.524407,-1.125312,1.142248,
+ -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597,
+ 0.186476,0.252953,0.949337,1.438439,-1.148029,1.098069,
+ -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ 0.889638,-0.392482,0.233458,2.985371,1.982663,0,
+ 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198,
+ 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193,
+ -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602,
+ -0.476715,0.879058,0,3.118124,-0.703925,0,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ 0.4379,-0.250054,0.863549,3.053144,-0.609681,0.326931,
+ 0.6483,-0.171023,0.741928,3.107533,-0.691019,0.264602,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ -0.861251,0.383698,-0.333202,3.247406,2.073333,0,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ 0.694153,-0.467999,0.546926,3.454971,2.169877,0,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ 0.431966,-0.771434,0.46722,3.486028,-0.141683,0,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ -0.560204,0.828355,-0.00034,3.33521,-0.375755,0,
+ 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422,
+ 0.889638,-0.392482,0.233458,2.985371,1.982663,0,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ 0.397823,0.403779,0.823832,3.009101,1.971604,0.03422,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ -0.926486,-0.356041,0.121897,2.723503,1.898839,0,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.449887,0.239005,0.860511,3.036361,1.913989,0.169838,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.12555,0.440005,0.889176,2.715712,1.828219,0.167709,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.525142,-0.062799,0.848695,3.058366,1.773346,0.297337,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.10998,0.376752,0.919762,2.738132,1.687333,0.295046,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.561573,-0.148323,0.814024,3.086666,1.632991,0.338863,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.097864,0.250653,0.963118,2.77568,1.53871,0.352829,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.513731,-0.239493,0.823847,3.115383,1.49239,0.380228,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.12742,0.021045,0.991626,2.815366,1.377583,0.413399,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.506924,-0.406124,0.760323,3.163181,1.209972,0.462438,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.206882,-0.117024,0.971342,2.854291,1.093951,0.49465,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.552633,-0.484765,0.677938,3.189664,0.907503,0.500122,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.218538,-0.213954,0.952084,2.948387,0.783357,0.515058,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ 0.696414,-0.392791,0.600602,3.280681,0.510802,0.499434,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ 0.304965,-0.136677,0.942505,3.06109,0.397226,0.574193,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ 0.026499,0.942993,0.331757,3.321825,0.26669,0.46575,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ -0.061264,0.921927,0.382487,3.136321,0.171237,0.539896,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ 0.019336,0.837694,0.545798,3.36004,0.165487,0.412685,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ -0.070642,0.834207,0.546908,3.16616,0.02131,0.457261,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ 0.05298,0.780732,0.622615,3.378799,0.073736,0.355362,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ -0.055544,0.828008,0.557959,3.199571,-0.153739,0.38015,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ 0.115383,0.694945,0.709746,3.43895,-0.08258,0.257015,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ 0.146937,0.551946,0.820832,3.514981,-0.121886,0.187589,
+ -0.047374,0.758242,0.65025,3.286426,-0.300744,0.276331,
+ -0.046579,0.627301,0.777383,3.342159,-0.384674,0.201349,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ -0.910859,-0.100368,-0.400327,3.731689,0.186391,0,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ 0.338485,-0.103202,-0.935295,3.929251,0.411689,0,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.387987,0.466053,0.795148,3.737014,0.181837,0.176819,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.614456,0.489786,0.618509,3.955635,0.432417,0.197586,
+ 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.387394,0.516219,0.763835,3.700363,0.265794,0.240762,
+ 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.718673,-0.290446,0.631784,3.889626,0.475277,0.247365,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198,
+ 0.328244,0.603535,0.726637,3.67471,0.338839,0.30784,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.187432,0.691784,0.697355,3.641195,0.407454,0.362198,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.815771,-0.424495,0.392838,3.861841,0.560638,0.311961,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.065855,0.814333,0.576649,3.61965,0.472046,0.391742,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.900366,-0.205985,0.38329,3.849352,0.664451,0.387198,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.628361,-0.426126,0.65083,3.559394,0.706516,0.452535,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.906617,-0.14387,0.39667,3.823137,0.853054,0.461519,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.697438,-0.478568,0.533435,3.528445,1.060127,0.489443,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.908163,-0.140074,0.394486,3.747724,1.184933,0.518662,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.772313,-0.244122,0.586461,3.47341,1.366149,0.454658,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.907314,0.09913,0.4086,3.650974,1.46374,0.478617,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.805898,-0.146097,0.573745,3.377233,1.5878,0.400781,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.85208,0.278905,0.442914,3.590526,1.70109,0.411994,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.795625,-0.129968,0.591684,3.337545,1.748927,0.34021,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.759315,0.386803,0.523282,3.541188,1.849183,0.386366,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.748939,0.152982,0.644738,3.276333,1.863773,0.294266,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.636794,0.461927,0.617346,3.479418,1.97825,0.317478,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.693381,0.351142,0.629224,3.252224,2.026347,0.148215,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.662294,0.443714,0.603726,3.233975,2.059193,0.072431,
+ 0.722145,-0.312679,0.617041,3.460196,2.103494,0.180368,
+ 0.742962,-0.255405,0.618688,3.4583,2.151656,0.102662,
+ 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.709718,-0.453837,0.538824,2.986408,-0.413503,0.428964,
+ -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ -0.096144,-0.182414,0.97851,2.811504,0.469098,0.657443,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ -0.200187,-0.124247,0.971848,2.898733,0.271916,0.651298,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.720876,-0.356662,0.594247,2.953029,-0.12769,0.520499,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ 0.100131,0.509748,0.854477,2.835437,-0.231101,0.57789,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.023112,-0.187685,0.981957,2.91987,0.084875,0.64246,
+ 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.518786,-0.204527,0.830078,2.5392,-0.727778,0.750475,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ 0.58512,-0.108234,0.803692,2.618307,-0.549092,0.805491,
+ 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592,
+ 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ 0.539192,-0.226204,0.811236,2.514162,0.988713,0.674527,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ 0.543412,-0.359347,0.758665,2.604217,0.728827,0.769671,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.727708,-0.453484,0.514581,2.753156,0.400829,0.713141,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.663699,-0.195183,0.722085,2.70696,0.393597,0.849582,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488,
+ 0.287759,-0.574148,0.766517,2.790681,0.219187,0.718263,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488,
+ 0.675576,-0.202498,0.708937,2.731512,0.219003,0.891585,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.677632,-0.514013,0.525933,2.790657,0.044324,0.717488,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.655995,-0.105886,0.747301,2.734183,0.038769,0.86581,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.290845,-0.568581,0.769497,2.743995,-0.129852,0.718277,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.594643,-0.107364,0.796789,2.702577,-0.197406,0.795611,
+ 0.648132,-0.027411,0.761034,2.690576,-0.368057,0.819343,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592,
+ -0.012663,0.029084,0.999497,2.747937,0.712253,0.615674,
+ 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592,
+ 0.324748,-0.466051,0.823004,2.679445,0.687427,0.720573,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ 0.536218,-0.84408,0.000006,2.339597,1.807702,0,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ -0.05128,0.509983,0.858655,2.361089,1.76666,0.202595,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ -0.02226,0.394285,0.918719,2.406969,1.645328,0.341479,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ -0.026262,0.311275,0.949957,2.519027,1.485931,0.422962,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ -0.039079,0.203923,0.978207,2.553871,1.284278,0.512335,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ -0.031021,0.098798,0.994624,2.637461,1.01726,0.581611,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.727678,-0.414895,0.546211,2.542439,0.999928,0.648592,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ 0.71475,-0.118625,0.689247,2.183003,1.65407,0.341767,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.608407,-0.244593,0.754993,2.301359,1.397721,0.546015,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.370396,-0.36596,0.853745,2.396355,1.242239,0.597722,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.437631,-0.408484,0.801012,2.482917,0.997637,0.702425,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.189478,-0.558571,0.807525,2.5704,0.738683,0.830405,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.112446,-0.618661,0.77757,2.616001,0.447717,0.960748,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.276661,-0.626708,0.728489,2.668936,0.206182,1.014371,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.690473,-0.61586,0.379425,2.649413,0.031535,1.024796,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.883063,-0.251635,0.396079,2.60743,-0.208248,0.974218,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.918784,-0.122699,0.375208,2.594499,-0.422948,0.981263,
+ 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.876436,-0.293555,0.381688,2.543372,-0.548031,0.937182,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ 0.728904,-0.519577,0.445802,2.410367,-0.777999,0.841105,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ 0.080812,0.697931,0.711591,2.229345,-0.992723,0.862826,
+ 0.09853,0.626571,0.773111,2.292449,-0.871852,0.8824,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ -0.06371,0.842533,0.534864,2.346081,-0.74535,1.013296,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ 0.791391,-0.43807,0.426373,2.384638,-0.591919,1.043058,
+ 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ 0.623235,-0.257987,0.738255,2.439827,-0.395385,1.131324,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ 0.631747,-0.24686,0.734817,2.452588,-0.244072,1.138797,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ 0.659349,-0.248914,0.709437,2.50049,-0.035029,1.170179,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ 0.667276,-0.159228,0.727591,2.495354,0.250522,1.132081,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ 0.676544,-0.141883,0.722604,2.448969,0.529858,1.037335,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ 0.295093,-0.940225,0.16999,2.399389,0.782091,0.915279,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.08136,-0.929085,0.360806,2.347317,1.066114,0.758763,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ 0.016767,-0.927537,0.373356,2.266003,1.273253,0.663332,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ 0.226413,-0.89822,0.376747,2.189848,1.468992,0.517501,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ 0.552828,-0.750794,0.36151,2.096552,1.678482,0.32681,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545,
+ 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353,
+ 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ -0.178511,-0.973481,0.143068,0.480235,-1.631521,0.401961,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ 0.226963,-0.973903,0,0.44655,-1.67295,0,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804,
+ 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ -0.720176,-0.693792,0,1.794465,1.787719,0,
+ 0.779025,-0.626993,0,1.456656,1.785879,0,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ 0.779025,-0.626993,0,1.456656,1.785879,0,
+ 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ -0.057955,0.638634,0.767325,1.807583,1.756546,0.177627,
+ 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394,
+ 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ -0.024013,0.58573,0.810151,1.798719,1.714447,0.259352,
+ 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.016737,0.497476,0.867316,1.821946,1.618209,0.403751,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ 0.060533,0.377837,0.923891,1.859443,1.450393,0.632222,
+ 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ 0.088722,0.251367,0.963817,1.958254,1.130271,0.861813,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ 0.107989,0.168108,0.979836,1.975941,0.827957,1.018423,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ 0.10833,0.05569,0.992554,2.023441,0.529338,1.144399,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ 0.114032,-0.218132,0.969234,2.0817,0.283249,1.259461,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ 0.187438,-0.340915,0.921219,2.14179,-0.055306,1.295565,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ 0.25339,-0.287519,0.923648,2.136269,-0.187666,1.278057,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ 0.23972,-0.400363,0.884445,2.108912,-0.357128,1.259691,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518,
+ -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.898389,-0.217201,-0.381735,2.158585,-0.955809,1.113647,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.887036,-0.210048,-0.411154,2.222082,-0.957342,1.014137,
+ -0.069142,0.724976,0.685295,2.245624,-0.864372,0.995778,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933,
+ 0.213167,-0.525559,0.823619,2.013534,-0.662303,1.191491,
+ 0.193853,0.161608,0.967628,1.867657,-0.920633,1.206933,
+ -0.819256,-0.566976,0.085772,2.058189,-0.931238,1.163518,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ 0.751148,0.43192,-0.49922,1.451825,-1.576856,0.702758,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522,
+ -0.034649,0.9994,0,1.920432,-1.567396,0,
+ 0.140536,0.558684,0.817388,2.0482,-1.581983,0.555832,
+ -0.086361,-0.084973,0.992634,1.963153,-1.588839,0.612861,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ 0.776291,-0.374867,0.5068,1.721211,-1.590185,0.601932,
+ 0.24139,0.178826,-0.953809,1.599889,-1.595526,0.623185,
+ -0.560667,-0.828041,0,1.604939,-1.556997,0,
+ 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ 0.010538,0.399391,0.91672,1.328862,-1.352627,0.758733,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ 0.43768,-0.823149,-0.361748,1.310865,-1.136322,0.914838,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ -0.228294,-0.186048,0.955651,1.348219,-1.282064,0.845204,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597,
+ -0.493424,-0.16561,-0.853877,1.635139,-0.965221,1.184968,
+ 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ -0.570406,-0.192005,-0.798606,1.536037,-0.985876,1.185597,
+ 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ 0.040473,0.760778,0.647749,1.644178,-0.857872,1.208494,
+ 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804,
+ 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ 0.009434,0.815301,0.578961,1.640095,-0.674556,1.246804,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394,
+ 0.779025,-0.626993,0,1.456656,1.785879,0,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ 0.92802,-0.37253,0,0.927497,-1.558489,0,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ 0.770209,-0.637792,0,1.289448,-1.546597,0,
+ -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.165685,0.059692,0.98437,0.912989,-1.499314,0.419547,
+ -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.154129,-0.981148,0.116585,1.223415,-1.532658,0.434522,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.123389,0.256577,0.958615,0.912699,-1.455066,0.576185,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.301558,-0.77828,0.550766,1.210555,-1.460061,0.576841,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ -0.078623,0.370994,0.925301,0.922703,-1.296032,0.728307,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ -0.263451,-0.648591,0.714089,1.19204,-1.330605,0.678707,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ 0.070189,0.510248,0.857158,0.93066,-1.216516,0.831196,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ -0.267766,-0.862787,0.428835,1.219163,-1.218342,0.823029,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ 0.242426,0.58207,0.77616,0.956456,-1.070504,0.921063,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ -0.253979,-0.745808,0.615845,1.230116,-1.085439,0.894543,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ 0.325482,0.443544,0.835063,0.939974,-0.894739,1.019809,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ -0.231653,-0.530839,0.815198,1.252961,-0.928825,1.001643,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353,
+ 0.305452,0.425365,0.851918,0.948819,-0.638568,1.102958,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ 0.235667,0.756618,0.60991,0.97453,-0.525273,1.140353,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ 0.150328,0.92948,0.336851,0.960321,-0.308052,1.243133,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ 0.007127,0.896038,0.44392,1.678622,-0.410061,1.291177,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ 0.100598,0.942931,0.317428,0.943855,-0.101127,1.274771,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ -0.137161,-0.98063,0.139827,1.664159,-0.189659,1.266729,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ 0.076524,0.950336,0.301672,0.950215,0.042751,1.256188,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ -0.252973,-0.819125,0.51482,1.660355,0.019397,1.246002,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ 0.013768,-0.992402,0.122267,0.927775,0.195225,1.233043,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ -0.251063,-0.683027,0.685888,1.649027,0.224458,1.211969,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ 0.037423,-0.986705,0.158154,0.939271,0.379986,1.185872,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ -0.208715,-0.624734,0.752427,1.63008,0.420236,1.172369,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ 0.034172,-0.858604,0.511498,0.921312,0.755659,0.99933,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ -0.185127,-0.491394,0.851035,1.582203,0.771083,1.06818,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545,
+ 0.004725,-0.680391,0.732834,0.857323,0.985001,0.874029,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ 0.023352,-0.872807,0.487506,0.760722,1.205036,0.700545,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ -0.148631,-0.373855,0.915501,1.570685,0.938327,0.989108,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.068777,-0.757383,0.649339,0.725959,1.478055,0.461804,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ -0.305786,-0.232288,0.923329,1.517126,1.334367,0.741076,
+ 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.102263,-0.969566,0.222452,1.504951,1.483493,0.585976,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.100949,-0.548551,0.830001,0.737904,1.604213,0.281713,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.120054,-0.825719,0.551157,1.497138,1.618935,0.401108,
+ 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781,
+ 0.981421,-0.191868,0,0.733818,1.740873,0,
+ 0.152876,-0.742504,0.652163,1.483832,1.697594,0.288781,
+ 0.184661,-0.694307,0.695585,1.462507,1.745481,0.222394,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ -0.039092,-0.999236,0,-0.228904,1.734267,0,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ 0.566114,-0.824327,0,0.234527,1.730117,0,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.067879,0.951186,0.30106,-0.221516,1.686349,0.151403,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ 0.095331,0.952335,0.289775,0.223642,1.684075,0.160743,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.085022,0.963119,0.255291,-0.267035,1.627058,0.266577,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ 0.10291,0.954344,0.280422,0.23733,1.595746,0.288672,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.120743,0.971588,0.203561,-0.247999,1.565146,0.389142,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ 0.172251,0.950689,0.257916,0.289039,1.496446,0.430055,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.117963,0.926753,0.356669,-0.179548,1.471301,0.544513,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.28101,0.853935,0.437982,0.305671,1.298417,0.629719,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.109947,0.693426,0.71209,-0.192546,1.305535,0.70008,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ 0.381239,0.555717,0.738807,0.243473,1.134082,0.819993,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ 0.076565,0.333251,0.939724,-0.406155,1.005088,0.971088,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ 0.376012,0.360026,0.853813,0.316341,0.785311,1.08626,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ -0.039599,0.171847,0.984327,-0.11519,0.458427,1.346197,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ 0.207079,0.373404,0.904261,0.539252,0.353984,1.254493,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ -0.164971,0.181757,0.969406,0.005537,0.163519,1.472265,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ -0.045242,0.348413,0.936249,0.53915,0.148262,1.321014,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ -0.216817,0.278777,0.935561,0.018086,0.002865,1.523199,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ -0.212948,0.334057,0.918182,0.516872,-0.020713,1.356627,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ -0.219724,0.297861,0.928978,0.034087,-0.225059,1.542949,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ -0.282152,0.285245,0.915983,0.542386,-0.188227,1.370375,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ -0.227369,0.161984,0.960242,0.010486,-0.502317,1.576297,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ -0.326048,0.118611,0.937883,0.546875,-0.39094,1.363244,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ -0.30296,-0.137183,0.943078,0.021051,-0.831931,1.511548,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ -0.422758,-0.178302,0.888529,0.550658,-0.633015,1.331311,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ -0.387895,-0.42081,0.820034,-0.04157,-1.143825,1.395176,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ -0.504483,-0.438591,0.743731,0.527724,-0.862854,1.253811,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ -0.433119,-0.541142,0.720814,-0.071941,-1.346991,1.237379,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ -0.53858,-0.616298,0.57455,0.544825,-1.133123,1.096902,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ -0.455057,-0.684123,0.569999,-0.0723,-1.450245,1.087397,
+ -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082,
+ -0.507894,-0.767261,0.391606,0.530629,-1.316423,0.929842,
+ -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ -0.084259,-0.367691,0.926123,-0.063012,-1.583021,0.865082,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ -0.375453,-0.69207,0.616502,0.538756,-1.408602,0.764911,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ 0.061261,0.954316,0.292452,-0.07847,-1.688266,0.80023,
+ 0.076968,0.969253,0.233719,-0.094135,-1.769086,0.556924,
+ -0.1427,-0.847733,0.510868,0.489819,-1.524947,0.672392,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ -0.098179,0.995169,0,-0.866132,1.75467,0,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ -0.009814,-0.999952,0,-0.547248,1.742126,0,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ 0.136965,0.155729,0.978258,-0.894132,1.712652,0.151911,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ -0.021294,0.896295,0.442946,-0.559706,1.69418,0.186107,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ 0.173447,0.205435,0.963178,-0.954897,1.677544,0.293034,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ -0.072244,0.618144,0.782738,-0.557624,1.641278,0.271462,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ 0.136801,0.29658,0.945159,-1.017767,1.607824,0.541965,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ -0.038944,0.247819,0.968023,-0.626493,1.585426,0.443136,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ 0.095019,0.330845,0.938889,-1.04607,1.509097,0.76106,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ -0.00315,0.115338,0.993321,-0.597781,1.48962,0.641047,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.07657,0.16758,0.982881,-1.115594,1.39238,0.819623,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.016683,0.197618,0.980137,-0.674657,1.333008,0.761059,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.079214,-0.175111,0.981357,-1.278903,1.192051,0.946843,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.032424,0.316591,0.948008,-0.910602,1.204118,0.83774,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ 0.204115,-0.405276,0.891116,-1.200768,0.978822,1.103391,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ 0.053195,0.343167,0.937767,-0.969076,0.901205,1.146223,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ 0.396045,-0.47666,0.784821,-1.147922,0.807955,1.254191,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ 0.057735,0.173734,0.983099,-0.752416,0.438132,1.467349,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ 0.238702,-0.258568,0.936036,-1.120716,0.424016,1.45699,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ 0.058723,-0.195869,0.97887,-0.645496,0.179261,1.584316,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ 0.11717,0.938619,0.324447,-1.077307,0.165008,1.553393,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ 0.088769,-0.475351,0.875307,-0.536767,-0.144454,1.682232,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ 0.080398,0.9582,0.274571,-1.053434,-0.342553,1.690245,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ 0.099302,-0.563694,0.819993,-0.533528,-0.58228,1.701405,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ 0.069061,0.958871,0.275312,-1.077209,-0.869649,1.633144,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ 0.093802,-0.705497,0.702478,-0.505045,-0.913827,1.645612,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ 0.051291,0.888276,0.456438,-1.061272,-1.141877,1.49623,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ 0.058028,-0.329667,0.942312,-0.487217,-1.193519,1.504026,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ -0.008282,0.691944,0.721904,-1.001366,-1.335897,1.353338,
+ -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865,
+ 0.096347,0.961203,0.258467,-0.524231,-1.399266,1.313019,
+ -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ 0.098712,0.966371,0.23745,-0.526127,-1.495,1.167736,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ 0.079848,0.962653,0.258695,-0.535144,-1.615983,0.920556,
+ 0.136523,0.621747,0.771228,2.881063,-0.493146,0.521968,
+ 0.478274,-0.500384,0.721713,2.736198,-0.346225,0.659345,
+ 0.245892,-0.489895,0.836385,2.688131,-0.517509,0.672975,
+ 0.048754,0.934073,0.353738,2.824356,-1.407256,0.355013,
+ 0.303729,-0.050718,0.951408,2.740886,-1.339225,0.463604,
+ 0.33122,-0.270106,0.904067,2.663024,-1.440487,0.478149,
+ -0.382074,-0.25681,-0.887732,1.337875,-0.945716,1.021299,
+ -0.53197,-0.108751,-0.839751,1.428883,-0.98669,1.133905,
+ -0.218261,-0.26262,0.93989,1.373216,-0.56462,1.106245,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.065586,-0.997847,0,-1.179474,1.786649,0,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.115746,0.20405,0.972094,-1.215563,1.757097,0.133494,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.164191,0.153328,0.974439,-1.227613,1.709095,0.276029,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ -0.15812,-0.033626,0.986847,-1.292756,1.656509,0.51403,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ 0.005821,-0.234321,0.972142,-1.338488,1.613735,0.725441,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ 0.243464,-0.335965,0.909864,-1.403848,1.533059,0.902827,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ 0.49938,-0.45475,0.737443,-1.551526,1.400025,1.050193,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ 0.573426,-0.441087,0.69038,-1.552899,1.128654,1.15104,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ 0.1643,0.873906,0.457487,-1.454529,0.875045,1.238858,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.012448,0.906487,0.422051,-1.405685,0.573835,1.352181,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.051905,0.965082,0.256753,-1.479588,0.295746,1.440042,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.088843,0.888,0.45118,-1.489699,-0.024215,1.510987,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.169971,0.704712,0.688832,-1.395501,-0.698702,1.553257,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.261543,0.44691,0.855492,-1.376176,-0.948757,1.451608,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.33898,0.203127,0.918603,-1.402349,-1.127845,1.309055,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ 0.262234,-0.965004,0,-1.35095,1.807009,0,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.234266,0.044111,0.971171,-1.365948,1.769608,0.133901,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.108631,-0.122719,0.986478,-1.396332,1.723782,0.267642,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.006683,-0.232823,0.972496,-1.417595,1.67618,0.529265,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ -0.004872,-0.216103,0.976358,-1.465432,1.655336,0.722125,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ 0.193955,-0.251788,0.948148,-1.582187,1.567542,0.982349,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.337275,0.918092,0.208215,-1.721806,1.391264,1.113307,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.47652,0.732046,0.486866,-1.733703,1.083864,1.181489,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.505556,0.519614,0.688777,-1.807421,0.657142,1.209422,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.539732,0.31653,0.780063,-1.796156,0.452382,1.243643,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.545639,0.142044,0.825894,-1.81092,0.287592,1.292257,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.512472,0.102596,0.852553,-1.79513,0.033439,1.37116,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.449233,0.123555,0.88483,-1.802864,-0.282523,1.401315,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ -0.404056,0.117264,0.907187,-1.837859,-0.540871,1.295851,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ -0.387051,0.087836,0.917865,-1.782928,-0.770786,1.173619,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.0448,0.42163,0.905661,-0.952525,-1.440582,1.16865,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.390861,0.032481,0.919876,-1.757573,-0.945337,1.075832,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567,
+ -0.351241,0.07582,0.93321,-1.407658,-1.236026,1.11293,
+ -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567,
+ -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ 0.021487,0.999769,0,-1.67651,1.826886,0,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.373751,-0.169261,0.911954,-1.683863,1.789041,0.121501,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.426971,-0.09322,0.899447,-1.714432,1.747956,0.247594,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.457657,0.090776,0.884483,-1.744732,1.734849,0.433807,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.575033,0.794917,0.193504,-1.929731,1.617188,0.80639,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.636638,0.552106,0.538397,-1.996117,1.387891,1.064104,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.643784,0.341688,0.684684,-1.980388,1.134038,1.143196,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.646492,0.202786,0.735477,-2.013663,0.810726,1.158827,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.624566,0.121329,0.77149,-2.030191,0.547622,1.189762,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.588582,0.130278,0.797872,-2.021159,0.411979,1.234679,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ -0.553145,0.120209,0.824367,-1.932916,0.232972,1.304589,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ -0.547788,0.055501,0.834774,-1.897394,0.037852,1.365798,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ -0.563128,0.005618,0.826351,-1.950547,-0.275573,1.377028,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ -0.596319,-0.021767,0.802452,-2.033655,-0.526012,1.277639,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ -0.626255,-0.080061,0.775497,-2.050292,-0.755566,1.114167,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.6343,-0.110875,0.765095,-2.043593,-0.875823,1.028879,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ 0.181762,-0.983343,0,-2.057387,1.841308,0,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ -0.549206,0.149158,0.822268,-2.079597,1.817785,0.138375,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ -0.881408,0.44424,0.16053,-2.10017,1.78998,0.229245,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ -0.881352,0.261345,0.393596,-2.137524,1.753182,0.433142,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ -0.880731,0.130088,0.4554,-2.172139,1.62301,0.805318,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ -0.874101,0.053175,0.482825,-2.205791,1.356023,1.081662,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ -0.875552,0.01506,0.482889,-2.296056,1.06281,1.171139,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ -0.86587,-0.001845,0.500266,-2.298249,0.768333,1.203884,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ -0.84112,-0.026303,0.540209,-2.256285,0.547326,1.238301,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ -0.813168,-0.06637,0.578232,-2.1584,0.381542,1.272962,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ -0.799953,-0.096213,0.592299,-2.070413,0.207766,1.335106,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ -0.811102,-0.12903,0.570495,-2.064786,0.018789,1.411866,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ -0.848349,-0.120539,0.515533,-2.187634,-0.375454,1.406902,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ -0.880002,-0.033987,0.473752,-2.276341,-0.689823,1.268026,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ -0.870332,0.069095,0.487595,-2.292049,-0.933921,1.128136,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ 0.03611,0.999348,0,-2.629466,1.918204,0,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ -0.946902,-0.290276,-0.138264,-2.672899,1.90511,0.067168,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149,
+ -0.982633,-0.14343,-0.11773,-2.697367,1.871291,0.218796,
+ 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ -0.995584,-0.070631,-0.061842,-2.703112,1.825435,0.395127,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ -0.997475,-0.070819,-0.005318,-2.715246,1.746763,0.604653,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ -0.980175,-0.184883,-0.071243,-2.71748,1.576797,0.875971,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ -0.976177,-0.17359,-0.130171,-2.68493,1.262021,1.11049,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ -0.984416,-0.175855,0.000915,-2.572286,0.835495,1.252192,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ -0.977902,-0.171035,0.12023,-2.536112,0.656633,1.269661,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ -0.964119,-0.189683,0.18573,-2.520947,0.559036,1.273617,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ -0.955381,-0.23808,0.174826,-2.47375,0.300945,1.316695,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ -0.843742,-0.096325,0.528036,-2.433366,0.078222,1.371269,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ 0.028952,-0.016247,0.999449,-2.41473,-0.108377,1.395384,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ 0.093953,-0.049433,0.994349,-2.38292,-0.41745,1.375045,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ 0.335613,-0.388493,0.858159,-2.430508,-0.822313,1.254486,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596,
+ -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ 0.048753,-0.975535,0.21437,-3.519716,1.685231,0.31713,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ -0.177142,-0.976279,0.124502,-3.527168,1.583508,0.512679,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ 0.430742,-0.887318,0.164705,-3.512997,1.44805,0.611386,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ 0.35682,-0.781398,0.511954,-3.476235,1.287798,0.704766,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ 0.493535,-0.729115,0.474147,-3.442151,1.105486,0.762934,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ 0.04422,-0.704109,0.708714,-3.379131,0.767915,0.885996,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ 0.083262,-0.787311,0.610908,-3.306875,0.379713,0.98762,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ 0.170756,-0.748007,0.641349,-3.251181,0.175063,1.053445,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ 0.64791,-0.754869,-0.101908,-3.160225,-0.018852,1.113626,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512,
+ 0.381337,-0.795981,0.470103,-3.101125,-0.35476,1.162409,
+ 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ 0.183908,-0.773381,0.606679,-3.096267,-0.6681,1.140081,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ 0.018755,-0.837462,0.546174,-3.122061,-0.998702,1.065015,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015,
+ -0.094688,-0.959937,0.263734,-3.15021,-1.259588,1.001021,
+ 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0,
+ -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745,
+ -0.626255,-0.080061,-0.775497,-3.690685,1.60208,0,
+ -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745,
+ -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469,
+ 0.49176,-0.810764,0.317543,-3.734989,1.589433,0.295202,
+ -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ 0.43907,-0.579988,0.686172,-3.697974,1.466697,0.433432,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ 0.099157,-0.476834,0.873383,-3.684619,1.35069,0.501428,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.073547,-0.481419,0.8734,-3.655148,1.190938,0.573692,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ -0.147229,-0.706225,0.69251,-3.639878,1.015186,0.615203,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ 0.328487,-0.940917,-0.082286,-3.582867,0.734419,0.697787,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.319475,-0.944225,0.079844,-3.504525,0.405574,0.847066,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.393694,-0.919049,-0.018795,-3.424258,0.158638,0.918279,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.327707,-0.94199,-0.072547,-3.365413,-0.113447,0.9524,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.163041,-0.980692,-0.107986,-3.290393,-0.424259,0.984153,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ -0.040019,-0.929968,0.365457,-2.937658,-1.002749,1.219413,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ 0.162276,-0.745105,0.646905,-2.624856,-0.8882,1.261176,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ -0.403877,-0.879274,0.252509,-2.901159,-0.619504,1.284058,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ -0.11636,-0.749063,0.652201,-2.616467,-0.511373,1.344133,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ -0.171647,-0.971664,0.162499,-2.90708,-0.345582,1.281557,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ 0.215155,-0.464575,0.858999,-2.649338,-0.241719,1.339644,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ -0.198045,-0.959194,0.201804,-2.971546,0.032038,1.215971,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ 0.121987,-0.426327,0.896306,-2.687022,0.076781,1.290565,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ -0.279342,-0.940234,0.19475,-3.044646,0.224321,1.164934,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ 0.161064,-0.731195,0.662882,-2.787011,0.264495,1.237352,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ 0.152347,-0.821467,0.549529,-3.112555,0.457376,1.084816,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ 0.08565,-0.422547,0.902285,-2.79063,0.46881,1.224273,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ -0.094238,-0.851252,0.516225,-3.19641,0.797564,0.985913,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ 0.155794,-0.590112,0.792146,-2.825835,0.755899,1.209042,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ -0.079302,-0.84299,0.532051,-3.244771,1.19554,0.910945,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ 0.106237,-0.558927,0.822383,-2.930312,1.10358,1.125876,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ -0.176655,-0.950799,0.254508,-3.27808,1.432418,0.853958,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ 0.008663,-0.516082,0.856495,-3.028932,1.461517,0.941324,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ -0.4144,-0.844957,0.338113,-3.338742,1.598933,0.689636,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ 0.357021,-0.590654,0.723646,-3.08565,1.65734,0.784479,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ -0.150892,-0.83775,0.524792,-3.395381,1.726325,0.55477,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ -0.201818,-0.568242,0.797728,-3.109047,1.789477,0.565323,
+ 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ 0.095733,-0.224552,0.969748,-2.765069,-1.561164,1.084313,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ 0.074896,0.047734,0.996048,-2.299356,-1.025449,1.044687,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ 0.009712,0.399549,0.91666,-2.687162,-1.539807,0.988048,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ -0.004413,-0.170526,0.985343,-2.566746,-1.211312,1.167101,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ 0.81802,-0.47123,0.329827,1.747671,-2.067518,0.638841,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ 0.247956,0.087485,-0.964813,1.772999,-2.230292,0.64494,
+ 0.761939,0.13671,-0.633055,1.945206,-2.015769,0.672724,
+ -0.121543,0.046,-0.99152,1.921881,-2.157616,0.692678,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ 0.756976,-0.653442,0,2.128139,1.788397,0,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.70745,-0.193334,0.679806,2.13239,1.755821,0.180271,
+ -0.385788,0.922588,0,2.042206,1.777154,0,
+ 0.411872,0.04507,0.910127,2.069379,1.727818,0.212746,
+ -0.149005,-0.65467,0.741084,-2.862576,-1.546894,1.117139,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.431118,-0.034268,0.901645,-3.23261,-1.834299,1.087832,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.299215,-0.929389,0.216115,-2.982676,-1.264649,1.133596,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ -0.351476,-0.711504,0.608463,-2.725776,-1.214862,1.190384,
+ -0.18119,-0.970212,0.160805,-3.063133,-1.440555,1.090926,
+ -0.461794,0.113692,0.879671,-2.955052,-1.49684,1.128812,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ 0.737412,0.542596,0.402261,-3.36599,-1.48517,0.888076,
+ -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628,
+ 0.059023,-0.965365,0.25414,-3.188954,-1.408279,0.963611,
+ -0.508357,0.250892,0.823787,-3.342096,-1.533989,0.921628,
+ -0.46316,0.228643,0.856274,-3.357996,-1.811803,0.975625,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.13251,0.440061,0.888137,-2.837147,-1.791733,0.921563,
+ -0.11646,-0.017993,-0.993032,-2.892438,-1.95081,0.87812,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ -0.039603,0.339955,0.939607,-3.144012,-2.333635,0.829994,
+ 0.339875,0.026681,-0.940092,-3.030605,-2.311222,0.88433,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514,
+ 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514,
+ 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229,
+ -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969,
+ 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ 0.585043,-0.503499,0.635777,-3.316551,-3.168932,1.121229,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823,
+ -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693,
+ -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693,
+ -0.921044,0.324519,0.215325,-3.330406,-3.18519,0.950058,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ 0.701058,-0.463233,0.542155,-2.986345,-2.93377,1.087679,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ 0.021785,0.053611,0.998324,-3.107105,-2.947818,1.092235,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ -0.225282,0.274902,0.934707,-3.177108,-2.979305,1.139084,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969,
+ -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ -0.140754,0.08766,0.986156,-3.227676,-3.14166,1.103969,
+ 0.245984,0.029506,0.968825,-3.223286,-3.00178,1.126176,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ 0.586456,-0.375618,0.717621,-3.301857,-3.074776,1.114869,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ 0.788485,-0.288832,0.543017,-3.302419,-3.017921,1.128514,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ -0.904362,0.426369,-0.018424,-3.333954,-3.058673,0.974748,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823,
+ -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.190279,0.223108,-0.956042,-3.294389,-3.166225,0.842823,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ -0.891992,-0.016937,0.451734,-3.06981,-2.928755,0.845236,
+ -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ -0.888643,-0.077171,0.45206,-3.166971,-3.002766,0.812106,
+ -0.121989,0.019056,-0.992349,-3.256731,-3.032131,0.849693,
+ 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ 0.091886,-0.230243,-0.968785,-3.008412,-2.89976,0.904635,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ 0.23503,0.016105,0.971855,-2.946527,-2.939327,0.986343,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ -0.99734,0.010762,-0.072093,-3.347304,-2.573628,0.955211,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ 0.71789,-0.165877,0.676106,-3.32033,-2.827513,1.063914,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ 0.163153,0.19945,0.96623,-3.251541,-2.56405,1.023627,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ 0.567548,-0.015056,0.823203,-3.26181,-2.821069,1.088218,
+ -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431,
+ 0.851754,0.52393,-0.003494,-3.162498,-2.556375,1.058409,
+ -0.347185,0.293858,0.890567,-3.196508,-2.788166,1.045431,
+ -0.119083,0.074969,0.99005,-3.141072,-2.785287,1.032318,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ 0.705477,-0.524425,0.47674,-3.053267,-2.764905,1.043008,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ 0.840313,0.535537,-0.084107,-3.078699,-2.553982,1.046834,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ -0.149743,-0.291108,-0.944898,-3.339637,-2.846837,0.966368,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ 0.308087,0.149605,-0.939522,-3.372066,-2.569159,0.904785,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ -0.146645,-0.575935,-0.804235,-3.300372,-2.795728,0.878984,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ 0.722847,0.455753,-0.519404,-3.297886,-2.54902,0.861657,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117,
+ -0.686439,0.576002,0.443872,-3.184812,-2.768053,0.850127,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117,
+ 0.61389,0.702597,0.359856,-3.240554,-2.555467,0.856262,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ -0.369855,0.817227,0.441981,-3.137383,-2.776449,0.844117,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ 0.780958,0.624512,0.00945,-3.132772,-2.528669,0.848639,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ 0.011581,0.887039,0.461548,-3.040038,-2.780893,0.914614,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ 0.441943,-0.143195,0.88554,-3.016419,-2.765091,0.966671,
+ -0.674431,0.094186,-0.732306,-3.04661,-2.510881,0.900772,
+ -0.178214,-0.110838,-0.977729,-3.022819,-2.52224,0.979148,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ 0.515412,-0.714946,-0.472444,-3.319817,-1.365015,0.886015,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ 0.074429,-0.99521,-0.063385,-3.233333,-0.683782,1.015512,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ -0.012978,-0.998326,-0.056357,-3.238094,-0.979377,0.961631,
+ -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868,
+ 0.249604,-0.855993,-0.452741,-3.27751,-1.177346,0.9153,
+ -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868,
+ -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ -0.98615,-0.150918,0.068783,-3.631292,0.701013,0.420276,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.84728,-0.52968,0.039439,-3.570384,0.385564,0.52448,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.815087,-0.388054,0.430171,-3.520188,0.140164,0.618561,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.945906,-0.323169,0.028687,-3.458251,-0.12595,0.731712,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.896964,-0.287307,0.336022,-3.406618,-0.343461,0.746456,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745,
+ -0.848349,-0.120539,-0.515533,-3.709827,1.417763,0,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469,
+ -0.454242,-0.890878,-0.000928,-3.709741,1.351194,0.211745,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ -0.354058,-0.732075,-0.581987,-3.701634,1.27265,0.270469,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ -0.844095,-0.536194,0,-3.601668,1.293049,0,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ -0.587869,-0.808404,0.029894,-3.695872,1.156978,0.316829,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ -0.946116,-0.323827,0,-3.608593,1.163581,0,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.581301,-0.608503,-0.540197,-3.672431,1.044224,0.364991,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.736087,-0.675143,0.048562,-3.664355,0.932851,0.370749,
+ -0.997181,-0.075036,0,-3.622326,1.005378,0,
+ -0.996668,0.081567,0,-3.623861,0.911561,0,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ -0.999862,-0.016634,0,-3.900566,1.002504,0,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ -0.964752,0.26316,0,-3.87514,1.480358,0,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ -0.766357,0.642415,0,-3.712832,1.794492,0,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645,
+ -0.410619,0.911807,0,-3.47843,1.975409,0,
+ 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.604306,0.20436,0.770098,-3.81743,0.150343,0.048629,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.02054,-0.128179,0.991538,-3.84447,0.498176,0.053132,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.193291,-0.0748,0.978286,-3.88734,1.003866,0.057635,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.133637,0.26732,0.954296,-3.86082,1.479723,0.062137,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229,
+ 0.555353,0.507651,0.65869,-3.698925,1.787941,0.06664,
+ 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.823156,0.134626,0.551624,-3.469715,1.961504,0.071141,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.836108,-0.069219,0.54418,-3.786822,0.153783,0.084233,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.412833,-0.156454,0.897269,-3.811194,0.501935,0.092033,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.108828,-0.182644,0.977137,-3.851206,1.007586,0.099831,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.746476,-0.187741,0.638379,-3.821694,1.477989,0.107631,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.883859,-0.211187,0.417364,-3.660928,1.770041,0.115431,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229,
+ 0.544736,0.449333,0.708069,-3.445903,1.923509,0.123229,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.269343,0.329305,0.904993,-3.745007,0.158482,0.097274,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.397989,0.4494,0.799778,-3.765736,0.50707,0.106281,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.264978,0.116702,0.957166,-3.80184,1.012668,0.115288,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.312982,-0.015529,0.949632,-3.768245,1.475619,0.124295,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.470021,0.18298,0.863481,-3.609021,1.745588,0.133304,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.661824,0.260114,0.703086,-3.703185,0.163182,0.084262,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.675892,0.137563,0.724049,-3.720269,0.512205,0.092064,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ 0.708269,-0.122725,0.695193,-3.752468,1.017751,0.099865,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ 0.540204,-0.272055,0.796345,-3.714787,1.473248,0.107668,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216,
+ 0.723289,-0.195474,0.662302,-3.557104,1.72113,0.11547,
+ 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ 0.017555,-0.142899,0.989582,-3.672559,0.166625,0.048678,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.961046,0.110911,0.253159,-3.686972,0.515966,0.053185,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.999831,-0.018401,-0.000261,-3.703058,1.022838,-0.000069,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ 0.910294,-0.144636,0.387873,-3.716312,1.021474,0.057693,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ 0.941293,-0.337592,-0.000186,-3.661286,1.470876,-0.000074,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.813709,-0.132052,0.566074,-3.675638,1.471512,0.062201,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ -0.153783,-0.988105,0,-3.507689,1.700214,0,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ 0.577502,-0.140087,0.804281,-3.519086,1.70322,0.066709,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ -0.028502,-0.108631,0.993674,-3.661331,0.167886,0.000058,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ 0.998889,0.047122,-0.000074,-3.674766,0.517345,-0.000063,
+ -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.781868,0.537363,0.316106,-3.67251,0.16663,-0.048579,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.891325,0.039302,-0.451658,-3.686972,0.515966,-0.053185,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ 0.618085,0.65091,0.440781,-3.703099,0.163192,-0.084205,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ 0.549192,0.015162,-0.835559,-3.720269,0.512205,-0.092064,
+ 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ 0.171039,0.554898,0.814146,-3.744907,0.158493,-0.097274,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ 0.002291,-0.021629,-0.999763,-3.765736,0.50707,-0.106281,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ -0.120429,-0.209965,0.970264,-3.786736,0.153792,-0.084291,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ -0.545298,-0.056465,-0.836338,-3.811194,0.501935,-0.092033,
+ 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ 0.054863,-0.132814,0.989621,-3.828633,0.149083,0,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ -0.222902,0.035918,0.974179,-3.817381,0.150348,-0.048728,
+ -0.996511,-0.083465,-0.000062,-3.856649,0.496801,0,
+ -0.888551,-0.077176,-0.452239,-3.84447,0.498176,-0.053132,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ 0.012502,-0.999922,0,-3.037562,2.001526,0,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ -0.433128,-0.901332,0,-3.242148,2.021387,0,
+ 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ 0.707626,-0.125604,0.695334,-3.238225,2.005405,0.075645,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ 0.137764,-0.289893,0.947092,-3.053102,1.96881,0.051104,
+ 0.722,0.398916,0.565317,-3.227504,1.961738,0.131029,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ 0.094371,-0.230057,0.968591,-3.07531,1.846,0.363149,
+ 0.137206,-0.207537,0.968557,-3.077669,1.871112,0.217368,
+ 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.302716,0.058971,0.951255,4.852578,1.889721,0.605031,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619,
+ 0.332757,0.286207,0.898531,4.926194,1.859813,0.582137,
+ 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ -0.03359,0.173471,0.984266,4.944706,1.840663,0.575374,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.043397,0.435463,0.89916,4.825996,2.089176,0.576083,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949,
+ 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233,
+ 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713,
+ 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.235746,0.648569,0.723728,4.964945,2.053575,0.499903,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233,
+ 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.101497,0.61661,0.780699,5.020077,1.97817,0.480978,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.069483,0.206285,0.976022,4.983034,1.806343,0.505779,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.112152,0.130705,0.985057,4.963546,1.783161,0.553515,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.243508,0.533327,0.810103,4.908019,1.796041,0.587882,
+ 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ 0.477291,0.716177,0.509199,5.030289,1.827419,0.440803,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ 0.888167,0.420088,0.186241,4.991904,1.760829,0.510386,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.749779,0.312648,0.583167,4.936066,1.737668,0.557276,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.358075,0.480709,0.800438,4.871155,1.741238,0.592326,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.524848,0.480955,0.702294,4.816181,1.79786,0.604026,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ 0.504806,0.844077,0.180846,5.00244,2.105746,0.468233,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ -0.148853,0.101172,0.98367,4.927885,2.15656,0.516579,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ -0.034875,0.308036,0.950735,4.872539,2.159259,0.542891,
+ 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ 0.184871,0.227138,0.956154,4.798297,2.118191,0.591085,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288,
+ 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332,
+ 0.384025,-0.256534,0.88697,4.807794,2.143653,0.570393,
+ 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.292794,-0.691168,0.660725,4.881855,2.194544,0.530288,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ 0.507131,-0.710633,0.487667,4.93795,2.181155,0.486939,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ 0.468872,-0.092982,0.878359,5.030641,2.102197,0.432329,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113,
+ 0.988203,-0.047217,0.145687,5.085813,1.888503,0.408327,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165,
+ 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ 0.259896,0.111139,0.95922,4.89385,2.220523,0.417713,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ 0.230527,0.277299,0.932718,4.995978,2.148785,0.344534,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ 0.171367,-0.69152,0.701736,5.06084,2.053335,0.309324,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.258975,-0.768157,0.585548,5.097062,1.954206,0.328795,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.154813,-0.698608,0.698556,5.105589,1.864086,0.347113,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ 0.936242,-0.313777,-0.158096,5.058179,1.788186,0.417387,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606,
+ 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275,
+ 0.831186,-0.511045,-0.219005,5.019836,1.739907,0.485562,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.797293,-0.558933,-0.227857,4.917973,1.68148,0.544201,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.707669,-0.687185,0.164261,4.862636,1.684144,0.570155,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.744254,-0.65416,0.134758,4.752337,1.723388,0.591296,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.884603,-0.366979,0.287755,4.697607,1.768061,0.576663,
+ 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191,
+ 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ -0.149467,-0.273889,0.950076,5.072165,2.04363,0.209228,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.06611,-0.359829,0.930673,5.127157,1.942759,0.211214,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ -0.091049,-0.145989,0.985087,5.152698,1.830661,0.287042,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ -0.12102,-0.514608,0.848842,5.133171,1.715563,0.334258,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407,
+ -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407,
+ 0.205809,-0.680492,0.703259,4.615408,1.639641,0.577768,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ 0.396941,-0.593503,0.700137,4.560751,1.785154,0.562428,
+ 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ 0.025716,-0.894111,0.447106,4.551484,1.841749,0.575191,
+ 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ 0.051115,-0.906355,0.419413,4.533113,1.989009,0.578975,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794,
+ 0.256335,-0.2349,0.937611,4.561299,2.133066,0.547248,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ 0.063508,-0.739371,0.670296,5.103427,1.624404,0.434275,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ 0.169576,-0.140705,0.975421,4.982822,1.503071,0.507606,
+ 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ 0.111896,-0.605741,0.787755,4.927282,1.486953,0.526327,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.002178,-0.833415,0.552643,4.79841,1.473149,0.570618,
+ 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658,
+ 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137,
+ 0.16399,-0.527953,0.833291,4.715646,1.502195,0.584339,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ -0.99798,-0.063521,0,5.378289,1.768448,0.000441,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ -0.99798,-0.063521,0,5.378289,1.768448,0.000441,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ 0.241049,-0.626018,0.741618,5.321136,1.795562,0.119606,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ 0.161367,-0.802085,0.574996,5.218821,1.803552,0.199306,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ 0.218068,-0.756333,0.616772,5.216855,1.636645,0.279797,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ 0.726183,-0.658007,0.199213,5.233176,1.442459,0.362988,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ 0.155382,-0.98726,0.034255,5.223191,1.371491,0.388069,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ 0.228199,-0.705361,0.671111,5.158322,1.23677,0.418043,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ 0.114701,-0.691525,0.713188,4.95536,1.236724,0.50523,
+ 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ 0.298912,-0.321997,0.898315,4.761601,1.363013,0.57137,
+ 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658,
+ 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658,
+ 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892,
+ 0.485742,-0.874075,-0.006874,4.679116,1.438434,0.589658,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ 0.035735,-0.99787,0.054579,4.596478,1.512987,0.598982,
+ -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ -0.034202,-0.995024,0.093584,4.560024,1.604023,0.589333,
+ 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ 0.06465,-0.997821,-0.013157,4.477781,1.687858,0.597407,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ 0.173736,-0.983834,-0.043437,4.459682,1.778884,0.588185,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555,
+ -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ -0.925873,-0.377836,0,5.424281,1.721152,0.000496,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773,
+ 0.272751,-0.332382,0.902845,5.421809,1.685349,0.123555,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ 0.161397,-0.648358,0.744032,5.383208,1.619661,0.202452,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666,
+ 0.142784,-0.229696,0.962732,5.373133,1.541142,0.246712,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ -0.045194,-0.595739,0.801906,5.334328,1.402713,0.332639,
+ -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ -0.016623,-0.697515,0.716377,5.296963,1.322443,0.357984,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ -0.105003,-0.636187,0.764356,5.260653,1.184173,0.352062,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ 0.027992,0.999608,0,5.588763,1.573846,0.000686,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ -0.301162,-0.110219,0.947182,5.604888,1.546091,0.113773,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ -0.430969,-0.132769,0.892546,5.566339,1.498677,0.190905,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ -0.293162,-0.051827,0.954657,5.528186,1.44018,0.250666,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ 0.274471,0.961025,0.033122,5.608974,1.317869,0.319719,
+ -0.034138,0.050771,0.998127,5.471928,1.345179,0.313899,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ 0.311768,0.950117,-0.008871,5.563253,1.235295,0.317238,
+ -0.101883,0.176778,0.978963,5.425783,1.264372,0.329687,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ -0.172671,0.234525,0.956652,5.397967,1.174238,0.346802,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ -0.081905,0.996619,-0.006486,5.813217,1.415581,0.195261,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613,
+ 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936,
+ 0.481644,0.842268,-0.242082,5.847989,1.311569,0.261476,
+ 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936,
+ -0.134248,0.990294,-0.035988,5.886832,1.385674,0.172365,
+ 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ 0.448666,0.893201,0.029856,5.979357,1.325532,0.125337,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ 0.663563,0.74812,0.000025,5.963117,1.307775,0.001098,
+ 0.794567,0.588129,-0.15089,5.931474,1.233483,0.215613,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.731768,0.675964,0.087106,5.941384,1.330818,0.178936,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.617634,0.786466,0.000062,5.963527,1.232407,0.001121,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.909103,0.416568,-0.001454,5.908782,1.066916,0.001121,
+ 0.651313,0.75881,-0.000286,5.92711,1.131195,0.001118,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ 0.800967,0.453079,-0.391371,5.934596,1.054796,0.077039,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.693689,0.317887,-0.646331,5.923808,1.025283,0.153084,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ -0.051423,0.948155,-0.31362,5.85775,0.997026,0.236768,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.811896,0.498733,0.303464,5.912147,1.117911,0.254197,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.525316,0.261332,-0.809783,5.884856,1.062202,0.249545,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ 0.603382,-0.138832,-0.785275,5.837875,1.141493,0.305184,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ 0.335985,-0.093512,-0.937214,5.77341,1.225861,0.323025,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ 0.104604,0.236958,-0.965872,5.764774,1.279824,0.308562,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ 0.563605,0.822456,0.076915,5.681726,1.282503,0.333871,
+ -0.0511,0.977083,-0.206633,5.783731,1.341471,0.28459,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ 0.204286,0.745568,-0.634347,5.800778,1.078596,0.31945,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ 0.609817,0.770093,0.187296,5.672187,1.164767,0.35408,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ 0.381066,0.919021,0.100938,5.580797,1.174135,0.351054,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188,
+ 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696,
+ -0.000715,-0.295728,-0.955272,5.690122,1.092917,0.37085,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696,
+ -0.090939,0.953561,-0.287143,5.598282,1.094735,0.386994,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ -0.01139,0.953897,-0.299918,5.580727,0.99933,0.349867,
+ 0.809878,-0.450756,0.375387,5.580223,1.04747,0.372696,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ 0.651262,0.697944,0.297879,5.47963,1.11131,0.364188,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257,
+ 0.008972,0.708004,-0.706152,5.470775,1.009574,0.355371,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248,
+ -0.151742,0.274295,-0.949598,5.535184,0.98018,0.341257,
+ 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.795507,-0.586003,0.154171,5.425352,1.035967,0.34272,
+ 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.743898,-0.655713,-0.129057,5.434594,0.970412,0.330823,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ 0.083641,-0.81989,0.566378,5.480649,0.941387,0.316248,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.176955,-0.903058,0.391373,5.546347,0.916044,0.246782,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ 0.571342,-0.680689,-0.45851,5.638369,0.904402,0.222548,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ -0.317809,0.237298,0.91798,5.388455,1.119419,0.351883,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748,
+ 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117,
+ 0.042118,-0.881893,0.469564,5.379461,1.045817,0.349748,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ 0.713982,0.301535,0.631907,5.370709,0.980272,0.337432,
+ 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306,
+ 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059,
+ 0.997356,-0.072614,-0.002907,5.836005,0.945722,0.001092,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813,
+ -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306,
+ 0.388502,-0.6643,-0.63857,5.748613,0.92049,0.205099,
+ -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306,
+ 0.20994,-0.930128,0.301309,5.851404,0.929008,0.105362,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ 0.953994,-0.299798,-0.004126,5.78079,0.891286,0.001059,
+ -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306,
+ 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813,
+ 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ -0.05208,-0.715695,0.696469,5.797411,0.880032,0.072306,
+ 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139,
+ 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896,
+ 0.874313,-0.485341,-0.004579,5.679621,0.8395,0.000985,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139,
+ 0.237421,-0.963021,0.127366,5.70463,0.849158,0.12813,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ 0.288841,-0.745301,-0.600914,5.60337,0.852748,0.162335,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694,
+ -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324,
+ 0.21141,-0.953268,0.215838,5.511556,0.863525,0.177613,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ 0.832605,-0.553861,-0.002629,5.213434,0.856784,0.000565,
+ 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ 0.84332,-0.537393,-0.004381,5.579253,0.837796,0.000896,
+ 0.287073,-0.905921,0.311283,5.568745,0.834653,0.07139,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ 0.224122,-0.97456,-0.001209,5.323232,0.866039,0.00066,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ -0.020035,-0.999799,-0.000148,5.469641,0.838722,0.000798,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ 0.267121,-0.895396,0.356249,5.449164,0.847535,0.103909,
+ -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324,
+ -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ -0.538845,-0.659239,0.524452,5.3569,0.85112,0.138324,
+ -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694,
+ 0.086688,-0.887002,0.453556,5.373646,0.885375,0.20884,
+ 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694,
+ 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ 0.165259,-0.797056,-0.580854,5.299005,0.908991,0.260177,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ -0.290459,-0.499809,0.815981,5.247762,0.848549,0.108546,
+ -0.53682,-0.608254,0.58468,5.26443,0.855571,0.181694,
+ -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344,
+ 0.598791,-0.8009,-0.003109,5.112563,0.840686,0.00048,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.501598,-0.526154,0.686704,5.137075,0.824518,0.144842,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ 0.124158,-0.992262,-0.000543,4.920855,0.812339,0.000318,
+ -0.376273,-0.140159,0.915846,4.963526,0.797382,0.14344,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.635877,0.324329,0.700337,5.153735,0.831575,0.218348,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.508574,-0.111047,0.853827,4.99671,0.81056,0.280771,
+ -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273,
+ -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ 0.243744,-0.944481,0.220328,5.197562,0.922406,0.302473,
+ 0.254106,-0.95176,0.171999,5.223571,0.974029,0.362117,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801,
+ -0.903777,-0.182749,0.387027,5.004627,0.908637,0.345273,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801,
+ -0.566117,0.431683,0.702254,5.021254,0.951308,0.405567,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ 0.200825,-0.971974,0.122213,4.733657,1.227371,0.592883,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.383862,0.612068,0.691392,4.74325,1.05921,0.563421,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.091679,0.768658,0.633057,4.744871,0.950945,0.491082,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ 0.157494,-0.98752,-0.000465,4.655453,0.758022,0.000098,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ -0.86136,-0.239794,0.447836,4.66969,0.738163,0.188296,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.911341,0.002265,0.411646,4.728809,0.878731,0.405801,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.724544,-0.128977,0.677054,4.712067,0.770512,0.333393,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.821562,0.369566,0.434117,4.399629,0.850459,0.391855,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.742898,0.572423,0.347036,4.297891,0.911506,0.447987,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ -0.895156,0.397807,0.201112,4.416475,0.921264,0.458839,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517,
+ -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517,
+ -0.931592,0.319003,0.174278,4.496191,1.024566,0.579491,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.885175,0.439902,0.1515,4.333503,0.951176,0.481517,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ -0.594389,0.803108,0.041468,4.277227,1.077746,0.550819,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ -0.476949,0.871027,0.117605,4.366867,1.131136,0.630581,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ 0.037801,-0.082839,0.995846,4.430999,1.535753,0.638888,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ -0.196146,-0.333078,0.922272,4.404221,1.662433,0.61661,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ -0.106358,-0.394397,0.912765,4.38638,1.770868,0.596666,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ -0.283495,0.953867,0.098839,4.329607,1.464801,0.661485,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ -0.421166,0.906102,0.039982,4.312225,1.683392,0.639944,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ -0.216454,0.960138,0.176868,4.247733,1.381058,0.649596,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ -0.091114,0.94565,0.312162,4.175444,1.350332,0.613988,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ 0.055369,0.916343,0.396547,4.221814,1.660769,0.59409,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ 0.090337,0.942369,0.32215,4.121121,1.614451,0.587188,
+ -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765,
+ -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436,
+ 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787,
+ -0.026148,0.006311,0.999638,4.971394,2.146686,0.224781,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ 0.203778,-0.389736,0.898098,4.83289,2.262727,0.283787,
+ -0.989689,-0.143234,0,4.912303,2.162645,-0.00009,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.204472,-0.587725,0.782797,5.156645,1.942902,0.119993,
+ -0.998597,-0.052951,0,5.177545,1.932323,0.000214,
+ -0.941169,-0.337937,0,5.04969,2.032731,0.000071,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ -0.31398,0.125786,0.94106,5.741781,1.463956,0.124891,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ -0.241533,0.200654,0.949421,5.687035,1.499636,0.110765,
+ 0.694651,0.719347,0.000019,5.743997,1.482739,0.000851,
+ -0.026558,-0.999647,0,5.680007,1.510009,0.000786,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ -0.11884,0.991349,-0.055713,5.915025,1.382159,0.13682,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ -0.062808,0.99609,0.062134,5.842092,1.427708,0.130724,
+ -0.016213,0.999869,0,5.908842,1.388968,0.001026,
+ 0.569495,0.821995,-0.000075,5.835498,1.43628,0.000946,
+ -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164,
+ -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ -0.069594,-0.997575,-0.000151,4.317602,2.588926,-0.000745,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.411843,0.771855,0.484381,4.342351,2.581176,0.140317,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.330516,0.821242,0.465104,4.332083,2.586481,0.194917,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ -0.718934,0.608496,0.335955,4.339601,2.592642,0.258891,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117,
+ -0.965284,-0.261201,0,4.747988,2.300163,-0.000276,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ 0.241652,-0.897637,0.368581,4.634996,2.369115,0.140117,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ 0.210866,-0.977515,0.000009,4.528082,2.467537,-0.000521,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ 0.169654,-0.985504,-0.000285,4.454962,2.523303,-0.000603,
+ -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ -0.395037,0.740118,0.544216,4.452383,2.524558,0.130255,
+ -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ -0.353793,0.870619,0.341838,4.440143,2.510529,0.269164,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ -0.929249,-0.009268,0.369337,4.429895,2.495758,0.306894,
+ -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ 0.170159,-0.985033,-0.027502,4.577573,2.389535,0.256196,
+ -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ 0.172357,-0.985035,-0.000083,4.189883,2.606916,-0.000863,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ -0.144656,0.947613,0.284787,4.187258,2.590221,0.135844,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ -0.364192,0.890167,0.273801,4.203325,2.589186,0.219164,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ -0.719327,0.568276,0.399538,4.211652,2.602538,0.264011,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ 0.272993,0.962016,-0.000199,4.079812,2.571649,-0.000951,
+ 0.544067,0.839042,-0.000076,4.024214,2.527933,-0.000987,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.579082,-0.064826,-0.812688,4.084506,2.570978,0.218168,
+ 0.740815,-0.598363,-0.305214,4.029016,2.519175,0.249385,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ 0.849086,-0.12151,-0.51409,4.101754,2.557092,0.265856,
+ 0.363913,-0.931415,0.005744,4.055262,2.505284,0.297282,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ 0.727891,-0.103877,-0.677779,4.100907,2.560626,0.302396,
+ 0.198783,-0.979888,0.017481,4.063205,2.509679,0.342987,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ -0.069267,0.997598,-0.000362,3.988172,2.489642,-0.001008,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ 0.3579,-0.920931,0.154253,4.035753,2.399538,0.343957,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ 0.640669,-0.433938,-0.633436,4.00011,2.424158,0.313254,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.611332,-0.037351,-0.790492,3.961908,2.347745,0.374747,
+ -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.747931,-0.041912,-0.662452,4.025364,2.3593,0.402597,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ 0.361848,-0.921221,-0.142892,4.043796,2.386524,0.400392,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.609407,-0.033626,-0.792144,3.967085,2.280648,0.537643,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683,
+ -0.446251,-0.047365,-0.893653,3.903911,2.241501,0.512468,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.450889,-0.363512,0.815205,4.010847,2.270246,0.622149,
+ -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.948723,-0.104868,0.298208,3.928869,2.223919,0.615683,
+ 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.749946,-0.01864,-0.661236,4.077563,2.305187,0.510338,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927,
+ -0.749779,-0.335085,0.57057,4.112302,2.285832,0.5955,
+ -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927,
+ 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927,
+ -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ -0.515329,-0.156304,0.842618,4.146067,2.278102,0.707372,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ -0.555116,0.058381,0.829722,4.04473,2.254459,0.744209,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ -0.766653,-0.188233,0.61385,4.172143,2.303394,0.778972,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ -0.172109,-0.240744,0.955207,4.079122,2.264104,0.84501,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196,
+ -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ -0.986028,-0.026302,-0.164487,4.215419,2.350484,0.885764,
+ 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ -0.141926,0.071007,0.987327,4.194233,2.408334,1.008471,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ 0.744052,-0.065305,0.664923,4.155551,2.388662,1.09196,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253,
+ 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108,
+ -0.993835,-0.024167,0.108201,4.104864,2.298353,0.915735,
+ -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ 0.513577,-0.159689,0.843053,4.102304,2.29996,1.025862,
+ -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108,
+ -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086,
+ -0.783471,0.056646,0.618841,3.990744,2.205448,0.710795,
+ -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ 0.50391,-0.29577,0.811538,4.0247,2.187859,0.814219,
+ -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108,
+ -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ -0.76371,-0.034453,0.644639,4.059714,2.194906,0.888152,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ -0.329373,0.540393,-0.774267,4.047406,2.207209,1.015108,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ 0.513205,-0.021212,0.858004,4.097362,2.3666,1.239986,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ -0.158973,-0.085654,0.98356,4.061989,2.231988,1.178382,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ -0.570564,0.630958,-0.525689,4.058311,2.293363,1.338054,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.908355,-0.087284,0.408989,4.024858,2.106568,1.208099,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ -0.105514,0.43457,-0.894436,4.020299,2.141675,1.002365,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ 0.944023,-0.282834,0.169783,4.036947,1.992167,1.072561,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563,
+ 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809,
+ -0.93621,-0.256398,0.240355,3.857922,2.141554,0.521067,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809,
+ 0.774828,0.16858,0.60928,3.966639,1.969285,0.549291,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ -0.105514,0.43457,-0.894436,4.022592,2.123052,0.903284,
+ -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086,
+ -0.329373,0.540393,-0.774267,3.989434,2.118832,0.765086,
+ -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ -0.936127,0.049437,0.348169,3.945464,2.1301,0.689536,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ -0.782361,-0.139191,0.607073,3.892378,2.149432,0.603589,
+ 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ 0.774828,0.16858,0.60928,3.98291,1.987391,0.639809,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ -0.570559,0.630963,0.525688,4.031515,1.968248,0.91846,
+ 0.77718,0.24762,0.578512,4.017509,1.996169,0.731654,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692,
+ 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065,
+ 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794,
+ 0.108306,-0.808441,0.578527,4.389484,2.190421,0.47332,
+ 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692,
+ 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794,
+ 0.424214,0.855079,-0.298131,4.3427,2.112281,0.516692,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032,
+ -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ 0.3936,0.919282,0.000642,4.094116,2.426172,1.381032,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ 0.73986,-0.312403,0.595828,4.212974,2.303184,0.587113,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.965005,-0.14502,-0.218484,4.212058,2.27945,0.625927,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.98488,-0.159984,0.066451,4.229332,2.274522,0.672749,
+ 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ 0.74814,-0.190428,0.635629,4.273005,2.310529,0.762172,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ 0.77718,0.24762,0.578512,4.314791,2.142163,0.54065,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ 0.292429,0.900404,-0.322114,4.274886,2.22003,0.679075,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ -0.741934,0.120389,0.659576,4.307092,2.367482,0.877202,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413,
+ 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413,
+ -0.982826,0.110983,0.147432,4.266263,2.421651,1.054799,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ 0.3936,0.919282,0.000642,4.17047,2.458441,1.241846,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ -0.989845,0.092874,-0.10762,4.228523,2.435029,1.098575,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ -0.142868,0.456449,0.878205,4.197644,2.394643,1.248646,
+ 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413,
+ 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.781263,0.307132,0.543414,4.245861,2.375093,1.141312,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ 0.781263,0.307132,0.543414,4.303193,2.347123,1.044413,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ -0.105515,0.43457,0.894436,4.369751,2.298204,0.921894,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ 0.498956,0.866627,0.000639,4.197516,2.349135,1.253043,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.589285,0.807925,0.000704,4.218457,2.356834,1.142444,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.329371,0.540395,0.774266,4.26732,2.121987,0.61494,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019,
+ -0.105515,0.43457,0.894436,4.38099,2.207701,0.839016,
+ 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.685325,0.728237,0.000788,4.275405,2.319905,1.0464,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433,
+ 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433,
+ 0.682044,0.731311,0.000573,4.296538,2.243779,0.925459,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019,
+ 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.649774,0.760128,0.000367,4.289048,2.172969,0.858693,
+ 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433,
+ 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759,
+ 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759,
+ 0.540427,-0.323841,-0.776573,4.197609,2.164063,0.857433,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.540427,-0.323841,-0.776573,4.222795,2.228178,0.952752,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.282216,0.811186,-0.512182,4.211815,2.28249,1.039137,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.13983,0.720686,-0.679014,4.199317,2.304652,1.17454,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.22211,0.815123,-0.535015,4.169404,2.306276,1.284031,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759,
+ 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856,
+ 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856,
+ 0.292794,-0.691168,-0.660725,4.15109,2.102939,0.889759,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.404933,-0.417851,-0.813283,4.148865,2.148829,0.986567,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.551755,-0.23466,-0.800313,4.154566,2.19048,1.129552,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323,
+ 0.202713,-0.881703,-0.426036,4.152557,2.235471,1.217046,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.551755,-0.23466,-0.800313,4.119993,2.063095,1.049178,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.171366,-0.691521,-0.701735,4.12616,2.12093,1.17252,
+ 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.256636,-0.859143,-0.442732,4.133175,2.175231,1.259323,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908,
+ 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908,
+ 0.017957,0.744062,-0.667869,4.141759,2.279958,1.29534,
+ 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196,
+ 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908,
+ 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196,
+ 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949,
+ 0.229942,0.797697,-0.5575,4.140097,2.295949,1.367196,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ -0.557881,0.828586,-0.047048,4.303615,1.799914,0.610388,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.536419,0.710997,0.454685,4.304562,1.906537,0.572242,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ 0.125846,-0.929941,0.345503,4.43302,2.024714,0.563794,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ 0.003817,-0.976864,0.213829,4.43261,1.878873,0.577888,
+ 0.353564,0.891052,-0.284638,4.305411,2.059245,0.539407,
+ -0.277696,-0.435918,0.856073,4.377095,1.871713,0.595743,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.678336,0.658323,0.326299,4.240116,1.770049,0.583946,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ 0.391878,0.915416,0.091898,4.290375,2.112337,0.80019,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.384749,-0.683591,-0.620219,4.153175,2.084823,0.799668,
+ 0.149569,-0.88683,-0.437221,4.131949,2.050757,0.921856,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.329371,0.540395,0.774266,4.354411,2.102985,0.80258,
+ -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ 0.259533,0.686122,-0.679617,4.278045,1.97666,0.537351,
+ -0.121207,0.426739,0.896216,4.354941,2.064161,0.778851,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ 0.391878,0.915416,0.091898,4.281287,2.055751,0.787,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.000755,0.939586,-0.342312,5.950684,1.082725,0.175648,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.969409,0.243854,0.027951,5.959462,1.157227,0.187097,
+ 0.461485,0.788926,-0.405742,5.961686,1.110978,0.090324,
+ 0.04154,0.947538,-0.316933,5.998088,1.231874,0.107334,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ 0.288171,0.239223,-0.927216,5.763952,1.062109,0.338641,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ 0.104327,0.725166,-0.680625,5.755282,1.004149,0.307505,
+ -0.163152,0.699849,-0.695408,5.681086,1.054964,0.35586,
+ -0.011269,-0.268801,-0.96313,5.672385,1.007694,0.341778,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ -0.434729,0.079706,0.897027,5.730427,1.435668,0.209848,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.497134,0.140474,0.856227,5.710154,1.360653,0.290072,
+ -0.419631,0.061765,0.905591,5.685194,1.452202,0.188749,
+ -0.400711,0.089186,0.911853,5.647186,1.394606,0.257833,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ -0.77316,0.344902,0.532228,5.011084,1.06677,0.458562,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ -0.023775,-0.598435,0.800818,4.991713,1.163096,0.504149,
+ 0.157921,-0.851177,-0.500559,5.241466,1.040469,0.383965,
+ 0.009824,-0.644035,0.764933,5.250485,1.123029,0.385234,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ 0.050019,-0.552867,0.831767,4.522247,1.398278,0.644892,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ 0.123418,-0.784469,0.607763,4.641547,1.285422,0.622034,
+ -0.395804,0.901672,0.174144,4.449011,1.260929,0.647431,
+ -0.911194,0.285551,0.296961,4.567896,1.149805,0.642484,
+ 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165,
+ 0.689769,-0.265624,0.673544,4.728963,2.036146,0.614307,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.901575,-0.270544,0.337593,4.742358,1.882232,0.62165,
+ 0.190357,-0.604308,0.773677,4.688114,2.046378,0.604518,
+ 0.152967,-0.640193,0.752831,4.697024,1.862575,0.604048,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.347794,0.132396,0.928176,4.824747,1.946835,0.626358,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.36359,0.089346,0.927264,4.861611,2.001639,0.621913,
+ 0.195545,0.103956,0.975169,4.842883,2.021333,0.638025,
+ 0.168187,0.300291,0.938903,4.852582,1.816115,0.603105,
+ 0.272203,0.043076,0.961275,4.861618,1.854067,0.618095,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.282492,0.026081,0.958915,4.973133,1.992779,0.533466,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.361081,-0.056526,0.93082,4.935561,2.016016,0.5857,
+ 0.337014,-0.030018,0.941021,4.760921,1.881357,0.61312,
+ 0.067357,0.280764,0.95741,4.788476,2.028047,0.608619,
+ -0.026366,0.234118,0.971851,4.751519,2.039658,0.634134,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.289202,0.572304,0.767353,4.991709,1.844295,0.520761,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.362705,0.428702,0.827442,4.982364,1.8733,0.53619,
+ 0.380651,0.443224,0.811577,5.001903,1.914398,0.486724,
+ 0.154687,0.171026,0.973048,5.01143,1.875569,0.463205,
+ 0.210495,0.185422,0.959849,4.991746,2.009819,0.523206,
+ 0.196849,0.14562,0.969559,4.93588,2.051665,0.572853,
+ 0.054287,0.055115,0.997003,4.918466,2.084725,0.532713,
+ 0.012421,0.392537,0.919652,4.881574,2.094571,0.539949,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.428199,-0.104479,0.897624,4.837331,2.235678,0.479332,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.399187,-0.679804,0.615237,4.74405,2.179337,0.556057,
+ 0.244568,-0.044721,0.9686,4.739441,2.299169,0.369987,
+ 0.223925,-0.919003,0.324486,4.636582,2.263383,0.471997,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.72603,0.248277,0.641279,5.095375,1.961238,0.401516,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.550963,0.62763,0.550018,5.075994,1.900999,0.443793,
+ 0.670109,-0.356989,0.650778,5.067202,2.027704,0.422291,
+ 0.615065,0.769234,0.173133,5.057495,2.002751,0.451974,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ -0.570564,0.630958,-0.525689,4.046673,2.341349,1.45253,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ -0.121207,0.426739,-0.896216,4.150297,1.820575,0.917046,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ 0.600629,0.618513,-0.506642,4.159229,1.949902,0.923197,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002,
+ -0.121207,0.426739,-0.896216,4.127903,1.828359,1.090512,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002,
+ 0.648166,0.682063,-0.338631,4.137657,1.944837,1.061024,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.392037,0.915475,-0.09062,4.152166,1.868775,1.225002,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.61118,0.658001,-0.439878,4.143794,2.01372,1.201386,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ 0.392037,0.915475,-0.09062,4.103303,2.038565,1.363737,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ 0.503641,0.551737,-0.66478,4.12329,2.086854,1.295135,
+ 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908,
+ 0.908355,-0.087284,0.408989,4.082988,2.175805,1.45093,
+ 0.517427,0.766113,-0.381235,4.11268,2.195089,1.366908,
+ 0.41344,0.676483,-0.609457,4.111934,2.234814,1.399949,
+ -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436,
+ -0.641133,0.599375,0.479267,4.148883,1.759918,0.573765,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.000801,-1,-0.000539,4.380854,0.704574,-0.00013,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ -0.926486,-0.356041,-0.121897,4.126565,0.642027,0,
+ -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436,
+ -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ -0.760994,0.140163,0.633437,4.076852,1.746601,0.527436,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ -0.560402,0.735791,0.380211,4.067576,1.572668,0.534997,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ 0.696162,0.333274,0.635835,3.886058,1.550141,0.50483,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ -0.610894,0.790229,-0.048447,4.085564,1.288885,0.544406,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ 0.763734,0.228435,0.603761,3.98851,1.297806,0.539537,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873,
+ -0.590367,0.807126,-0.003753,4.141189,1.008775,0.499342,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873,
+ 0.769758,0.095155,0.631204,4.041657,1.039756,0.496922,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ 0.206279,0.744917,0.634467,4.216374,0.852328,0.405873,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ 0.771881,-0.100912,0.627707,4.068249,0.798926,0.400813,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ 0.11638,0.680311,0.723624,4.319799,0.731007,0.291212,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ -0.659696,0.567802,0.492343,4.359048,0.700414,0.166651,
+ 0.788801,-0.199379,0.581412,4.105198,0.672581,0.300001,
+ 0.804239,-0.153549,0.574128,4.120842,0.627141,0.185461,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ 0.622247,0.782821,-0.000247,3.787342,2.396113,-0.001159,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ 0.431966,-0.771434,-0.46722,3.71636,2.343387,0,
+ -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049,
+ -0.613241,-0.041068,-0.788827,3.828001,2.35254,0.233341,
+ -0.071584,0.92252,0.379253,3.727093,2.308406,0.150049,
+ 0.072694,0.752739,0.654294,3.745669,2.266001,0.24193,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ -0.142868,0.456449,-0.878204,4.059885,1.86046,0.470087,
+ -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ 0.539114,0.412574,0.734261,3.881998,1.764428,0.476337,
+ -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ -0.570559,0.630963,0.525688,3.922437,1.972461,0.483563,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ 0.462789,0.48004,0.745243,3.814876,1.968416,0.443,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ 0.241303,0.584582,0.77462,3.758215,2.206683,0.323051,
+ -0.453311,-0.031481,-0.890797,3.823349,2.141733,0.428356,
+ -0.745507,-0.065161,-0.663305,3.870548,2.292106,0.368964,
+ -0.142868,0.456449,-0.878204,4.094112,1.889281,0.578435,
+ 0.154813,-0.698608,-0.698555,4.232341,1.903079,0.534362,
+ -0.121207,0.426739,0.896216,4.245225,2.008532,0.772641,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ 0.383337,-0.601981,-0.700479,1.678986,-2.513137,0.891745,
+ 0.717573,0.343682,-0.605782,1.655948,-2.520927,0.844269,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ -0.065687,-0.249194,-0.966223,1.705953,-3.006628,0.83263,
+ -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396,
+ -0.020456,0.943466,0.330837,1.700797,-2.794792,0.82425,
+ -0.424393,0.057227,0.903668,1.734568,-2.965876,0.986396,
+ 0.21689,-0.976039,-0.017487,1.718315,-2.775468,0.921796,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ -0.055857,0.145868,0.987726,-0.977375,-1.793126,0.498747,
+ -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033,
+ -0.329905,-0.225598,0.916661,-0.972514,-1.822778,0.372649,
+ -0.182029,-0.190207,0.964721,-1.108758,-1.770749,0.473033,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ 0.714393,-0.109998,0.691045,-1.266738,-1.691944,0.557922,
+ -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541,
+ -0.571338,-0.120921,0.811758,-1.305099,-1.70846,0.48423,
+ -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541,
+ 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399,
+ -0.468954,-0.586277,0.660577,-3.35851,1.810253,0.380095,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ 0.431712,0.22912,0.872427,-3.413372,1.871604,0.142309,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.072535,0.997366,0,-3.392806,1.769365,0,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ 0.771387,0.339113,0.538483,4.101726,2.312318,1.438163,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ -0.142868,0.456449,0.878205,4.148927,2.388726,1.376879,
+ 0.63166,0.704336,-0.323908,4.129926,2.30877,1.402259,
+ 0.459043,0.888414,0.000701,4.149438,2.34055,1.353693,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ -0.037581,-0.042039,-0.998409,-2.964215,-1.978727,0.776572,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ 0.684558,0.361153,-0.633205,-3.211005,-1.850398,0.700723,
+ 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546,
+ -0.377491,-0.043727,0.92498,-3.066022,-1.953125,0.719516,
+ 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ 0.588787,-0.248294,0.769207,-3.380836,1.819691,0.123273,
+ 0.490646,-0.178294,0.852923,-3.357009,1.781675,0.071216,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085,
+ 0.389161,-0.829175,-0.401277,-3.357009,1.781675,-0.071216,
+ 0.255239,-0.528231,-0.80983,-3.380836,1.819691,-0.123273,
+ 0.411442,-0.911436,-0.000099,-3.348274,1.767738,-0.000085
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,13050,data,NULL};
+const struct gllist *cow_hide=&frame;
diff --git a/hacks/glx/cow_hoofs.c b/hacks/glx/cow_hoofs.c
new file mode 100644
index 0000000..b66ef88
--- /dev/null
+++ b/hacks/glx/cow_hoofs.c
@@ -0,0 +1,1037 @@
+#include "gllist.h"
+static const float data[]={
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841,
+ 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.339699,0.626415,-0.701576,2.138771,-3.397683,-1.214726,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.157806,0.230904,-0.960094,2.031262,-3.256709,-1.111122,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ -0.562282,-0.328888,-0.75873,2.14888,-3.221616,-1.076203,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ 0.636282,0.100893,-0.764831,1.926176,-3.28888,-1.093746,
+ 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532,
+ 0.010538,0.399391,-0.91672,1.981186,-3.441282,-1.180532,
+ 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981,
+ -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488,
+ -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488,
+ 0.52783,0.437826,-0.727807,1.865135,-3.353827,-1.054981,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488,
+ 0.862528,0.499882,0.078511,1.919391,-3.487078,-1.110869,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ -0.783521,-0.393963,-0.480508,1.806407,-3.173343,-0.834455,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ 0.215809,0.484483,-0.847763,1.83279,-3.296508,-0.865078,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ -0.955753,-0.169718,0.240275,1.839523,-3.405292,-0.883488,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103,
+ -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103,
+ -0.997638,0.009858,0.067986,1.933899,-3.546253,-0.912438,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005,
+ -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888,
+ -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338,
+ -0.228294,-0.186048,-0.955651,2.110033,-3.148257,-1.068816,
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ -0.069765,-0.126006,0.989573,1.898573,-3.068274,-0.994338,
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ 0.013288,-0.297478,-0.954636,1.970051,-3.141862,-1.065178,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ 0.383337,-0.601981,0.700479,1.855134,-3.083228,-0.986129,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.926951,0.366239,0.081429,1.811797,-3.135641,-0.933096,
+ 0.213417,-0.547723,-0.808983,1.886443,-3.191742,-1.047318,
+ 0.626232,0.565165,-0.53705,1.841888,-3.246003,-1.014774,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ 0.672893,0.661099,-0.331908,2.113587,-3.011851,-0.851648,
+ -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654,
+ -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ -0.144755,0.439659,-0.886423,2.247981,-3.342804,-1.127459,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ -0.430523,-0.648445,-0.627828,2.281229,-3.33825,-1.043475,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ -0.492627,0.113675,-0.862784,2.201939,-3.226457,-0.996503,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ 0.743895,0.373896,0.553916,2.327021,-3.352317,-0.958234,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ -0.404532,-0.045989,-0.913367,2.236407,-3.220054,-0.89203,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ 0.768072,0.514957,-0.380637,2.217369,-3.156093,-0.888927,
+ -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ -0.630099,-0.773677,0.066329,1.900481,-3.131932,-0.728621,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285,
+ 0.714275,0.465374,0.522723,1.998099,-3.039955,-0.718855,
+ -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285,
+ -0.701253,0.091018,0.707079,2.07369,-3.020848,-0.782654,
+ -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ -0.150944,-0.987886,0.036011,1.92973,-3.298418,-0.689538,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ 0.331575,0.146631,0.931964,2.059222,-3.230076,-0.674936,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ -0.706628,-0.050081,0.705811,2.187495,-3.161535,-0.800285,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ -0.937976,-0.320543,0.132115,1.941325,-3.434803,-0.701314,
+ -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103,
+ -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ -0.4909,0.016111,0.871067,2.002745,-3.52342,-0.688103,
+ 0.79991,0.598082,-0.049409,2.235942,-3.243103,-0.823955,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ -0.184432,-0.109597,0.976716,2.126553,-3.549679,-0.701005,
+ -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332,
+ 0.866542,0.493887,-0.071973,2.309358,-3.345468,-0.801508,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332,
+ 0.43336,0.0979,0.895888,2.107985,-3.363571,-0.677007,
+ -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ 0.874983,0.217676,-0.43246,2.377814,-3.484109,-0.800332,
+ -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ -0.554151,-0.205896,0.806551,2.244147,-3.545557,-0.732888,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ 0.444124,0.617475,-0.649214,2.025468,-3.556842,-1.204841,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ -0.987313,0.097592,0.125253,2.078928,-3.584991,-0.917088,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ 0.872426,0.488735,0.003222,1.980621,-3.043895,-0.964237,
+ -0.541077,0.245809,-0.804247,2.091539,-3.032437,-0.947029,
+ -0.495591,0.225654,-0.838731,2.170039,-3.134504,-0.978866,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ -0.081045,0.409121,-0.908874,2.254361,-3.550931,-1.235118,
+ 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ 0.457854,0.537523,-0.708123,2.343303,-3.507846,-1.195262,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ -0.554502,-0.046423,0.830886,2.197935,-3.583948,-0.936437,
+ 0.717573,0.343682,0.605781,2.386827,-3.462222,-1.13648,
+ 0.752232,0.244352,0.611914,2.440236,-3.509564,-1.019417,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959,
+ 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ -0.074103,0.409269,-0.909399,-2.856957,-3.449728,-1.356844,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ -0.492859,-0.096405,-0.864752,-2.975439,-3.308754,-1.25324,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ -0.245482,-0.183395,-0.951896,-2.845816,-3.273661,-1.218321,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ 0.070969,0.266956,-0.961092,-3.091252,-3.340925,-1.235864,
+ 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265,
+ 0.009712,0.399549,-0.91666,-3.030627,-3.493327,-1.32265,
+ 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099,
+ -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606,
+ -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606,
+ 0.596352,0.583149,-0.551635,-3.158524,-3.405872,-1.197099,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606,
+ 0.840313,0.535537,0.084106,-3.09873,-3.539123,-1.252987,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.163153,0.19945,-0.96623,-3.223246,-3.225388,-0.976573,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ 0.144389,0.231536,-0.962051,-3.19417,-3.348553,-1.007196,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ -0.948594,-0.185732,0.256269,-3.18675,-3.457336,-1.025606,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221,
+ -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221,
+ -0.99734,0.010761,0.072093,-3.082741,-3.598298,-1.054556,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123,
+ -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006,
+ -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456,
+ 0.012244,-0.298111,-0.954453,-2.888628,-3.200302,-1.210934,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ -0.039603,0.339955,-0.939607,-3.121673,-3.120319,-1.136456,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ -0.545598,-0.330415,-0.770161,-3.042899,-3.193907,-1.207296,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ -0.377491,-0.043727,-0.92498,-3.169546,-3.135273,-1.128247,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ 0.977763,0.208696,-0.020643,-3.217306,-3.187686,-1.075214,
+ 0.405633,0.57823,-0.707893,-3.135041,-3.243787,-1.189436,
+ 0.851754,0.52393,0.003494,-3.184143,-3.298048,-1.156892,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.737412,0.542596,-0.402261,-2.884711,-3.063896,-0.993766,
+ 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772,
+ 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ 0.430301,0.548598,-0.716855,-2.736599,-3.394849,-1.269577,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ -0.431117,-0.034268,-0.901645,-2.699957,-3.390295,-1.185593,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ -0.461794,0.113692,-0.879671,-2.787341,-3.278502,-1.138621,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ 0.77125,0.634502,-0.050796,-2.649491,-3.404362,-1.100352,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ 0.845209,0.529004,-0.075999,-2.749355,-3.272099,-1.034148,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ -0.508358,0.250892,-0.823787,-2.770335,-3.208138,-1.031045,
+ 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ -0.948594,-0.185732,0.256269,-3.11957,-3.183977,-0.870739,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403,
+ 0.308087,0.149605,0.939521,-3.011987,-3.092,-0.860973,
+ 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403,
+ 0.684558,0.361154,0.633205,-2.928681,-3.072892,-0.924772,
+ -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ -0.471141,0.022027,0.881783,-3.087335,-3.350463,-0.831656,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ 0.225987,0.181605,0.957053,-2.944625,-3.282121,-0.817054,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ 0.713402,0.39471,0.579018,-2.80326,-3.21358,-0.942403,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ -0.385346,-0.01874,0.922582,-3.074557,-3.486847,-0.843432,
+ -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221,
+ -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ -0.11646,-0.017993,0.993032,-3.006867,-3.575464,-0.830221,
+ 0.722848,0.455753,0.519404,-2.749867,-3.295148,-0.966073,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ -0.037581,-0.042039,0.998409,-2.870422,-3.601724,-0.843123,
+ 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245,
+ 0.684834,0.490952,0.538488,-2.668957,-3.397513,-0.943626,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245,
+ 0.229413,0.089674,0.96919,-2.890885,-3.415616,-0.819125,
+ 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ 0.712283,0.385667,0.586441,-2.593513,-3.536154,-0.94245,
+ 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ 0.156207,-0.109405,0.981647,-2.740824,-3.597601,-0.875006,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ 0.413011,0.629609,-0.658038,-2.981824,-3.608887,-1.346959,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ -0.985013,0.106756,0.135469,-2.922908,-3.637036,-1.059206,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ 0.503689,0.453945,-0.735004,-3.03125,-3.09594,-1.106355,
+ 0.637284,0.689194,-0.344791,-2.90901,-3.084482,-1.089147,
+ -0.46316,0.228643,-0.856274,-2.822497,-3.186549,-1.120984,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ 0.317837,0.631876,-0.706903,-2.729567,-3.602976,-1.377236,
+ -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ -0.13251,0.440061,-0.888137,-2.631547,-3.559891,-1.33738,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ 0.339875,0.026681,0.940092,-2.791754,-3.635993,-1.078555,
+ 0.61389,0.702597,-0.359856,-2.58358,-3.514267,-1.278598,
+ 0.780958,0.624512,-0.009449,-2.52472,-3.561609,-1.161535,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ -0.501053,-0.05946,0.863371,2.138771,-3.397683,1.214726,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746,
+ -0.35872,0.092902,0.928811,2.031262,-3.256709,1.111122,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ -0.354049,-0.10839,0.928924,2.14888,-3.221616,1.076203,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ 0.937141,-0.149709,0.315204,1.926176,-3.28888,1.093746,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869,
+ 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ 0.982106,-0.010346,0.188044,1.981186,-3.441282,1.180532,
+ 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ 0.148388,-0.325205,-0.933929,1.919391,-3.487078,1.110869,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ 0.257818,-0.230014,-0.938415,1.865135,-3.353827,1.054981,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.042094,-0.220101,-0.974568,1.806407,-3.173343,0.834455,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ -0.085416,-0.081635,-0.992995,1.83279,-3.296508,0.865078,
+ -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103,
+ -0.401279,-0.250965,-0.880904,1.839523,-3.405292,0.883488,
+ -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314,
+ 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005,
+ 0.255431,-0.055528,-0.965231,1.933899,-3.546253,0.912438,
+ -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ 0.422569,-0.18743,0.886739,2.110033,-3.148257,1.068816,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ -0.019303,-0.142974,0.989538,1.970051,-3.141862,1.065178,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ 0.356923,-0.210291,0.910156,1.898573,-3.068274,0.994338,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ 0.866898,-0.268351,0.420091,1.886443,-3.191742,1.047318,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ 0.230893,-0.309688,-0.922378,1.841888,-3.246003,1.014774,
+ 0.517272,-0.552302,0.653753,1.855134,-3.083228,0.986129,
+ -0.156447,-0.088128,0.983747,1.811797,-3.135641,0.933096,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ 0.789099,-0.039289,-0.613008,2.113587,-3.011851,0.851648,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262,
+ 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ -0.453746,-0.057149,0.889297,2.247981,-3.342804,1.127459,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ 0.567579,-0.469834,-0.6761,2.201939,-3.226457,0.996503,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ 0.886562,-0.46255,0.007486,2.281229,-3.33825,1.043475,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332,
+ 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955,
+ 0.484364,0.195735,0.85269,2.327021,-3.352317,0.958234,
+ 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ 0.579344,-0.339433,-0.741044,2.217369,-3.156093,0.888927,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ -0.661663,-0.025481,0.749369,2.236407,-3.220054,0.89203,
+ 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.363523,-0.150625,-0.919327,1.900481,-3.131932,0.728621,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ -0.080858,0.024731,0.996419,2.07369,-3.020848,0.782654,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ -0.245482,-0.183394,0.951896,1.998099,-3.039955,0.718855,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314,
+ -0.924461,-0.213385,-0.315973,1.92973,-3.298418,0.689538,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ -0.156072,0.243426,0.95728,2.187495,-3.161535,0.800285,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ 0.430301,0.548598,0.716855,2.059222,-3.230076,0.674936,
+ -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103,
+ -0.914496,-0.253607,-0.315247,1.941325,-3.434803,0.701314,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ -0.943599,-0.160394,-0.289646,2.002745,-3.52342,0.688103,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005,
+ 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ 0.977763,0.208696,0.020643,2.235942,-3.243103,0.823955,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ 0.601229,-0.111151,-0.791308,2.126553,-3.549679,0.701005,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ 0.317836,0.631876,0.706903,2.107985,-3.363571,0.677007,
+ 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ 0.170703,0.25395,0.952035,2.309358,-3.345468,0.801508,
+ 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ 0.53288,-0.088285,-0.841572,2.244147,-3.545557,0.732888,
+ 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ 0.913315,0.39776,-0.087428,2.377814,-3.484109,0.800332,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ -0.807765,-0.096776,0.581507,2.025468,-3.556842,1.204841,
+ -0.348227,-0.192527,-0.917427,2.078928,-3.584991,0.917088,
+ 0.890357,-0.340018,-0.302742,2.170039,-3.134504,0.978866,
+ 0.773659,-0.235087,-0.588375,2.091539,-3.032437,0.947029,
+ -0.215783,-0.895808,-0.388544,1.980621,-3.043895,0.964237,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ 0.507452,0.36284,0.781562,2.386827,-3.462222,1.13648,
+ -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ -0.779685,0.02537,0.625657,2.343303,-3.507846,1.195262,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ 0.121953,0.140869,0.982488,2.440236,-3.509564,1.019417,
+ -0.765488,-0.115047,0.633082,2.254361,-3.550931,1.235118,
+ 0.546571,-0.125171,-0.828005,2.197935,-3.583948,0.936437,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ 0.580504,-0.526296,0.621312,-2.856957,-3.449728,1.356844,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864,
+ 0.205604,0.070037,0.976126,-2.975439,-3.308754,1.25324,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ 0.193496,0.00102,0.981101,-2.845816,-3.273661,1.218321,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ 0.089482,-0.029551,0.99555,-3.091252,-3.340925,1.235864,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987,
+ -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ -0.028076,0.054588,0.998114,-3.030627,-3.493327,1.32265,
+ 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.498861,0.185917,0.846506,-3.09873,-3.539123,1.252987,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.730585,0.298655,0.614045,-3.158524,-3.405872,1.197099,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.588311,0.26373,0.764419,-3.223246,-3.225388,0.976573,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.626758,0.377346,0.681751,-3.19417,-3.348553,1.007196,
+ -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221,
+ -0.701121,0.259575,-0.664117,-3.18675,-3.457336,1.025606,
+ -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432,
+ -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123,
+ -0.738865,0.325814,-0.589851,-3.082741,-3.598298,1.054556,
+ -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ 0.254799,-0.149124,0.955426,-2.888628,-3.200302,1.210934,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ 0.405755,-0.293021,0.865737,-3.042899,-3.193907,1.207296,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ -0.125911,-0.68432,-0.718229,-3.121673,-3.120319,1.136456,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ 0.487947,-0.44627,0.750167,-3.135041,-3.243787,1.189436,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ -0.059163,0.13391,0.989226,-3.184143,-3.298048,1.156892,
+ 0.535863,0.090315,-0.83946,-3.169546,-3.135273,1.128247,
+ 0.085126,0.114843,0.98973,-3.217306,-3.187686,1.075214,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ -0.161613,0.16539,0.972896,-2.884711,-3.063896,0.993766,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738,
+ 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ 0.011655,0.055061,0.998415,-2.736599,-3.394849,1.269577,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ 0.177373,0.037311,0.983436,-2.787341,-3.278502,1.138621,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ -0.048366,0.138166,0.989227,-2.699957,-3.390295,1.185593,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245,
+ -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073,
+ -0.97518,0.20982,-0.070713,-2.649491,-3.404362,1.100352,
+ -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ -0.206994,0.072903,0.975622,-2.770335,-3.208138,1.031045,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ 0.159383,-0.507401,-0.846842,-2.749355,-3.272099,1.034148,
+ -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ -0.64352,0.086605,-0.760514,-3.11957,-3.183977,0.870739,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ 0.236645,-0.06852,-0.969177,-2.928681,-3.072892,0.924772,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ -0.860798,0.234294,0.451812,-3.011987,-3.092,0.860973,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432,
+ -0.382827,0.20765,-0.900181,-3.087335,-3.350463,0.831656,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ 0.199599,0.097869,-0.974978,-2.80326,-3.21358,0.942403,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.405387,0.054444,0.912522,-2.944625,-3.282121,0.817054,
+ -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221,
+ -0.421241,0.09636,-0.901815,-3.074557,-3.486847,0.843432,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.482826,-0.146891,-0.863309,-3.006867,-3.575464,0.830221,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123,
+ -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.874688,-0.025586,0.48401,-2.749867,-3.295148,0.966073,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ -0.562406,-0.352304,-0.748051,-2.870422,-3.601724,0.843123,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ -0.51506,-0.054833,0.855398,-2.890885,-3.415616,0.819125,
+ -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ -0.830756,0.127038,0.541946,-2.668957,-3.397513,0.943626,
+ -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555,
+ 0.115225,0.169061,-0.978847,-2.740824,-3.597601,0.875006,
+ -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555,
+ -0.999995,0.003039,0.000095,-2.593513,-3.536154,0.94245,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555,
+ -0.057735,0.03099,0.997851,-2.981824,-3.608887,1.346959,
+ -0.670566,0.283017,-0.685743,-2.922908,-3.637036,1.059206,
+ -0.308543,0.191148,0.931807,-2.822497,-3.186549,1.120984,
+ 0.07463,0.029476,0.996776,-2.90901,-3.084482,1.089147,
+ -0.541406,0.227835,0.809302,-3.03125,-3.09594,1.106355,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ 0.35124,-0.91474,-0.199704,-2.58358,-3.514267,1.278598,
+ -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ -0.026425,0.178249,0.983631,-2.631547,-3.559891,1.33738,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ 0.285409,-0.933801,-0.215773,-2.52472,-3.561609,1.161535,
+ -0.093334,0.204552,0.974396,-2.729567,-3.602976,1.377236,
+ 0.024044,0.175693,-0.984151,-2.791754,-3.635993,1.078555
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1032,data,NULL};
+const struct gllist *cow_hoofs=&frame;
diff --git a/hacks/glx/cow_horns.c b/hacks/glx/cow_horns.c
new file mode 100644
index 0000000..2d5dbe9
--- /dev/null
+++ b/hacks/glx/cow_horns.c
@@ -0,0 +1,1025 @@
+#include "gllist.h"
+static const float data[]={
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ -0.01139,0.953897,0.299916,4.328606,2.563996,-0.343892,
+ -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ -0.163152,0.69985,0.695407,4.344028,2.585635,-0.470949,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.809878,-0.450757,-0.375386,4.359483,2.615839,-0.596817,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.083641,-0.819891,-0.566378,4.411541,2.663824,-0.713132,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.086688,-0.887002,-0.453556,4.465268,2.695425,-0.757267,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ -0.151742,0.274295,0.949598,4.410844,2.500167,-0.351972,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ -0.090939,0.953562,0.287141,4.407729,2.53164,-0.486692,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287,
+ 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301,
+ 0.795507,-0.586003,-0.154171,4.423033,2.561337,-0.603562,
+ 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287,
+ 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301,
+ 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.042118,-0.881894,-0.469563,4.47609,2.606654,-0.692301,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.571341,-0.68069,0.458509,4.520603,2.639162,-0.745542,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ 0.21141,-0.953268,-0.215838,4.574545,2.669863,-0.780363,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ 0.388502,-0.664299,0.638571,4.546655,2.709095,-0.80378,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625,
+ 0.209939,-0.930128,-0.301309,4.656565,2.680542,-0.799684,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ 0.287073,-0.905921,-0.311283,4.646703,2.728688,-0.822295,
+ -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625,
+ -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.290459,-0.499809,-0.815981,4.748031,2.683805,-0.800044,
+ -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ -0.538845,-0.659239,-0.524452,4.728931,2.721892,-0.832625,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.508573,-0.111047,-0.853828,4.811798,2.72868,-0.815406,
+ -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.635876,0.32433,-0.700337,4.821325,2.691794,-0.791887,
+ -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636,
+ -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322,
+ 0.288841,-0.745301,0.600914,4.474318,2.418432,-0.361347,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ 0.237421,-0.963021,-0.127365,4.44385,2.449921,-0.495432,
+ -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ 0.157921,-0.851177,0.500558,4.44076,2.490353,-0.629287,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.903777,-0.182749,-0.387027,4.442912,2.343263,-0.53322,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ 0.195545,0.103956,-0.975169,4.472349,2.325133,-0.443764,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ -0.911341,0.002265,-0.411646,4.440713,2.398472,-0.629128,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ 0.254106,-0.95176,-0.171999,4.484667,2.534451,-0.708888,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ -0.77316,0.344901,-0.532228,4.474625,2.465214,-0.75189,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ 0.165259,-0.797056,0.580854,4.520165,2.557971,-0.762427,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.931592,0.319003,-0.174277,4.538177,2.513353,-0.776566,
+ -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ 0.243744,-0.944481,-0.220328,4.59262,2.569879,-0.790452,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ -0.885174,0.439903,-0.1515,4.601515,2.533324,-0.794193,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ -0.05208,-0.715695,-0.696469,4.674691,2.598833,-0.808006,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ -0.742898,0.572423,-0.347037,4.683344,2.554221,-0.821927,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636,
+ -0.501597,-0.526154,-0.686704,4.729447,2.606204,-0.807513,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636,
+ 0.11638,0.680313,-0.723623,4.737893,2.564648,-0.830389,
+ -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ -0.659696,0.567803,-0.492342,4.681847,2.551036,-0.886235,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163,
+ -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163,
+ 0.206279,0.744918,-0.634466,4.755192,2.568818,-0.876311,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.821561,0.369567,-0.434116,4.554459,2.511417,-0.850571,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.895156,0.397807,-0.201111,4.444739,2.475795,-0.860515,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.911194,0.285551,-0.296961,4.382053,2.433474,-0.798757,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.383863,0.612068,-0.691392,4.32063,2.385528,-0.682583,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.566117,0.431682,-0.702255,4.314039,2.32946,-0.57751,
+ -0.091679,0.768658,-0.633056,4.296769,2.260422,-0.528796,
+ -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431,
+ -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ -0.610894,0.790229,0.048447,4.763337,2.590834,-0.929248,
+ -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986,
+ -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659,
+ 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986,
+ -0.590366,0.807127,0.003753,4.662221,2.556346,-0.940618,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ -0.594389,0.803108,-0.041468,4.497719,2.54748,-0.937659,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.216454,0.960138,-0.176868,4.352603,2.524888,-0.890532,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.283496,0.953866,-0.098841,4.262798,2.490674,-0.818316,
+ -0.091114,0.94565,-0.312161,4.883022,2.613658,-0.893163,
+ 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.421167,0.906102,-0.039984,4.192789,2.411967,-0.668016,
+ -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.557881,0.828586,0.047047,4.193959,2.370476,-0.616705,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.536307,0.710867,-0.45502,4.113935,2.334131,-0.526471,
+ -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972,
+ -0.641133,0.599375,-0.479267,4.343217,2.589542,-0.893106,
+ -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ -0.560855,0.735161,-0.380763,4.460582,2.622875,-0.957002,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.760994,0.140162,-0.633436,4.244622,2.554467,-0.811726,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.411843,0.771855,-0.484381,4.138687,2.474013,-0.642311,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ -0.395036,0.74012,-0.544214,4.121994,2.458034,-0.570029,
+ -0.330515,0.821242,-0.465103,4.07851,2.41181,-0.472193,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ 0.090337,0.942369,-0.32215,4.615662,2.63387,-0.977986,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ -0.678216,0.658343,-0.326508,4.735139,2.645464,-0.95089,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431,
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.03479,0.69667,0.716547,4.209941,2.600612,-0.337597,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ 0.176955,-0.903058,-0.391373,4.509555,2.719807,-0.819972,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ 0.713982,0.301536,-0.631907,4.418954,2.707401,-0.782531,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ -0.000715,-0.295728,0.955272,4.22473,2.624525,-0.491916,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ -0.860594,0.405545,-0.308076,4.117367,2.568514,-0.3845,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ -0.904972,-0.026554,-0.424642,4.088356,2.510913,-0.453793,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ 0.008972,0.708004,0.706152,4.277169,2.652435,-0.591369,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ 0.743898,-0.655714,0.129057,4.35668,2.682996,-0.71905,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.162972,0.917259,0.363422,4.151183,2.579059,-0.494606,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ -0.719327,0.568277,-0.399538,4.104292,2.537976,-0.543437,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651,
+ -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651,
+ -0.816521,0.559553,0.142109,4.176065,2.636883,-0.618384,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ -0.364192,0.890167,-0.2738,4.138494,2.557838,-0.652651,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.940255,0.335069,0.060403,4.273414,2.686575,-0.753674,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ -0.353793,0.870619,-0.341838,4.235494,2.636171,-0.803613,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.900694,0.426849,-0.080936,4.354196,2.711836,-0.826545,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ -0.718934,0.608496,-0.335955,4.342998,2.664049,-0.904347,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ 0.267121,-0.895396,-0.356249,4.636909,2.750501,-0.856859,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333,
+ -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918,
+ -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ -0.53682,-0.608254,-0.58468,4.719171,2.751091,-0.865965,
+ -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049,
+ -0.724543,-0.128977,-0.677054,4.801436,2.750224,-0.858918,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ -0.758791,0.646991,0.075091,4.462368,2.725999,-0.882675,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ -0.929249,-0.009269,-0.369337,4.460786,2.695616,-0.949972,
+ -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279,
+ -0.31499,0.894135,0.318282,4.616626,2.749486,-0.939333,
+ 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279,
+ -0.144656,0.947613,-0.284787,4.6248,2.708372,-0.989445,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ 0.197027,0.937222,-0.287742,4.753015,2.699695,-0.973279,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ -0.47673,0.840923,0.25608,4.735445,2.749285,-0.940329,
+ -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ -0.145585,0.915338,0.375448,4.827733,2.75439,-0.905049,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ 0.05537,0.916343,-0.396546,4.854957,2.660227,-0.92431,
+ 0.225135,0.965893,-0.127928,4.863709,2.722151,-0.93666,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.376273,-0.14016,-0.915846,4.821336,2.621498,-0.789636,
+ -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.395723,0.901671,-0.174334,4.829566,2.580797,-0.821827,
+ -0.476949,0.871028,-0.117606,4.856249,2.593812,-0.867067,
+ -0.86136,-0.239794,-0.447836,5.096148,2.75972,-0.774729,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.130291,0.991051,0.029017,4.328606,2.563996,0.343892,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ -0.877603,-0.025309,0.478719,4.344028,2.585635,0.470949,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ 0.223577,0.97296,-0.057987,4.359483,2.615839,0.596817,
+ -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.860595,0.405543,0.308077,4.411541,2.663824,0.713132,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.758791,0.646991,-0.075091,4.465268,2.695425,0.757267,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ -0.501953,0.842502,0.195534,4.410844,2.500167,0.351972,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ 0.197027,0.937222,0.287741,4.407729,2.53164,0.486692,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.247355,0.948391,-0.198417,4.423033,2.561337,0.603562,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ -0.162972,0.917259,-0.363422,4.47609,2.606654,0.692301,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ -0.900694,0.426849,0.080936,4.520603,2.639162,0.745542,
+ -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.683788,0.700764,-0.203383,4.574545,2.669863,0.780363,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.816521,0.559553,-0.142109,4.546655,2.709095,0.80378,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.892748,0.392127,-0.221893,4.656565,2.680542,0.799684,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.990661,0.056144,-0.124249,4.646703,2.728688,0.822295,
+ -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887,
+ -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887,
+ -0.941564,0.056551,0.332054,4.748031,2.683805,0.800044,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406,
+ -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918,
+ -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918,
+ -0.978317,0.206989,-0.00716,4.728931,2.721892,0.832625,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406,
+ -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887,
+ -0.832539,-0.5495,0.070196,4.811798,2.72868,0.815406,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636,
+ -0.64155,-0.578509,0.503727,4.821325,2.691794,0.791887,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ -0.849668,0.488771,-0.197904,4.474318,2.418432,0.361347,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.476729,0.840923,-0.25608,4.44385,2.449921,0.495432,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ -0.145585,0.915338,-0.375448,4.44076,2.490353,0.629287,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ 0.231006,-0.859096,0.456717,4.472349,2.325133,0.443764,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.975013,-0.179566,0.130791,4.442912,2.343263,0.53322,
+ -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ -0.963659,-0.230665,0.134738,4.440713,2.398472,0.629128,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ -0.210882,0.942026,-0.260988,4.484667,2.534451,0.708888,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.990956,-0.062739,0.118613,4.474625,2.465214,0.75189,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ -0.502348,0.838173,-0.212398,4.520165,2.557971,0.762427,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571,
+ -0.841909,-0.49598,0.212588,4.538177,2.513353,0.776566,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ -0.768362,0.592231,-0.242657,4.59262,2.569879,0.790452,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ 0.911709,-0.064353,0.405764,4.601515,2.533324,0.794193,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ 0.245858,0.150988,0.957474,4.683344,2.554221,0.821927,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ -0.981668,0.173926,-0.077954,4.674691,2.598833,0.808006,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827,
+ -0.396467,0.225967,0.889805,4.737893,2.564648,0.830389,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827,
+ -0.984655,0.15519,0.07981,4.729447,2.606204,0.807513,
+ -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ 0.895851,0.326389,0.301532,4.681847,2.551036,0.886235,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ -0.279333,0.256918,0.925184,4.755192,2.568818,0.876311,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ 0.3335,0.232683,0.913584,4.554459,2.511417,0.850571,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ 0.760119,-0.003927,0.649772,4.444739,2.475795,0.860515,
+ -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532,
+ -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016,
+ -0.719395,-0.61545,0.322011,4.382053,2.433474,0.798757,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.473779,-0.24744,0.845167,4.32063,2.385528,0.682583,
+ -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.938303,-0.3372,0.076703,4.314039,2.32946,0.57751,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.713872,-0.610821,0.342469,4.296769,2.260422,0.528796,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163,
+ -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163,
+ 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431,
+ -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089,
+ -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163,
+ -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.137011,-0.928676,0.344657,4.763337,2.590834,0.929248,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.21443,-0.974064,0.072245,4.662221,2.556346,0.940618,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ -0.21443,-0.974064,0.072245,4.497719,2.54748,0.937659,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532,
+ -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.250481,-0.945625,-0.207493,4.352603,2.524888,0.890532,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.250481,-0.945625,-0.207493,4.262798,2.490674,0.818316,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431,
+ -0.137011,-0.928676,0.344657,4.883022,2.613658,0.893163,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.19553,-0.978064,0.071821,4.192789,2.411967,0.668016,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ -0.124529,-0.930217,0.345238,4.113935,2.334131,0.526471,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ -0.19553,-0.978064,0.071821,4.193959,2.370476,0.616705,
+ -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ -0.942162,-0.29295,-0.162822,4.343217,2.589542,0.893106,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ -0.199236,-0.974239,-0.105658,4.460582,2.622875,0.957002,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ -0.982438,-0.108835,-0.151559,4.244622,2.554467,0.811726,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029,
+ -0.668254,-0.729938,-0.143622,4.138687,2.474013,0.642311,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ -0.973393,-0.128296,0.18986,4.121994,2.458034,0.570029,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ -0.138401,-0.989733,0.035683,4.07851,2.41181,0.472193,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ 0.361848,-0.921221,-0.142892,4.615662,2.63387,0.977986,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445,
+ 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431,
+ 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ -0.124529,-0.930217,0.345238,4.735139,2.645464,0.95089,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ -0.904972,-0.026555,0.424641,4.209941,2.600612,0.337597,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675,
+ -0.940256,0.335069,-0.060403,4.509555,2.719807,0.819972,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.31499,0.894135,-0.318282,4.418954,2.707401,0.782531,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ -0.778386,0.466325,0.420305,4.22473,2.624525,0.491916,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ 0.576293,-0.081905,-0.813128,4.117367,2.568514,0.3845,
+ 0.207048,-0.965263,0.159371,4.088356,2.510913,0.453793,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ -0.671788,0.737297,0.07138,4.35668,2.682996,0.71905,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ 0.225135,0.965893,0.127928,4.277169,2.652435,0.591369,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ 0.42646,-0.865041,0.264264,4.151183,2.579059,0.494606,
+ -0.075112,-0.981815,0.174346,4.104292,2.537976,0.543437,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ 0.333262,-0.530645,-0.779328,4.176065,2.636883,0.618384,
+ -0.501842,-0.819591,0.27645,4.138494,2.557838,0.652651,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ -0.180888,-0.792822,-0.58199,4.273414,2.686575,0.753674,
+ -0.601432,-0.796051,0.067694,4.235494,2.636171,0.803613,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ -0.393317,-0.870591,-0.295589,4.354196,2.711836,0.826545,
+ -0.927379,-0.346541,0.14099,4.342998,2.664049,0.904347,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ -0.894795,0.444359,-0.043442,4.636909,2.750501,0.856859,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ -0.463096,-0.149333,0.873637,4.719171,2.751091,0.865965,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.862876,-0.450622,0.228877,4.801436,2.750224,0.858918,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.850433,-0.132742,0.509061,4.460786,2.695616,0.949972,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.266521,-0.953514,0.14063,4.462368,2.725999,0.882675,
+ -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329,
+ -0.822149,-0.367113,0.435086,4.6248,2.708372,0.989445,
+ 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329,
+ 0.078387,-0.886884,0.455294,4.616626,2.749486,0.939333,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ 0.136995,-0.968757,-0.206741,4.735445,2.749285,0.940329,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ 0.846486,-0.14409,-0.512541,4.753015,2.699695,0.973279,
+ 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.460229,-0.015586,-0.887663,4.827733,2.75439,0.905049,
+ 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ 0.728229,-0.106722,-0.676973,4.863709,2.722151,0.93666,
+ 0.186393,-0.974436,-0.125429,4.854957,2.660227,0.92431,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827,
+ -0.791764,-0.610494,-0.020171,4.821336,2.621498,0.789636,
+ -0.916647,-0.2944,0.270344,5.096148,2.75972,0.774729,
+ -0.274209,-0.939323,-0.20611,4.856249,2.593812,0.867067,
+ -0.274209,-0.939323,-0.20611,4.829566,2.580797,0.821827
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1020,data,NULL};
+const struct gllist *cow_horns=&frame;
diff --git a/hacks/glx/cow_tail.c b/hacks/glx/cow_tail.c
new file mode 100644
index 0000000..895f05c
--- /dev/null
+++ b/hacks/glx/cow_tail.c
@@ -0,0 +1,464 @@
+#include "gllist.h"
+static const float data[]={
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664,
+ -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793,
+ -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719,
+ -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233,
+ -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095,
+ 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ 0.000763,-0.01871,0.999825,-3.72947,-0.869371,0.096946,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ -0.004656,-0.025693,0.999659,-3.733767,-1.141917,0.111139,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ -0.020872,-0.032587,0.999251,-3.743747,-1.367219,0.100951,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ -0.091034,0.391629,0.915609,-3.823638,-1.557534,0.081533,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806,
+ 0.548941,0.015145,0.835724,-3.805841,-0.798961,0.099237,
+ 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806,
+ 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282,
+ 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282,
+ 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.549332,-0.018885,0.835391,-3.843256,-0.981402,0.116282,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.516335,-0.196022,0.833651,-3.884588,-1.261469,0.148322,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.368421,-0.433142,0.82259,-3.914006,-1.486854,0.149147,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.255239,-0.528232,0.80983,-4.015306,-1.659952,0.130331,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ 0.891295,0.039311,0.451717,-3.900964,-0.780883,0.091579,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806,
+ 0.892259,-0.018571,0.451141,-3.949814,-0.963797,0.140806,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ 0.843461,-0.305355,0.441963,-3.974499,-1.1696,0.164243,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ 0.589229,-0.690587,0.419402,-4.018866,-1.413191,0.154149,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.389217,-0.829193,0.401185,-4.154334,-1.677827,0.165852,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883,
+ 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ 0.839295,0.00969,-0.54359,-3.978115,-0.82344,0.09928,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ 0.874434,0.048946,-0.48267,-4.029726,-1.043238,0.136305,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ 0.432653,0.056559,-0.899785,-4.129295,-1.228786,0.120745,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978,
+ 0.517516,0.032105,-0.855071,-4.184154,-1.59808,0.151191,
+ 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ -0.369174,0.174156,-0.912897,-4.070739,-0.947648,0.110554,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ -0.516127,0.008586,-0.856469,-4.227645,-1.227895,0.069894,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ -0.822516,0.195417,-0.534116,-4.229164,-1.473093,0.11156,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702,
+ -0.874954,0.011842,-0.484061,-4.309744,-1.743848,0.150329,
+ 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702,
+ 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ 0.313565,-0.18353,-0.931662,-4.112449,-0.875765,0.016326,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ 0.537835,-0.193789,-0.820475,-4.233834,-1.166542,0.022074,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ 0.908243,-0.229695,0.349765,-4.333831,-1.548255,0.056938,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ 0.701057,-0.21056,0.68131,-4.424122,-1.831742,0.130839,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ -0.409041,-0.077841,0.90919,-4.042715,-0.87671,-0.168968,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ 0.50178,0.000639,-0.864995,-4.216296,-1.160854,-0.104034,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ 0.300485,0.019099,-0.953595,-4.252683,-1.437854,-0.14562,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502,
+ 0.678632,-0.017853,-0.734261,-4.331331,-1.69259,-0.043593,
+ -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ -0.148191,-0.901516,-0.40658,-3.988138,-0.962789,-0.223649,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ -0.443612,-0.876487,-0.187028,-4.111927,-1.333141,-0.26716,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ -0.508388,-0.837291,0.20121,-4.201904,-1.668554,-0.214859,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ -0.409829,-0.525605,0.745506,-4.273069,-1.798884,-0.099878,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ 0.547733,-0.470267,0.691981,-3.917882,-1.082831,-0.289171,
+ 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ -0.071182,-0.950841,0.301389,-4.001496,-1.375703,-0.285641,
+ 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ 0.216747,0.039317,0.975436,-4.073086,-1.649491,-0.238382,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ 0.555948,0.246866,0.793712,-4.175757,-1.808223,-0.140659,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.001234,0.013557,-0.999907,-3.932489,-0.556566,0.037354,
+ 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.999006,0.044565,0.000415,-3.896204,-0.629183,0.077883,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.875325,0.013439,0.483348,-3.818598,-0.52269,0.055572,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.00197,-0.021649,0.999764,-3.740631,-0.558176,0.085478,
+ 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ 0.3526,0.621479,0.699598,-3.7505,-0.191867,-0.11323,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ 0.10009,-0.380026,0.919545,-3.873622,-0.759035,-0.197169,
+ 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ 0.260319,-0.908993,-0.325523,-3.910546,-0.601719,-0.163159,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918,
+ -0.281998,-0.030938,0.958916,-3.805575,-0.190109,-0.101447,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.89264,0.349909,0.284178,-3.695452,-0.193624,-0.101369,
+ -0.064166,-0.189382,0.979805,-3.655175,-0.194909,-0.069044,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ -0.429713,0.351913,0.831567,-3.666536,-1.140372,0.078261,
+ -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ -0.24021,0.502412,0.830591,-3.639696,-1.242349,0.05719,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ 0.587809,-0.328909,0.739121,-3.777709,-1.051411,-0.240495,
+ 0.833232,0.046885,0.550932,-3.742608,-0.729374,-0.149361,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.794828,0.083383,0.601079,-4.000019,-1.567512,-0.27535,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.000909,0.669011,0.743252,-3.581963,-1.413947,-0.104371,
+ -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ -0.041225,-0.030655,0.99868,-3.683069,-1.591975,-0.115233,
+ 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.002322,-0.058071,0.99831,-3.828485,-1.786559,-0.114095,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.873201,-0.045461,0.485235,-3.977657,-1.750845,-0.184909,
+ 0.213242,-0.278117,0.936578,-3.82037,-1.239135,-0.269807,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.231733,0.017467,0.972623,-3.890388,-1.750102,0.017612,
+ 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.791625,0.052579,0.608741,-4.107191,-1.83652,0.120149,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313,
+ 0.829377,-0.173626,0.531026,-4.075028,-1.904403,-0.041324,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313,
+ 0.981696,0.042552,-0.185638,-4.207566,-1.922824,0.155104,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ 0.506864,-0.193038,0.840134,-4.192486,-1.953852,0.017313,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502,
+ 0.768311,0.202351,0.60725,-4.321269,-1.963488,0.025072,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ -0.227573,-0.361148,0.904313,-4.351543,-1.947675,0.02502,
+ 0.002983,0.098874,-0.995096,-4.297769,-1.889903,0.177707,
+ 0.924466,0.048977,0.378105,-4.405365,-1.921443,0.192978,
+ 0.129519,-0.132707,0.982656,-4.445835,-2.015127,0.189702,
+ 0.687126,-0.68509,0.241888,-4.387148,-1.967814,0.045602,
+ 0.560378,0.257624,0.787151,-3.695565,-0.19362,0.051497,
+ 0.711192,0.127662,0.69131,-3.75063,-0.191863,0.063305,
+ 0.518386,-0.029316,0.854644,-3.778908,-0.541975,0.064258,
+ 0.546619,0.025488,0.836993,-3.805688,-0.190106,0.051472,
+ 0.238843,0.101951,0.965691,-3.84599,-0.18882,0.019164,
+ 0.728068,-0.191899,-0.658097,-3.975337,-0.554961,-0.014407,
+ 0.166377,-0.157108,0.973466,-3.86074,-0.188349,-0.024962,
+ 0.077536,0.770695,0.632469,-3.845923,-0.188822,-0.06918,
+ -0.276108,-0.088023,0.957087,-3.921874,-0.538502,-0.145307,
+ 0.269003,0.86436,0.424875,-3.569386,-0.761644,-0.035893,
+ 0.267717,-0.172975,0.947844,-3.640457,-0.195379,-0.024909,
+ 0.274422,-0.24433,0.930051,-3.65524,-0.194907,0.019209
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,459,data,NULL};
+const struct gllist *cow_tail=&frame;
diff --git a/hacks/glx/cow_udder.c b/hacks/glx/cow_udder.c
new file mode 100644
index 0000000..46df87c
--- /dev/null
+++ b/hacks/glx/cow_udder.c
@@ -0,0 +1,1520 @@
+#include "gllist.h"
+static const float data[]={
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096,
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701,
+ -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701,
+ 0.058723,-0.195869,-0.97887,-2.033406,-0.91003,-0.96422,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ 0.07657,0.16758,-0.982881,-2.306662,-1.116976,-0.961238,
+ -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ -0.977902,-0.171036,-0.12023,-2.119856,-1.1288,-0.97096,
+ -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ -0.964119,-0.189683,-0.18573,-2.031698,-1.097344,-0.966701,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703,
+ 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427,
+ -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427,
+ -0.30296,-0.137183,-0.943078,-1.782298,-1.020581,-0.943381,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ -0.955382,-0.23808,-0.174826,-2.462835,-1.3055,-0.966395,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ -0.843742,-0.096326,-0.528036,-2.337617,-1.334842,-0.966761,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ 0.028952,-0.016247,-0.999449,-2.161843,-1.325837,-0.957465,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ 0.093953,-0.049433,-0.994349,-2.042059,-1.312976,-0.940911,
+ 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ 0.335613,-0.388493,-0.858159,-1.776785,-1.275107,-0.914703,
+ -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ -0.004413,-0.170526,-0.985343,-1.709172,-1.283232,-0.897427,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483,
+ 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181,
+ 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483,
+ 0.155794,-0.590112,-0.792146,-1.592146,-1.408592,-0.838483,
+ 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.106237,-0.558927,-0.822383,-1.686329,-1.414405,-0.869373,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.357021,-0.590654,-0.723646,-1.777628,-1.473076,-0.845827,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.095733,-0.224552,-0.969748,-1.456655,-1.295527,-0.89424,
+ -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ -0.422758,-0.178302,-0.888529,-1.366873,-1.340211,-0.907567,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188,
+ 0.215155,-0.464575,-0.858999,-1.200688,-1.577575,-0.799188,
+ 0.121987,-0.426326,-0.896306,-1.198513,-1.456102,-0.885435,
+ -0.218261,-0.26262,-0.93989,-0.953236,-1.545941,-0.89918,
+ -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541,
+ 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ -0.504483,-0.438591,-0.743731,-1.376186,-1.661988,-0.718954,
+ 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638,
+ -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741,
+ -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741,
+ 0.152347,-0.821467,-0.549529,-1.480217,-1.6566,-0.606638,
+ -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541,
+ -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741,
+ -0.094238,-0.851252,-0.516225,-1.397474,-1.693815,-0.570541,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.198045,-0.959194,-0.201804,-1.519339,-1.653776,-0.501741,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.171647,-0.971664,-0.162499,-1.406693,-1.697325,-0.450399,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ -0.53858,-0.616299,-0.57455,-1.386502,-1.718441,-0.350823,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586,
+ -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.403877,-0.879274,-0.252509,-1.576196,-1.696317,-0.358146,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ -0.279342,-0.940234,-0.19475,-1.601625,-1.593321,-0.605607,
+ 0.161064,-0.731195,-0.662882,-1.659758,-1.544361,-0.788181,
+ 0.08565,-0.422547,-0.902285,-1.552229,-1.555077,-0.735708,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.137764,-0.289893,-0.947092,-2.591357,-1.510845,-0.88547,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ 0.137206,-0.207537,-0.968557,-2.417777,-1.553136,-0.887222,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.094371,-0.230057,-0.968591,-2.223917,-1.541268,-0.87926,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ -0.201818,-0.568242,-0.797728,-2.049879,-1.562369,-0.829319,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ 0.008663,-0.516082,-0.856495,-1.778934,-1.550199,-0.776454,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ -0.18119,-0.970212,-0.160805,-1.74779,-1.667608,-0.60634,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.35682,-0.781398,-0.511953,-2.037371,-1.73636,-0.656787,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ 0.430742,-0.887318,-0.164704,-2.267049,-1.753901,-0.662106,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ -0.177142,-0.976279,-0.124502,-2.508885,-1.719933,-0.721675,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.048753,-0.975535,-0.21437,-2.734184,-1.717948,-0.749581,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ 0.381337,-0.795981,-0.470102,-2.317557,-1.8742,-0.470587,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ -0.299215,-0.929389,-0.216116,-1.764045,-1.764987,-0.406586,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ 0.515412,-0.714946,0.472444,-3.304804,-1.582192,-0.643445,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246,
+ -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ -0.9775,0.159844,-0.137638,-3.535416,0.191408,-0.338478,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ -0.945906,-0.323169,-0.028687,-3.676599,-0.729578,-0.330724,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ -0.84728,-0.52968,-0.039439,-3.686518,-0.955181,-0.320349,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ -0.736087,-0.675142,-0.048562,-3.639586,-1.140102,-0.3338,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ -0.587869,-0.808404,-0.029894,-3.557869,-1.325941,-0.37803,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ -0.454242,-0.890878,0.000928,-3.442085,-1.48412,-0.406377,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ 0.249604,-0.855993,0.452741,-3.314868,-1.599081,-0.439626,
+ 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ -0.993498,0.089934,-0.06981,-3.570243,-0.060093,-0.344854,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ -0.99574,-0.082547,-0.041071,-3.616627,-0.350374,-0.338492,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ -0.923845,0.18432,-0.335466,-3.51684,0.149002,-0.430359,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.951862,0.098243,-0.290356,-3.529709,-0.065998,-0.437217,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.950882,-0.075567,-0.300188,-3.595973,-0.346391,-0.426453,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.896964,-0.287307,-0.336022,-3.665774,-0.73408,-0.446286,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282,
+ -0.815087,-0.388053,-0.430171,-3.667859,-0.964867,-0.464702,
+ -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.98615,-0.150918,-0.068783,-3.631179,-1.157838,-0.50561,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246,
+ -0.581301,-0.608503,0.540197,-3.53391,-1.330455,-0.568246,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.354058,-0.732075,0.581987,-3.387254,-1.486027,-0.672861,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.908258,0.139498,-0.394471,-3.470778,-0.078218,-0.546398,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.743901,0.102645,-0.66036,-3.415655,-0.308965,-0.671045,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.985615,0.064121,-0.156369,-3.526766,-0.317542,-0.560837,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213,
+ -0.982334,-0.04331,-0.182057,-3.569993,-0.731989,-0.649435,
+ -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.995081,-0.092251,0.036114,-3.55012,-0.984868,-0.675228,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282,
+ -0.938884,0.007108,-0.344159,-3.492599,-1.180646,-0.692282,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.782249,0.198377,-0.590536,-3.335942,-1.365685,-0.72459,
+ -0.823768,0.005745,-0.566899,-3.27979,-1.162072,-0.784602,
+ -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.971344,0.144305,-0.188856,-3.536654,0.442277,-0.322,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.472479,0.093412,-0.876377,-3.556552,0.704883,-0.28063,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.43302,-0.02622,-0.901003,-3.57817,0.837714,-0.288502,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.605564,-0.17532,-0.776244,-3.355398,-0.969157,-0.766213,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.838192,0.000365,-0.545375,-3.25121,-0.948205,-0.819868,
+ -0.681141,-0.040116,-0.731052,-3.438226,-0.721479,-0.728141,
+ -0.984416,-0.175855,-0.000915,-3.283698,-0.730967,-0.793898,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.04422,-0.704109,-0.708714,-1.936032,-1.829617,-0.488916,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232,
+ 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ 0.083262,-0.787311,-0.610907,-2.027242,-1.813012,-0.555232,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ 0.170756,-0.748007,-0.641349,-2.126375,-1.866497,-0.502895,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ 0.64791,-0.754869,0.101909,-2.176551,-1.873816,-0.445782,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ -0.393694,-0.919049,0.018795,-2.147113,-1.903198,-0.362462,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ -0.327707,-0.94199,0.072547,-2.062725,-1.884246,-0.307336,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ -0.163041,-0.980692,0.107986,-1.946306,-1.872735,-0.344251,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ 0.493535,-0.729115,-0.474147,-1.88316,-1.829718,-0.401567,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ 0.018755,-0.837462,-0.546174,-2.466779,-1.857679,-0.570461,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ -0.094688,-0.959937,-0.263734,-2.547737,-1.833025,-0.609321,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ 0.059023,-0.965365,-0.25414,-2.64722,-1.84401,-0.594347,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ -0.147229,-0.706225,-0.69251,-2.684452,-1.891207,-0.447388,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ 0.328486,-0.940918,0.082286,-2.614084,-1.905005,-0.404925,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ -0.319475,-0.944225,-0.079844,-2.503818,-1.909806,-0.431456,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ 0.183908,-0.773381,-0.606679,-2.446375,-1.893261,-0.49411,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872,
+ -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853,
+ 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872,
+ -0.276108,-0.088024,-0.957087,-2.060902,-2.031698,-0.372079,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489,
+ 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853,
+ 0.129519,-0.132707,-0.982656,-2.120746,-2.045137,-0.411171,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997,
+ -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489,
+ 0.701057,-0.210559,-0.68131,-2.141621,-2.024301,-0.470257,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201,
+ 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997,
+ 0.908243,-0.229695,-0.349765,-2.106039,-2.019111,-0.510759,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327,
+ 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201,
+ 0.537835,-0.193789,0.820475,-2.03574,-1.981182,-0.547873,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904,
+ 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327,
+ 0.313565,-0.18353,0.931662,-1.971059,-1.992958,-0.500845,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256,
+ 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904,
+ -0.40904,-0.077842,-0.90919,-1.978344,-2.023535,-0.398257,
+ 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904,
+ 0.728068,-0.191899,0.658097,-1.933565,-1.993029,-0.438902,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579,
+ 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227,
+ 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579,
+ -0.409829,-0.525605,-0.745506,-2.539874,-2.049824,-0.460098,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656,
+ 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227,
+ -0.508388,-0.837291,-0.20121,-2.618068,-2.046419,-0.441284,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064,
+ 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656,
+ -0.443612,-0.876487,0.187028,-2.667969,-2.036634,-0.471396,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465,
+ 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064,
+ -0.148191,-0.901516,0.40658,-2.685663,-2.028649,-0.514928,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258,
+ 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465,
+ 0.260319,-0.908993,0.325523,-2.678971,-2.007694,-0.558395,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616,
+ 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258,
+ 0.687126,-0.68509,-0.241887,-2.641567,-2.003164,-0.575611,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735,
+ 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616,
+ 0.678632,-0.017853,0.734261,-2.571019,-1.995375,-0.58623,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792,
+ 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735,
+ 0.50178,0.000639,0.864995,-2.499138,-2.03809,-0.504529,
+ 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735,
+ 0.300485,0.019099,0.953595,-2.513608,-2.012858,-0.558673,
+ 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327,
+ 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201,
+ 0.768311,0.202351,-0.60725,-1.978016,-2.086834,-0.494327,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997,
+ 0.555949,0.246865,-0.793712,-2.04111,-2.075348,-0.540201,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489,
+ 0.216748,0.039315,-0.975436,-2.109684,-2.112345,-0.503997,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853,
+ -0.071182,-0.950841,-0.301389,-2.144393,-2.117408,-0.464489,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872,
+ 0.547733,-0.470267,-0.691981,-2.12403,-2.137733,-0.406853,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256,
+ 0.10009,-0.380026,-0.919545,-2.065655,-2.124623,-0.36872,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.833232,0.046883,-0.550932,-1.941442,-2.086904,-0.433904,
+ -0.227573,-0.361149,-0.904313,-1.985123,-2.116661,-0.394256,
+ 0.604307,0.204357,-0.770098,-2.048681,-2.165282,-0.450843,
+ 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735,
+ 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616,
+ 0.238844,0.101951,-0.965691,-2.527301,-2.106246,-0.550735,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258,
+ 0.054863,-0.132815,-0.989621,-2.583303,-2.089191,-0.577616,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465,
+ 0.166377,-0.157108,-0.973466,-2.65212,-2.09679,-0.567258,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064,
+ 0.506864,-0.193035,-0.840135,-2.688607,-2.101208,-0.550465,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656,
+ 0.829377,-0.173624,-0.531026,-2.695135,-2.12165,-0.508064,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227,
+ 0.873201,-0.04546,-0.485236,-2.677875,-2.129439,-0.4656,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579,
+ 0.794828,0.083381,-0.601079,-2.629199,-2.138983,-0.436227,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ 0.587809,-0.328911,-0.73912,-2.513187,-2.130859,-0.49792,
+ 0.213243,-0.278119,-0.936578,-2.552923,-2.142304,-0.454579,
+ 0.02054,-0.128179,-0.991538,-2.603284,-2.176802,-0.510638,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ -0.012978,-0.998326,0.056357,-3.139394,-1.687482,-0.638546,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ 0.074429,-0.99521,0.063385,-3.120907,-1.707924,-0.431829,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ -0.073547,-0.481419,-0.8734,-2.941731,-1.787431,-0.442574,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ 0.43907,-0.579988,-0.686171,-2.811581,-1.79821,-0.712737,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.579344,-0.339433,0.741044,-3.008323,-1.759271,-0.655672,
+ 0.49176,-0.810764,-0.317543,-2.699966,-1.850397,-0.57007,
+ 0.099157,-0.476834,-0.873383,-2.709403,-1.879947,-0.508775,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.619245,-0.050391,0.783579,-2.033406,-0.91003,0.96422,
+ -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701,
+ -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.822733,0.223687,0.522565,-2.306662,-1.116976,0.961238,
+ -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701,
+ -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.950882,-0.075567,0.300188,-2.119856,-1.1288,0.97096,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.993498,0.089934,0.06981,-2.031698,-1.097344,0.966701,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.379807,-0.084066,0.921238,-1.782298,-1.020581,0.943381,
+ -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ -0.951862,0.098243,0.290356,-2.462835,-1.3055,0.966395,
+ -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ -0.9775,0.159844,0.137638,-2.337617,-1.334842,0.966761,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ -0.923845,0.18432,0.335466,-2.161843,-1.325837,0.957465,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.971344,0.144305,0.188856,-2.042059,-1.312976,0.940911,
+ -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827,
+ -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373,
+ -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373,
+ -0.908258,0.139498,0.394471,-1.776785,-1.275107,0.914703,
+ -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827,
+ -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427,
+ -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483,
+ -0.985615,0.064121,0.156369,-1.709172,-1.283232,0.897427,
+ -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483,
+ -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ -0.838192,0.000364,0.545375,-1.592146,-1.408592,0.838483,
+ -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ -0.681141,-0.040116,0.731052,-1.777628,-1.473076,0.845827,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ -0.823768,0.005745,0.566899,-1.686329,-1.414405,0.869373,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ -0.982334,-0.04331,0.182057,-1.456655,-1.295527,0.89424,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435,
+ -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ -0.311485,0.082882,0.94663,-1.366873,-1.340211,0.907567,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ -0.02449,0.224062,0.974267,-0.953236,-1.545941,0.89918,
+ -0.742985,0.015712,0.669123,-1.198513,-1.456102,0.885435,
+ -0.809154,0.004832,0.587577,-1.200688,-1.577575,0.799188,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ -0.285709,0.130064,0.949449,-1.376186,-1.661988,0.718954,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399,
+ -0.587909,-0.233166,0.774594,-1.397474,-1.693815,0.570541,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399,
+ 0.924702,-0.311563,0.218757,-1.480217,-1.6566,0.606638,
+ 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ 0.023392,-0.110333,0.993619,-1.406693,-1.697325,0.450399,
+ 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ 0.366416,-0.175098,0.913827,-1.519339,-1.653776,0.501741,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ 0.011286,0.999936,0,-1.395728,-1.723811,0,
+ -0.279485,0.127803,0.951606,-1.386502,-1.718441,0.350823,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ 0.106808,0.99428,0,-1.610025,-1.711571,0,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.157802,-0.148625,0.976222,-1.576196,-1.696317,0.358146,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.472479,0.093413,0.876377,-1.552229,-1.555077,0.735708,
+ -0.43302,-0.02622,0.901003,-1.659758,-1.544361,0.788181,
+ 0.73827,-0.277136,0.614942,-1.601625,-1.593321,0.605607,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ -0.995081,-0.092251,-0.036114,-2.591357,-1.510845,0.88547,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ -0.938884,0.007108,0.344159,-2.417777,-1.553136,0.887222,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787,
+ -0.782249,0.198377,0.590536,-2.223917,-1.541268,0.87926,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.605564,-0.17532,0.776244,-1.778934,-1.550199,0.776454,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.743901,0.102645,0.66036,-2.049879,-1.562369,0.829319,
+ 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ -0.632119,-0.359381,0.686492,-1.74779,-1.667608,0.60634,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ 0.02992,-0.202031,0.978922,-2.037371,-1.73636,0.656787,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ 0.38578,-0.259547,0.88533,-2.267049,-1.753901,0.662106,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ 0.772916,-0.305378,0.556188,-2.508885,-1.719933,0.721675,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ 0.942117,-0.292664,0.163592,-2.734184,-1.717948,0.749581,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.058013,0.998316,0,-2.656867,-1.853045,0,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ 0.80128,-0.303744,0.515451,-2.317557,-1.8742,0.470587,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ 0.093777,0.995593,0,-2.348005,-1.869142,0,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ 0.149455,0.988769,0,-2.092921,-1.839622,0,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ -0.661097,-0.258238,0.70446,-1.764045,-1.764987,0.406586,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ -0.160087,-0.987103,0,-1.799827,-1.753136,0,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ 0.830793,-0.244757,0.499877,-3.304804,-1.582192,0.643445,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ -0.176356,-0.113876,0.977717,-3.535416,0.191408,0.338478,
+ 0.170833,0.9853,0,-3.55232,0.219613,0,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ -0.051713,-0.100833,0.993559,-3.676599,-0.729578,0.330724,
+ 0.353735,-0.935346,0,-3.673607,-0.720796,0,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ 0.051664,-0.122235,0.991156,-3.686518,-0.955181,0.320349,
+ -0.34926,-0.937026,0,-3.678793,-0.926816,0,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ 0.459595,-0.144347,0.87632,-3.639586,-1.140102,0.3338,
+ -0.164,-0.98646,0,-3.650579,-1.142448,0,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ 0.407719,-0.190267,0.893064,-3.557869,-1.325941,0.37803,
+ 0.030921,-0.999522,0,-3.522115,-1.366623,0,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ 0.159615,0.129847,0.978602,-3.442085,-1.48412,0.406377,
+ 0.183204,-0.983075,0,-3.417689,-1.494416,0,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ 0.846555,-0.103662,0.52211,-3.314868,-1.599081,0.439626,
+ -0.997516,0.070442,0,-3.271035,-1.609292,0,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.0787,0.996898,0,-2.892162,-1.781087,0,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ -0.99928,-0.037933,0,-3.1103,-1.69172,0,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ 0.109483,-0.310605,0.944213,-3.616627,-0.350374,0.338492,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ 0.098463,-0.995141,0,-3.637643,-0.356271,0,
+ -0.211092,-0.082708,0.973961,-3.570243,-0.060093,0.344854,
+ 0.614301,0.789071,-0.000581,-3.583763,-0.052271,0,
+ -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.136917,-0.20176,0.969818,-3.51684,0.149002,0.430359,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.246054,-0.154918,0.956796,-3.529709,-0.065998,0.437217,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837,
+ -0.09542,0.162222,0.98213,-3.595973,-0.346391,0.426453,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ 0.039,-0.185675,0.981837,-3.665774,-0.73408,0.446286,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ -0.069043,-0.157333,0.985129,-3.667859,-0.964867,0.464702,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ 0.473622,-0.284001,0.833682,-3.631179,-1.157838,0.50561,
+ 0.290478,-0.146424,0.945612,-3.387254,-1.486027,0.672861,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ 0.431429,-0.109339,0.895497,-3.53391,-1.330455,0.568246,
+ -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.739347,0.031953,0.672566,-3.470778,-0.078218,0.546398,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ -0.970971,-0.219011,0.096178,-3.415655,-0.308965,0.671045,
+ -0.652584,-0.147678,0.743186,-3.526766,-0.317542,0.560837,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141,
+ -0.483189,-0.207332,0.850613,-3.569993,-0.731989,0.649435,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.4008,-0.167777,0.900672,-3.55012,-0.984868,0.675228,
+ -0.521685,-0.261319,0.812131,-3.335942,-1.365685,0.72459,
+ -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602,
+ -0.417424,-0.199203,0.886609,-3.492599,-1.180646,0.692282,
+ -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.872722,-0.174901,0.455813,-3.27979,-1.162072,0.784602,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.57342,0.819261,0,-3.544507,0.467147,0,
+ -0.17902,-0.308668,0.934171,-3.536654,0.442277,0.322,
+ -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502,
+ -0.989171,0.146765,0,-3.599077,0.796217,0,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.845931,-0.255219,-0.468256,-3.57817,0.837714,0.288502,
+ -0.989276,0.146061,0,-3.566995,0.656967,0,
+ -0.794709,-0.185222,-0.57804,-3.556552,0.704883,0.28063,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.912869,-0.285577,0.291747,-3.438226,-0.721479,0.728141,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.99574,-0.082547,0.041071,-3.283698,-0.730967,0.793898,
+ -0.883057,-0.239959,0.403273,-3.355398,-0.969157,0.766213,
+ -0.874358,-0.225285,0.429819,-3.25121,-0.948205,0.819868,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ -0.498756,-0.224101,0.83727,-1.936032,-1.829617,0.488916,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ -0.759627,-0.28527,0.584455,-2.027242,-1.813012,0.555232,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ -0.672688,-0.442616,0.592944,-2.126375,-1.866497,0.502895,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ 0.954473,-0.270031,0.126745,-2.176551,-1.873816,0.445782,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ 0.957938,-0.285979,0.023877,-2.147113,-1.903198,0.362462,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ -0.274087,0.000043,-0.961705,-2.062725,-1.884246,0.307336,
+ -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ -0.239734,-0.173966,0.955125,-1.88316,-1.829718,0.401567,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ 0.74023,-0.090866,0.666185,-1.946306,-1.872735,0.344251,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ 0.080262,-0.270606,0.959339,-2.466779,-1.857679,0.570461,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ -0.247433,-0.24804,0.936618,-2.547737,-1.833025,0.609321,
+ -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ -0.587844,-0.244917,0.771009,-2.64722,-1.84401,0.594347,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.975634,-0.187231,-0.114377,-2.684452,-1.891207,0.447388,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.985192,-0.12583,-0.116459,-2.614084,-1.905005,0.404925,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.441315,-0.29978,0.845797,-2.446375,-1.893261,0.49411,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.996811,-0.048518,-0.063355,-2.503818,-1.909806,0.431456,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256,
+ 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872,
+ 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853,
+ 0.332529,0.910491,0.245827,-2.060902,-2.031698,0.372079,
+ 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853,
+ -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489,
+ -0.212651,-0.104685,0.971504,-2.120746,-2.045137,0.411171,
+ -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489,
+ -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997,
+ 0.925586,0.050829,0.375109,-2.141621,-2.024301,0.470257,
+ -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997,
+ 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201,
+ 0.947044,0.280641,0.156039,-2.106039,-2.019111,0.510759,
+ 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201,
+ -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327,
+ 0.870384,0.492056,0.017698,-2.03574,-1.981182,0.547873,
+ -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327,
+ 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904,
+ 0.722741,0.690989,-0.01339,-1.971059,-1.992958,0.500845,
+ 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904,
+ 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256,
+ 0.532717,0.840798,0.09629,-1.933565,-1.993029,0.438902,
+ 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256,
+ 0.530834,0.847416,-0.010102,-1.978344,-2.023535,0.398257,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792,
+ 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579,
+ 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227,
+ 0.276212,-0.065585,0.958856,-2.539874,-2.049824,0.460098,
+ 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227,
+ 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656,
+ 0.373808,-0.059429,0.9256,-2.618068,-2.046419,0.441284,
+ 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656,
+ 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064,
+ 0.45571,-0.00339,0.890122,-2.667969,-2.036634,0.471396,
+ 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064,
+ 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465,
+ 0.512523,0.043999,0.857545,-2.685663,-2.028649,0.514928,
+ 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465,
+ 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258,
+ 0.754806,0.216246,0.619279,-2.678971,-2.007694,0.558395,
+ 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258,
+ 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616,
+ 0.827569,0.284291,0.484054,-2.641567,-2.003164,0.575611,
+ 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616,
+ 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735,
+ 0.856604,0.474875,0.201802,-2.571019,-1.995375,0.58623,
+ 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735,
+ 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792,
+ 0.78715,0.616449,-0.019656,-2.513608,-2.012858,0.558673,
+ 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792,
+ 0.66813,0.738233,-0.092817,-2.499138,-2.03809,0.504529,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904,
+ -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ -0.194126,0.280848,0.939914,-1.978016,-2.086834,0.494327,
+ 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ 0.2189,0.87846,0.424724,-2.04111,-2.075348,0.540201,
+ -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ -0.114527,0.103064,0.988059,-2.109684,-2.112345,0.503997,
+ -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ -0.01346,-0.014478,0.999805,-2.144393,-2.117408,0.464489,
+ 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ 0.035084,0.005692,0.999368,-2.12403,-2.137733,0.406853,
+ 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ 0.041586,0.068165,0.996807,-2.065655,-2.124623,0.36872,
+ 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256,
+ -0.077208,0.343417,0.936004,-2.048681,-2.165282,0.450843,
+ 0.122987,-0.006582,0.992387,-1.985123,-2.116661,0.394256,
+ 0.742615,0.656803,0.130894,-1.941442,-2.086904,0.433904,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792,
+ 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.032152,0.123743,0.991793,-2.527301,-2.106246,0.550735,
+ 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.154029,0.078449,0.984947,-2.583303,-2.089191,0.577616,
+ 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.204819,0.130792,0.970022,-2.65212,-2.09679,0.567258,
+ 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.198441,0.172024,0.964898,-2.688607,-2.101208,0.550465,
+ 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.198142,0.152918,0.968171,-2.695135,-2.12165,0.508064,
+ 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.237937,0.08172,0.967837,-2.677875,-2.129439,0.4656,
+ 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.519595,0.25029,0.816931,-2.629199,-2.138983,0.436227,
+ 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579,
+ 0.510285,0.851048,0.1238,-2.603284,-2.176802,0.510638,
+ 0.584509,0.341142,0.736187,-2.552923,-2.142304,0.454579,
+ 0.681964,0.386261,0.621069,-2.513187,-2.130859,0.49792,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ 0.820312,-0.193024,0.538358,-3.120907,-1.707924,0.431829,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ 0.843062,-0.10517,0.527433,-3.139394,-1.687482,0.638546,
+ 0.999491,-0.02584,0.01873,-2.941731,-1.787431,0.442574,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ -0.845196,-0.27877,0.455994,-2.699966,-1.850397,0.57007,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ 0.972392,0.232654,0.018037,-2.709403,-1.879947,0.508775,
+ -0.732521,-0.474279,0.488336,-2.811581,-1.79821,0.712737,
+ 0.713401,0.39471,-0.579019,-3.008323,-1.759271,0.655672,
+ -0.530021,0.13773,0.836724,-3.697889,-0.951955,0.098793,
+ -0.54555,-0.056478,0.836173,-3.67645,-0.551317,0.077574,
+ -0.548359,-0.017804,0.836053,-3.699784,-0.759901,0.088664
+};
+static const struct gllist frame={GL_N3F_V3F,GL_TRIANGLES,1515,data,NULL};
+const struct gllist *cow_udder=&frame;
diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c
new file mode 100644
index 0000000..74c6915
--- /dev/null
+++ b/hacks/glx/crackberg.c
@@ -0,0 +1,1468 @@
+/***************************
+ ** crackberg; Matus Telgarsky [ catachresis@cmu.edu ] 2005
+ ** */
+#ifndef HAVE_JWXYZ
+# define XK_MISCELLANY
+# include
+#endif
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define release_crackberg 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#ifdef USE_GL /* whole file */
+
+#define DEF_NSUBDIVS "4"
+#define DEF_BORING "False"
+#define DEF_CRACK "True"
+#define DEF_WATER "True"
+#define DEF_FLAT "True"
+#define DEF_COLOR "random"
+#define DEF_LIT "True"
+#define DEF_VISIBILITY "0.6"
+#define DEF_LETTERBOX "False"
+
+
+/***************************
+ ** macros
+ ** */
+
+#define M_RAD7_4 0.661437827766148
+#define M_SQRT3_2 0.866025403784439
+#define M_PI_180 0.0174532925199433
+#define M_180_PI 57.2957795130823
+#define MSPEED_SCALE 1.1
+#define AVE3(a,b,c) ( ((a) + (b) + (c)) / 3.0 )
+#define MAX_ZDELTA 0.35
+#define DISPLACE(h,d) (h+(random()/(double)RAND_MAX-0.5)*2*MAX_ZDELTA/(1<heights[(cberg->epoints * (y) - ((y)-1)*(y)/2 + (x))])
+#define sNCOORD(x,y,p) (cberg->norms[3 * (cberg->epoints * (y) - ((y)-1)*(y)/2 + (x)) + (p)])
+#define SET_sNCOORD(x,y, down, a,b,c,d,e,f) \
+ sNCOORD(x,y,0) = AVE3(a-d, 0.5 * (b-e), -0.5 * (c-f)); \
+ sNCOORD(x,y,1) = ((down) ? -1 : +1) * AVE3(0.0, M_SQRT3_2 * (b-e), M_SQRT3_2 * (c-f)); \
+ sNCOORD(x,y,2) = (2*dx)
+#define fNCOORD(x,y,w,p) \
+ (cberg->norms[3 * (2*(y)*cberg->epoints-((y)+1)*((y)+1) + 1 + 2 * ((x)-1) + (w)) + (p)])
+#define SET_fNCOORDa(x,y, down, dz00,dz01) \
+ fNCOORD(x,y,0,0) = (down) * (dy) * (dz01); \
+ fNCOORD(x,y,0,1) = (down) * ((dz01) * (dx) / 2 - (dx) * (dz00)); \
+ fNCOORD(x,y,0,2) = (down) * (dx) * (dy)
+#define SET_fNCOORDb(x,y, down, dz10,dz11) \
+ fNCOORD(x,y,1,0) = (down) * (dy) * (dz10); \
+ fNCOORD(x,y,1,1) = (down) * ((dz11) * (dx) - (dx) * (dz10) / 2); \
+ fNCOORD(x,y,1,2) = (down) * (dx) * (dy)
+
+
+/***************************
+ ** types
+ ** */
+
+
+typedef struct _cberg_state cberg_state;
+typedef struct _Trile Trile;
+
+typedef struct {
+ void (*init)(Trile *);
+ void (*free)(Trile *);
+ void (*draw)(Trile *);
+ void (*init_iter)(Trile *, cberg_state *);
+ void (*dying_iter)(Trile *, cberg_state *);
+} Morph;
+
+typedef struct {
+ char *id;
+ void (*land)(cberg_state *, double);
+ void (*water)(cberg_state *, double);
+ double bg[4];
+} Color;
+
+enum { TRILE_NEW, TRILE_INIT, TRILE_STABLE, TRILE_DYING, TRILE_DELETE };
+
+struct _Trile {
+ int x,y; /*center coords; points up if (x+y)%2 == 0, else down*/
+ short state;
+ short visible;
+ double *l,*r,*v; /*only edges need saving*/
+ GLuint call_list;
+
+ void *morph_data;
+ const Morph *morph;
+
+ struct _Trile *left, *right, *parent; /* for bst, NOT spatial */
+ struct _Trile *next_free; /* for memory allocation */
+};
+
+enum { MOTION_AUTO = 0, MOTION_MANUAL = 1, MOTION_LROT= 2, MOTION_RROT = 4,
+ MOTION_FORW = 8, MOTION_BACK = 16, MOTION_DEC = 32, MOTION_INC = 64,
+ MOTION_LEFT = 128, MOTION_RIGHT = 256 };
+
+struct _cberg_state {
+ GLXContext *glx_context;
+ Trile *trile_head;
+
+ double x,y,z, yaw,roll,pitch, dx,dy,dz, dyaw,droll,dpitch, elapsed;
+ double prev_frame;
+ int motion_state;
+ double mspeed;
+
+ double fovy, aspect, zNear, zFar;
+
+ const Color *color;
+
+ int count;
+
+ unsigned int epoints, /*number of points to one edge*/
+ tpoints, /*number points total*/
+ ntris, /*number triangles per trile*/
+ tnorms; /*number of normals*/
+
+ double *heights, *norms;
+ Trile *free_head; /* for trile_[alloc|free] */
+
+ double draw_elapsed;
+
+ double dx0;
+
+ double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b,
+ vf0r,vf0g,vf0b, vf1r, vf1g, vf1b;
+
+ Bool button_down_p;
+ int mouse_x, mouse_y;
+ struct timeval paused;
+};
+
+
+
+/***************************
+ ** globals
+ ** */
+
+static unsigned int nsubdivs;
+static Bool crack, boring, do_water, flat, lit, letterbox;
+static float visibility;
+static char *color;
+
+static cberg_state *cbergs = NULL;
+
+static XrmOptionDescRec opts[] = {
+ {"-nsubdivs", ".nsubdivs", XrmoptionSepArg, 0},
+ {"-boring", ".boring", XrmoptionNoArg, "True"},
+ {"-crack", ".crack", XrmoptionNoArg, "True"},
+ {"-no-crack", ".crack", XrmoptionNoArg, "False"},
+ {"-water", ".water", XrmoptionNoArg, "True"},
+ {"-no-water", ".water", XrmoptionNoArg, "False"},
+ {"-flat", ".flat", XrmoptionNoArg, "True"},
+ {"-no-flat", ".flat", XrmoptionNoArg, "False"},
+ {"-color", ".color", XrmoptionSepArg, 0},
+ {"-lit", ".lit", XrmoptionNoArg, "True"},
+ {"-no-lit", ".lit", XrmoptionNoArg, "False"},
+ {"-visibility", ".visibility", XrmoptionSepArg, 0},
+ {"-letterbox", ".letterbox", XrmoptionNoArg, "True"}
+};
+
+static argtype vars[] = {
+ {&nsubdivs, "nsubdivs", "nsubdivs", DEF_NSUBDIVS, t_Int},
+ {&boring, "boring", "boring", DEF_BORING, t_Bool},
+ {&crack, "crack", "crack", DEF_CRACK, t_Bool},
+ {&do_water, "water", "water", DEF_WATER, t_Bool},
+ {&flat, "flat", "flat", DEF_FLAT, t_Bool},
+ {&color, "color", "color", DEF_COLOR, t_String},
+ {&lit, "lit", "lit", DEF_LIT, t_Bool},
+ {&visibility, "visibility", "visibility", DEF_VISIBILITY, t_Float},
+ {&letterbox, "letterbox", "letterbox", DEF_LETTERBOX, t_Bool}
+};
+
+ENTRYPOINT ModeSpecOpt crackberg_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/***************************
+ ** Trile functions.
+ ** first come all are regular trile functions
+ ** */
+
+
+/* forward decls for trile_new */
+static Trile *triles_find(Trile *tr, int x, int y);
+static Trile *trile_alloc(cberg_state *cberg);
+static const Morph *select_morph(void);
+static const Color *select_color(cberg_state *);
+
+static void trile_calc_sides(cberg_state *cberg,
+ Trile *new, int x, int y, Trile *root)
+{
+ unsigned int i,j,k;
+ int dv = ( (x + y) % 2 ? +1 : -1); /* we are pointing down or up*/
+ Trile *l, *r, *v; /* v_ertical */
+
+
+ if (root) {
+ l = triles_find(root, x-1, y);
+ r = triles_find(root, x+1, y);
+ v = triles_find(root, x,y+dv);
+ } else
+ l = r = v = NULL;
+
+ if (v) {
+ for (i = 0; i != cberg->epoints; ++i)
+ new->v[i] = v->v[i];
+ } else {
+ if (l) new->v[0] = l->l[0];
+ else if (!root) new->v[0] = DISPLACE(0,0);
+ else {
+ Trile *tr; /* all of these tests needed.. */
+ if ( (tr = triles_find(root, x-1, y + dv)) )
+ new->v[0] = tr->l[0];
+ else if ( (tr = triles_find(root, x-2, y)) )
+ new->v[0] = tr->r[0];
+ else if ( (tr = triles_find(root, x-2, y + dv)) )
+ new->v[0] = tr->r[0];
+ else
+ new->v[0] = DISPLACE(0,0);
+ }
+
+ if (r) new->v[cberg->epoints-1] = r->l[0];
+ else if (!root) new->v[cberg->epoints-1] = DISPLACE(0,0);
+ else {
+ Trile *tr;
+ if ( (tr = triles_find(root, x+1, y + dv)) )
+ new->v[cberg->epoints-1] = tr->l[0];
+ else if ( (tr = triles_find(root, x+2, y)) )
+ new->v[cberg->epoints-1] = tr->v[0];
+ else if ( (tr = triles_find(root, x+2, y + dv)) )
+ new->v[cberg->epoints-1] = tr->v[0];
+ else
+ new->v[cberg->epoints-1] = DISPLACE(0,0);
+ }
+
+ for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+ for (j = i; j < cberg->epoints; j += i * 2)
+ new->v[j] = DISPLACE(MEAN(new->v[j-i], new->v[j+i]), k);
+ }
+
+ if (l) {
+ for (i = 0; i != cberg->epoints; ++i)
+ new->l[i] = l->r[i];
+ } else {
+ if (r) new->l[0] = r->v[0];
+ else if (!root) new->l[0] = DISPLACE(0,0);
+ else {
+ Trile *tr;
+ if ( (tr = triles_find(root, x-1, y-dv)) )
+ new->l[0] = tr->r[0];
+ else if ( (tr = triles_find(root, x+1, y-dv)) )
+ new->l[0] = tr->v[0];
+ else if ( (tr = triles_find(root, x, y-dv)) )
+ new->l[0] = tr->l[0];
+ else
+ new->l[0] = DISPLACE(0,0);
+ }
+
+ new->l[cberg->epoints - 1] = new->v[0];
+
+ for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+ for (j = i; j < cberg->epoints; j += i * 2)
+ new->l[j] = DISPLACE(MEAN(new->l[j-i], new->l[j+i]), k);
+ }
+
+ if (r) {
+ for (i = 0; i != cberg->epoints; ++i)
+ new->r[i] = r->l[i];
+ } else {
+ new->r[0] = new->v[cberg->epoints - 1];
+ new->r[cberg->epoints - 1] = new->l[0];
+
+ for (i = ((1 << nsubdivs) >> 1), k =1; i; i >>= 1, ++k)
+ for (j = i; j < cberg->epoints; j += i * 2)
+ new->r[j] = DISPLACE(MEAN(new->r[j-i], new->r[j+i]), k);
+ }
+}
+
+static void trile_calc_heights(cberg_state *cberg, Trile *new)
+{
+ unsigned int i, j, k, h;
+
+ for (i = 0; i < cberg->epoints - 1; ++i) { /* copy in sides */
+ TCOORD(i,0) = new->v[i];
+ TCOORD(cberg->epoints - 1 - i, i) = new->r[i];
+ TCOORD(0, cberg->epoints - 1 - i) = new->l[i];
+ }
+
+ for (i = ((1 << nsubdivs) >> 2), k =1; i; i >>= 1, ++k)
+ for (j = 1; j < (1 << k); ++j)
+ for (h = 1; h <= (1<x + new->y) % 2) ? -1 : +1);
+ double dz00,dz01,dz10,dz11, a,b,c,d;
+ double dy = down * M_SQRT3_2 / (1 << nsubdivs);
+ double dx = cberg->dx0;
+
+ for (y = 0; y < cberg->epoints - 1; ++y) {
+ a = TCOORD(0,y);
+ b = TCOORD(0,y+1);
+ for (x = 1; x < cberg->epoints - 1 - y; ++x) {
+ c = TCOORD(x,y);
+ d = TCOORD(x,y+1);
+
+ dz00 = b-c;
+ dz01 = a-c;
+ dz10 = b-d;
+ dz11 = c-d;
+
+ SET_fNCOORDa(x,y, down, dz00,dz01);
+ SET_fNCOORDb(x,y, down, dz10,dz11);
+
+ a = c;
+ b = d;
+ }
+
+ c = TCOORD(x,y);
+ dz00 = b-c;
+ dz01 = a-c;
+ SET_fNCOORDa(x,y, down, dz00, dz01);
+ }
+}
+
+static void trile_calc_smooth_norms(cberg_state *cberg, Trile *new)
+{
+ unsigned int i,j, down = (new->x + new->y) % 2;
+ double prev, cur, next;
+ double dx = cberg->dx0;
+
+ /** corners -- assume level (bah) **/
+ cur = TCOORD(0,0);
+ SET_sNCOORD(0,0, down,
+ cur,cur,TCOORD(0,1),TCOORD(1,0),cur,cur);
+ cur = TCOORD(cberg->epoints-1,0);
+ SET_sNCOORD(cberg->epoints-1,0, down,
+ TCOORD(cberg->epoints-2,0),TCOORD(cberg->epoints-2,1),cur,cur,cur,cur);
+ cur = TCOORD(0,cberg->epoints-1);
+ SET_sNCOORD(0,cberg->epoints-1, down,
+ cur,cur,cur,cur,TCOORD(1,cberg->epoints-2),TCOORD(0,cberg->epoints-2));
+
+
+ /** sides **/
+ /* vert */
+ prev = TCOORD(0,0);
+ cur = TCOORD(1,0);
+ for (i = 1; i < cberg->epoints - 1; ++i) {
+ next = TCOORD(i+1,0);
+ SET_sNCOORD(i,0, down, prev,TCOORD(i-1,1),TCOORD(i,1), next,cur,cur);
+ prev = cur;
+ cur = next;
+ }
+
+ /* right */
+ prev = TCOORD(cberg->epoints-1,0);
+ cur = TCOORD(cberg->epoints-2,0);
+ for (i = 1; i < cberg->epoints - 1; ++i) {
+ next = TCOORD(cberg->epoints-i-2,i+1);
+ SET_sNCOORD(cberg->epoints-i-1,i, down, TCOORD(cberg->epoints-i-2,i),next,cur,
+ cur,prev,TCOORD(cberg->epoints-i-1,i-1));
+ prev = cur;
+ cur = next;
+ }
+
+ /* left */
+ prev = TCOORD(0,0);
+ cur = TCOORD(0,1);
+ for (i = 1; i < cberg->epoints - 1; ++i) {
+ next = TCOORD(0,i+1);
+ SET_sNCOORD(0,i, down, cur,cur,next,TCOORD(1,i),TCOORD(1,i-1),prev);
+ prev = cur;
+ cur = next;
+ }
+
+
+ /** fill in **/
+ for (i = 1; i < cberg->epoints - 2; ++i) {
+ prev = TCOORD(0,i);
+ cur = TCOORD(1,i);
+ for (j = 1; j < cberg->epoints - i - 1; ++j) {
+ next = TCOORD(j+1,i);
+ SET_sNCOORD(j,i, down, prev,TCOORD(j-1,i+1),TCOORD(j,i+1),
+ next,TCOORD(j+1,i-1),TCOORD(j,i-1));
+ prev = cur;
+ cur = next;
+ }
+ }
+}
+
+static inline void trile_light(cberg_state *cberg,
+ unsigned int x, unsigned int y,
+ unsigned int which)
+{
+ if (flat) {
+ if (x) {
+ glNormal3d(fNCOORD(x,y,which,0),
+ fNCOORD(x,y,which,1),
+ fNCOORD(x,y,which,2));
+ } else { /* I get mesa errors and bizarre glitches without this!! */
+ glNormal3d(fNCOORD(1,y,0,0),
+ fNCOORD(1,y,0,1),
+ fNCOORD(1,y,0,2));
+ }
+ } else {
+ glNormal3d(sNCOORD(x,y+which,0),
+ sNCOORD(x,y+which,1),
+ sNCOORD(x,y+which,2));
+ }
+}
+
+static inline void trile_draw_vertex(cberg_state *cberg, unsigned int ix,
+ unsigned int iy, unsigned int which, double x,double y,
+ double zcur, double z1, double z2)
+{
+ glColor3d(0.0, 0.0, 0.0); /* don't ask. my card breaks otherwise. */
+
+ if (do_water && zcur <= 0.0) {
+ cberg->color->water(cberg, zcur); /* XXX use average-of-3 for color when flat?*/
+ if (lit) glNormal3d(0.0,0.0,1.0);
+ glVertex3d(x, y, 0.0);
+ } else {
+ cberg->color->land(cberg, zcur);
+ if (lit) trile_light(cberg,ix,iy,which);
+ glVertex3d(x, y, zcur);
+ }
+}
+
+static void trile_render(cberg_state *cberg, Trile *new)
+{
+ double cornerx = 0.5 * new->x - 0.5, cornery;
+ double dy = M_SQRT3_2 / (1 << nsubdivs);
+ double z0,z1,z2;
+ int x,y;
+
+ new->call_list = glGenLists(1);
+ glNewList(new->call_list, GL_COMPILE);
+
+ if ((new->x + new->y) % 2) { /*point down*/
+ cornery = (new->y + 0.5)*M_SQRT3_2;
+ glFrontFace(GL_CW);
+ dy = -dy;
+ } else
+ cornery = (new->y - 0.5) * M_SQRT3_2;
+
+ for (y = 0; y < cberg->epoints - 1; ++y) {
+ double dx = cberg->dx0;
+ glBegin(GL_TRIANGLE_STRIP);
+ /* first three points all part of the same triangle.. */
+ z0 = TCOORD(0,y);
+ z1 = TCOORD(0,y+1);
+ z2 = TCOORD(1,y);
+ trile_draw_vertex(cberg, 0,y,0,
+ cornerx,cornery, z0, z1, z2);
+ trile_draw_vertex(cberg, 0,y,1,
+ cornerx+0.5*dx,cornery+dy, z1, z0, z2);
+
+ for (x = 1; x < cberg->epoints - 1 - y; ++x) {
+ trile_draw_vertex(cberg, x,y,0,
+ cornerx+x*dx,cornery, z2, z1, z0);
+
+ z0 = TCOORD(x, y+1);
+
+ trile_draw_vertex(cberg, x,y,1,
+ cornerx+(x+0.5)*dx,cornery+dy, z0, z2, z1);
+
+ z1 = z0;
+ z0 = z2;
+ z2 = TCOORD(x+1,y);
+ }
+ trile_draw_vertex(cberg, x,y,0,
+ cornerx + x*dx, cornery, z2, z1, z0);
+ glEnd();
+
+ cornerx += dx/2;
+ cornery += dy;
+ }
+
+ if ((new->x + new->y) % 2) /*point down*/
+ glFrontFace(GL_CCW);
+ glEndList();
+}
+
+static Trile *trile_new(cberg_state *cberg, int x,int y,Trile *parent,Trile *root)
+{
+ Trile *new;
+
+ new = trile_alloc(cberg);
+
+ new->x = x;
+ new->y = y;
+ new->state = TRILE_NEW;
+ new->parent = parent;
+ new->left = new->right = NULL;
+ new->visible = 1;
+
+ new->morph = select_morph();
+ new->morph->init(new);
+
+ trile_calc_sides(cberg, new, x, y, root);
+ trile_calc_heights(cberg, new);
+
+ if (lit) {
+ if (flat) trile_calc_flat_norms(cberg, new);
+ else trile_calc_smooth_norms(cberg, new);
+ }
+
+ trile_render(cberg, new);
+ return new;
+}
+
+static Trile *trile_alloc(cberg_state *cberg)
+{
+ Trile *new;
+
+ if (cberg->free_head) {
+ new = cberg->free_head;
+ cberg->free_head = cberg->free_head->next_free;
+ } else {
+ ++cberg->count;
+ if (!(new = malloc(sizeof(Trile)))
+ || !(new->l = (double *) malloc(sizeof(double) * cberg->epoints * 3))) {
+ perror(progname);
+ exit(1);
+ }
+ new->r = new->l + cberg->epoints;
+ new->v = new->r + cberg->epoints;
+#ifdef DEBUG
+ printf("needed to alloc; [%d]\n", cberg->count);
+#endif
+ }
+ return new;
+}
+
+static void trile_free(cberg_state *cberg, Trile *tr)
+{
+ glDeleteLists(tr->call_list, 1);
+ tr->morph->free(tr);
+ tr->next_free = cberg->free_head;
+ cberg->free_head = tr;
+}
+
+
+static void trile_draw_vanilla(Trile *tr)
+{ glCallList(tr->call_list); }
+
+static void trile_draw(Trile *tr, void *ignore)
+{
+ if (tr->state == TRILE_STABLE)
+ trile_draw_vanilla(tr);
+ else
+ tr->morph->draw(tr);
+}
+
+
+/***************************
+ ** Trile morph functions.
+ ** select function at bottom (forward decls sucls)
+ ** */
+
+
+/*** first the basic growing morph */
+
+static void grow_init(Trile *tr)
+{
+ tr->morph_data = (void *) malloc(sizeof(double));
+ *((double *)tr->morph_data) = 0.02; /* not 0; avoid normals crapping */
+}
+
+static void grow_free(Trile *tr)
+{
+ free(tr->morph_data);
+}
+
+static void grow_draw(Trile *tr)
+{
+ glPushMatrix();
+ glScaled(1.0,1.0, *((double *)tr->morph_data));
+ trile_draw_vanilla(tr);
+ glPopMatrix();
+}
+
+static void grow_init_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+ if (*((double *)tr->morph_data) >= 1.0)
+ tr->state = TRILE_STABLE;
+}
+
+static void grow_dying_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+ if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */
+ tr->state = TRILE_DELETE;
+}
+
+/**** falling morph ****/
+
+static void fall_init(Trile *tr)
+{
+ tr->morph_data = (void *) malloc(sizeof(double));
+ *((double *)tr->morph_data) = 0.0;
+}
+
+static void fall_free(Trile *tr)
+{
+ free(tr->morph_data);
+}
+
+static void fall_draw(Trile *tr)
+{
+ glPushMatrix();
+ glTranslated(0.0,0.0,(0.5 - *((double *)tr->morph_data)) * 8);
+ trile_draw_vanilla(tr);
+ glPopMatrix();
+}
+
+static void fall_init_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+ if (*((double *)tr->morph_data) >= 0.5)
+ tr->state = TRILE_STABLE;
+}
+
+static void fall_dying_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+ if (*((double *)tr->morph_data) <= 0.0) /* XXX avoid fast del/cons? */
+ tr->state = TRILE_DELETE;
+}
+
+/**** yeast morph ****/
+
+static void yeast_init(Trile *tr)
+{
+ tr->morph_data = (void *) malloc(sizeof(double));
+ *((double *)tr->morph_data) = 0.02;
+}
+
+static void yeast_free(Trile *tr)
+{
+ free(tr->morph_data);
+}
+
+static void yeast_draw(Trile *tr)
+{
+ double x = tr->x * 0.5,
+ y = tr->y * M_SQRT3_2,
+ z = *((double *)tr->morph_data);
+
+ glPushMatrix();
+ glTranslated(x, y, 0);
+ glRotated(z*360, 0,0,1);
+ glScaled(z,z,z);
+ glTranslated(-x, -y, 0);
+ trile_draw_vanilla(tr);
+ glPopMatrix();
+}
+
+static void yeast_init_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)(tr->morph_data)) = *((double *)tr->morph_data) + cberg->elapsed;
+ if (*((double *)tr->morph_data) >= 1.0)
+ tr->state = TRILE_STABLE;
+}
+
+static void yeast_dying_iter(Trile *tr, cberg_state *cberg)
+{
+ *((double *)tr->morph_data) = *((double *)tr->morph_data) - cberg->elapsed;
+ if (*((double *)tr->morph_data) <= 0.02) /* XXX avoid fast del/cons? */
+ tr->state = TRILE_DELETE;
+}
+
+/**** identity morph ****/
+
+static void identity_init(Trile *tr)
+{ tr->state = TRILE_STABLE; }
+
+static void identity_free(Trile *tr)
+{}
+
+static void identity_draw(Trile *tr)
+{ trile_draw_vanilla(tr); }
+
+static void identity_init_iter(Trile *tr, cberg_state *cberg)
+{}
+
+static void identity_dying_iter(Trile *tr, cberg_state *cberg)
+{ tr->state = TRILE_DELETE; }
+
+/** now to handle selection **/
+
+static const Morph morphs[] = {
+ {grow_init, grow_free, grow_draw, grow_init_iter, grow_dying_iter},
+ {fall_init, fall_free, fall_draw, fall_init_iter, fall_dying_iter},
+ {yeast_init, yeast_free, yeast_draw, yeast_init_iter, yeast_dying_iter},
+ {identity_init, /*always put identity last to skip it..*/
+ identity_free, identity_draw, identity_init_iter, identity_dying_iter}
+};
+
+static const Morph *select_morph()
+{
+ int nmorphs = countof(morphs);
+ if (crack)
+ return &morphs[random() % (nmorphs-1)];
+ else if (boring)
+ return &morphs[nmorphs-1];
+ else
+ return morphs;
+}
+
+
+/***************************
+ ** Trile superstructure functions.
+ ** */
+
+
+static void triles_set_visible(cberg_state *cberg, Trile **root, int x, int y)
+{
+ Trile *parent = NULL,
+ *iter = *root;
+ int goleft=0;
+
+ while (iter != NULL) {
+ parent = iter;
+ goleft = (iter->x > x || (iter->x == x && iter->y > y));
+ if (goleft)
+ iter = iter->left;
+ else if (iter->x == x && iter->y == y) {
+ iter->visible = 1;
+ return;
+ } else
+ iter = iter->right;
+ }
+
+ if (parent == NULL)
+ *root = trile_new(cberg, x,y, NULL, NULL);
+ else if (goleft)
+ parent->left = trile_new(cberg, x,y, parent, *root);
+ else
+ parent->right = trile_new(cberg, x,y, parent, *root);
+}
+
+static unsigned int triles_foreach(Trile *root, void (*f)(Trile *, void *),
+ void *data)
+{
+ if (root == NULL)
+ return 0;
+
+ f(root, data);
+ return 1 + triles_foreach(root->left, f, data)
+ + triles_foreach(root->right, f, data);
+}
+
+static void triles_update_state(Trile **root, cberg_state *cberg)
+{
+ int process_current = 1;
+ if (*root == NULL)
+ return;
+
+ while (process_current) {
+ if ( (*root)->visible ) {
+ if ( (*root)->state == TRILE_INIT )
+ (*root)->morph->init_iter(*root, cberg);
+ else if ( (*root)->state == TRILE_DYING ) {
+ (*root)->state = TRILE_INIT;
+ (*root)->morph->init_iter(*root, cberg);
+ } else if ( (*root)->state == TRILE_NEW )
+ (*root)->state = TRILE_INIT;
+
+ (*root)->visible = 0;
+ } else {
+ if ( (*root)->state == TRILE_STABLE )
+ (*root)->state = TRILE_DYING;
+ else if ( (*root)->state == TRILE_INIT ) {
+ (*root)->state = TRILE_DYING;
+ (*root)->morph->dying_iter(*root, cberg);
+ } else if ( (*root)->state == TRILE_DYING )
+ (*root)->morph->dying_iter(*root, cberg);
+ }
+
+ if ( (*root)->state == TRILE_DELETE ) {
+ Trile *splice_me;
+ process_current = 1;
+
+ if ((*root)->left == NULL) {
+ splice_me = (*root)->right;
+ if (splice_me)
+ splice_me->parent = (*root)->parent;
+ else
+ process_current = 0;
+ } else if ((*root)->right == NULL) {
+ splice_me = (*root)->left;
+ splice_me->parent = (*root)->parent;
+ } else {
+ Trile *tmp;
+ for (splice_me = (*root)->right; splice_me->left != NULL; )
+ splice_me = splice_me->left;
+ tmp = splice_me->right;
+
+ if (tmp) tmp->parent = splice_me->parent;
+
+ if (splice_me == splice_me->parent->left)
+ splice_me->parent->left = tmp;
+ else
+ splice_me->parent->right = tmp;
+
+ splice_me->parent = (*root)->parent;
+ splice_me->left = (*root)->left;
+ (*root)->left->parent = splice_me;
+ splice_me->right = (*root)->right;
+ if ((*root)->right)
+ (*root)->right->parent = splice_me;
+ }
+ trile_free(cberg, *root);
+ *root = splice_me;
+ } else
+ process_current = 0;
+ }
+
+ if (*root) {
+ triles_update_state(&((*root)->left), cberg);
+ triles_update_state(&((*root)->right), cberg);
+ }
+}
+
+static Trile *triles_find(Trile *tr, int x, int y)
+{
+ while (tr && !(tr->x == x && tr->y == y))
+ if (x < tr->x || (x == tr->x && y < tr->y))
+ tr = tr->left;
+ else
+ tr = tr->right;
+ return tr;
+}
+
+
+/***************************
+ ** Trile superstructure visibility functions.
+ ** strategy fine, implementation lazy&retarded =/
+ ** */
+
+#ifdef DEBUG
+static double x_shit, y_shit;
+#endif
+
+static void calc_points(cberg_state *cberg, double *x1,double *y1,
+ double *x2,double *y2, double *x3,double *y3, double *x4,double *y4)
+{
+ double zNear, x_nearcenter, y_nearcenter, nhalfwidth, x_center, y_center;
+
+
+ /* could cache these.. bahhhhhhhhhhhhhh */
+ double halfheight = tan(cberg->fovy / 2 * M_PI_180) * cberg->zNear;
+ double fovx_2 = atan(halfheight * cberg->aspect / cberg->zNear) * M_180_PI;
+ double zFar = cberg->zFar + M_RAD7_4;
+ double fhalfwidth = zFar * tan(fovx_2 * M_PI_180)
+ + M_RAD7_4 / cos(fovx_2 * M_PI_180);
+ double x_farcenter = cberg->x + zFar * cos(cberg->yaw * M_PI_180);
+ double y_farcenter = cberg->y + zFar * sin(cberg->yaw * M_PI_180);
+ *x1 = x_farcenter + fhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+ *y1 = y_farcenter + fhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+ *x2 = x_farcenter - fhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+ *y2 = y_farcenter - fhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+
+#ifdef DEBUG
+ printf("pos (%.3f,%.3f) @ %.3f || fovx: %f || fovy: %f\n",
+ cberg->x, cberg->y, cberg->yaw, fovx_2 * 2, cberg->fovy);
+ printf("\tfarcenter: (%.3f,%.3f) || fhalfwidth: %.3f \n"
+ "\tp1: (%.3f,%.3f) || p2: (%.3f,%.3f)\n",
+ x_farcenter, y_farcenter, fhalfwidth, *x1, *y1, *x2, *y2);
+#endif
+
+ if (cberg->z - halfheight <= 0) /* near view plane hits xy */
+ zNear = cberg->zNear - M_RAD7_4;
+ else /* use bottom of frustum */
+ zNear = cberg->z / tan(cberg->fovy / 2 * M_PI_180) - M_RAD7_4;
+ nhalfwidth = zNear * tan(fovx_2 * M_PI_180)
+ + M_RAD7_4 / cos(fovx_2 * M_PI_180);
+ x_nearcenter = cberg->x + zNear * cos(cberg->yaw * M_PI_180);
+ y_nearcenter = cberg->y + zNear * sin(cberg->yaw * M_PI_180);
+ *x3 = x_nearcenter - nhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+ *y3 = y_nearcenter - nhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+ *x4 = x_nearcenter + nhalfwidth * cos((cberg->yaw - 90) * M_PI_180);
+ *y4 = y_nearcenter + nhalfwidth * sin((cberg->yaw - 90) * M_PI_180);
+
+#ifdef DEBUG
+ printf("\tnearcenter: (%.3f,%.3f) || nhalfwidth: %.3f\n"
+ "\tp3: (%.3f,%.3f) || p4: (%.3f,%.3f)\n",
+ x_nearcenter, y_nearcenter, nhalfwidth, *x3, *y3, *x4, *y4);
+#endif
+
+
+ /* center can be average or the intersection of diagonals.. */
+#if 0
+ {
+ double c = nhalfwidth * (zFar -zNear) / (fhalfwidth + nhalfwidth);
+ x_center = x_nearcenter + c * cos(cberg->yaw * M_PI_180);
+ y_center = y_nearcenter + c * sin(cberg->yaw * M_PI_180);
+ }
+#else
+ x_center = (x_nearcenter + x_farcenter) / 2;
+ y_center = (y_nearcenter + y_farcenter) / 2;
+#endif
+#ifdef DEBUG
+ x_shit = x_center;
+ y_shit = y_center;
+#endif
+
+#define VSCALE(p) *x##p = visibility * *x##p + (1-visibility) * x_center; \
+ *y##p = visibility * *y##p + (1-visibility) * y_center
+
+ VSCALE(1);
+ VSCALE(2);
+ VSCALE(3);
+ VSCALE(4);
+#undef VSCALE
+}
+
+/* this is pretty stupid.. */
+static inline void minmax4(double a, double b, double c, double d,
+ double *min, double *max)
+{
+ *min = *max = a;
+
+ if (b > *max) *max = b;
+ else if (b < *min) *min = b;
+ if (c > *max) *max = c;
+ else if (c < *min) *min = c;
+ if (d > *max) *max = d;
+ else if (d < *min) *min = d;
+}
+
+typedef struct {
+ double min, max, start, dx;
+} LS;
+
+#define check_line(a, b) \
+ if (fabs(y##a-y##b) > 0.001) { \
+ ls[count].dx = (x##b-x##a)/(y##b-y##a); \
+ if (y##b > y##a) { \
+ ls[count].start = x##a; \
+ ls[count].min = y##a; \
+ ls[count].max = y##b; \
+ } else { \
+ ls[count].start = x##b; \
+ ls[count].min = y##b; \
+ ls[count].max = y##a; \
+ } \
+ ++count; \
+ }
+
+static unsigned int build_ls(cberg_state *cberg,
+ double x1, double y1, double x2, double y2,
+ double x3, double y3, double x4, double y4, LS *ls,
+ double *trough, double *peak)
+{
+ unsigned int count = 0;
+
+ check_line(1, 2);
+ check_line(2, 3);
+ check_line(3, 4);
+ check_line(4, 1);
+
+ minmax4(y1, y2, y3, y4, trough, peak);
+ return count;
+}
+
+#undef check_line
+
+/*needs bullshit to avoid double counts on corners.*/
+static void find_bounds(double y, double *left, double *right, LS *ls,
+ unsigned int nls)
+{
+ double x;
+ unsigned int i, set = 0;
+
+ for (i = 0; i != nls; ++i)
+ if (ls[i].min <= y && ls[i].max >= y) {
+ x = (y - ls[i].min) * ls[i].dx + ls[i].start;
+ if (!set) {
+ *left = x;
+ ++set;
+ } else if (fabs(x - *left) > 0.001) {
+ if (*left < x)
+ *right = x;
+ else {
+ *right = *left;
+ *left = x;
+ }
+ return;
+ }
+ }
+
+ /* just in case we somehow blew up */
+ *left = 3.0;
+ *right = -3.0;
+}
+
+static void mark_visible(cberg_state *cberg)
+{
+ double trough, peak, yval, left=0, right=0;
+ double x1,y1, x2,y2, x3,y3, x4,y4;
+ int start, stop, x, y;
+ LS ls[4];
+ unsigned int nls;
+
+ calc_points(cberg, &x1,&y1, &x2,&y2, &x3,&y3, &x4,&y4);
+ nls = build_ls(cberg, x1,y1, x2,y2, x3,y3, x4,y4, ls, &trough, &peak);
+
+ start = (int) ceil(trough / M_SQRT3_2);
+ stop = (int) floor(peak / M_SQRT3_2);
+
+ for (y = start; y <= stop; ++y) {
+ yval = y * M_SQRT3_2;
+ find_bounds(yval, &left, &right, ls, nls);
+ for (x = (int) ceil(left*2-1); x <= (int) floor(right*2); ++x)
+ triles_set_visible(cberg, &(cberg->trile_head), x, y);
+ }
+}
+
+
+/***************************
+ ** color schemes
+ ** */
+
+static void plain_land(cberg_state *cberg, double z)
+{ glColor3f(pow((z/0.35),4), z/0.35, pow((z/0.35),4)); }
+static void plain_water(cberg_state *cberg, double z)
+{ glColor3f(0.0, (z+0.35)*1.6, 0.8); }
+
+static void ice_land(cberg_state *cberg, double z)
+{ glColor3f((0.35 - z)/0.35, (0.35 - z)/0.35, 1.0); }
+static void ice_water(cberg_state *cberg, double z)
+{ glColor3f(0.0, (z+0.35)*1.6, 0.8); }
+
+
+static void magma_land(cberg_state *cberg, double z)
+{ glColor3f(z/0.35, z/0.2,0); }
+static void magma_lava(cberg_state *cberg, double z)
+{ glColor3f((z+0.35)*1.6, (z+0.35), 0.0); }
+
+static void vomit_solid(cberg_state *cberg, double z)
+{
+ double norm = fabs(z) / 0.35;
+ glColor3f(
+ (1-norm) * cberg->vs0r + norm * cberg->vs1r,
+ (1-norm) * cberg->vs0g + norm * cberg->vs1g,
+ (1-norm) * cberg->vs0b + norm * cberg->vs1b
+ );
+}
+static void vomit_fluid(cberg_state *cberg, double z)
+{
+ double norm = z / -0.35;
+ glColor3f(
+ (1-norm) * cberg->vf0r + norm * cberg->vf1r,
+ (1-norm) * cberg->vf0g + norm * cberg->vf1g,
+ (1-norm) * cberg->vf0b + norm * cberg->vf1b
+ );
+}
+
+
+static const Color colors[] = {
+ {"plain", plain_land, plain_water, {0.0, 0.0, 0.0, 1.0}},
+ {"ice", ice_land, ice_water, {0.0, 0.0, 0.0, 1.0}},
+ {"magma", magma_land, magma_lava, {0.3, 0.3, 0.0, 1.0}},
+ {"vomit", vomit_solid, vomit_fluid, {0.3, 0.3, 0.0, 1.0}}, /* no error! */
+};
+
+static const Color *select_color(cberg_state *cberg)
+{
+ unsigned int ncolors = countof(colors);
+ int idx = -1;
+ if ( ! strcmp(color, "random") )
+ idx = random() % ncolors;
+ else {
+ unsigned int i;
+ for (i = 0; i != ncolors; ++i)
+ if ( ! strcmp(colors[i].id, color) ) {
+ idx = i;
+ break;
+ }
+
+ if (idx == -1) {
+ printf("invalid color scheme selected; valid choices are:\n");
+ for (i = 0; i != ncolors; ++i)
+ printf("\t%s\n", colors[i].id);
+ printf("\t%s\n", "random");
+ idx = 0;
+ }
+ }
+
+ if ( ! strcmp(colors[idx].id, "vomit") ) { /* need to create it (ghetto) */
+ cberg->vs0r = random()/(double)RAND_MAX;
+ cberg->vs0g = random()/(double)RAND_MAX;
+ cberg->vs0b = random()/(double)RAND_MAX;
+ cberg->vs1r = random()/(double)RAND_MAX;
+ cberg->vs1g = random()/(double)RAND_MAX;
+ cberg->vs1b = random()/(double)RAND_MAX;
+ cberg->vf0r = random()/(double)RAND_MAX;
+ cberg->vf0g = random()/(double)RAND_MAX;
+ cberg->vf0b = random()/(double)RAND_MAX;
+ cberg->vf1r = random()/(double)RAND_MAX;
+ cberg->vf1g = random()/(double)RAND_MAX;
+ cberg->vf1b = random()/(double)RAND_MAX;
+
+ glClearColor(random()/(double)RAND_MAX,
+ random()/(double)RAND_MAX,
+ random()/(double)RAND_MAX,
+ 1.0);
+ } else {
+ glClearColor(colors[idx].bg[0],
+ colors[idx].bg[1],
+ colors[idx].bg[2],
+ colors[idx].bg[3]);
+ }
+ return colors + idx;
+}
+
+
+/***************************
+ ** misc helper functions
+ ** */
+
+
+/* simple one for now.. */
+static inline double drunken_rando(double cur_val, double max, double width)
+{
+ double r = random() / (double) RAND_MAX * 2;
+ if (cur_val > 0)
+ if (r >= 1)
+ return cur_val + (r-1) * width * (1-cur_val/max);
+ else
+ return cur_val - r * width;
+ else
+ if (r >= 1)
+ return cur_val - (r-1) * width * (1+cur_val/max);
+ else
+ return cur_val + r * width;
+}
+
+
+/***************************
+ ** core crackberg routines
+ ** */
+
+ENTRYPOINT void reshape_crackberg (ModeInfo *mi, int w, int h);
+
+ENTRYPOINT void init_crackberg (ModeInfo *mi)
+{
+ cberg_state *cberg;
+
+ nsubdivs %= 16; /* just in case.. */
+
+ MI_INIT(mi, cbergs);
+
+ if (visibility > 1.0 || visibility < 0.2) {
+ printf("visibility must be in range [0.2 .. 1.0]\n");
+ visibility = 1.0;
+ }
+
+ cberg = &cbergs[MI_SCREEN(mi)];
+
+ cberg->epoints = 1 + (1 << nsubdivs);
+ cberg->tpoints = cberg->epoints * (cberg->epoints + 1) / 2;
+ cberg->ntris = (1 << (nsubdivs << 1));
+ cberg->tnorms = ( (flat) ? cberg->ntris : cberg->tpoints);
+ cberg->dx0 = 1.0 / (1 << nsubdivs);
+
+ cberg->heights = malloc(cberg->tpoints * sizeof(double));
+ cberg->norms = malloc(3 * cberg->tnorms * sizeof(double));
+
+ cberg->glx_context = init_GL(mi);
+ cberg->motion_state = MOTION_AUTO;
+ cberg->mspeed = 1.0;
+ cberg->z = 0.5;
+
+ cberg->fovy = 60.0;
+ cberg->zNear = 0.5;
+ cberg->zFar = 5.0;
+
+ cberg->draw_elapsed = 1.0;
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glShadeModel((flat) ? GL_FLAT : GL_SMOOTH);
+# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
+ glPolygonMode(GL_FRONT_AND_BACK, (MI_IS_WIREFRAME(mi)) ? GL_LINE : GL_FILL);
+# endif
+
+ if (lit) {
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_COLOR_MATERIAL);
+ glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
+ glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_RESCALE_NORMAL);
+ }
+
+ cberg->color = select_color(cberg);
+
+ reshape_crackberg(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+}
+
+ENTRYPOINT void reshape_crackberg (ModeInfo *mi, int w, int h)
+{
+ int h2;
+ cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
+
+ if (letterbox && (h2 = w * 9 / 16) < h) {
+ glViewport(0, (h-h2)/2, w, h2);
+ cberg->aspect = w/(double)h2;
+ } else {
+ glViewport (0, 0, w, h);
+ cberg->aspect = w/(double)h;
+ }
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(cberg->fovy, cberg->aspect, cberg->zNear, cberg->zFar);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+ENTRYPOINT Bool crackberg_handle_event (ModeInfo *mi, XEvent *ev)
+{
+ cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
+ KeySym keysym = 0;
+ char c = 0;
+ if (ev->xany.type == KeyPress || ev->xany.type == KeyRelease)
+ XLookupString (&ev->xkey, &c, 1, &keysym, 0);
+
+ if (ev->xany.type == KeyPress) {
+ switch (keysym) {
+ case XK_Left: cberg->motion_state |= MOTION_LROT; break;
+ case XK_Prior: cberg->motion_state |= MOTION_LROT; break;
+ case XK_Right: cberg->motion_state |= MOTION_RROT; break;
+ case XK_Next: cberg->motion_state |= MOTION_RROT; break;
+ case XK_Down: cberg->motion_state |= MOTION_BACK; break;
+ case XK_Up: cberg->motion_state |= MOTION_FORW; break;
+ case '1': cberg->motion_state |= MOTION_DEC; break;
+ case '2': cberg->motion_state |= MOTION_INC; break;
+ case 'a': cberg->motion_state |= MOTION_LEFT; break;
+ case 'd': cberg->motion_state |= MOTION_RIGHT; break;
+ case 's': cberg->motion_state |= MOTION_BACK; break;
+ case 'w': cberg->motion_state |= MOTION_FORW; break;
+ default: return False;
+ }
+ cberg->motion_state |= MOTION_MANUAL;
+ } else if (ev->xany.type == KeyRelease) {
+#if 0
+ XEvent peek_ev;
+ if (XPending(mi->dpy)) {
+ XPeekEvent(mi->dpy, &peek_ev);
+ if (peek_ev.type == KeyPress
+ && peek_ev.xkey.keycode == ev->xkey.keycode
+ && peek_ev.xkey.time - ev->xkey.time < 2) {
+ XNextEvent(mi->dpy, &peek_ev); /* drop bullshit repeat events */
+ return False;
+ }
+ }
+#endif
+
+ switch (keysym) {
+ case XK_Left: cberg->motion_state &= ~MOTION_LROT; break;
+ case XK_Prior: cberg->motion_state &= ~MOTION_LROT; break;
+ case XK_Right: cberg->motion_state &= ~MOTION_RROT; break;
+ case XK_Next: cberg->motion_state &= ~MOTION_RROT; break;
+ case XK_Down: cberg->motion_state &= ~MOTION_BACK; break;
+ case XK_Up: cberg->motion_state &= ~MOTION_FORW; break;
+ case '1': cberg->motion_state &= ~MOTION_DEC; break;
+ case '2': cberg->motion_state &= ~MOTION_INC; break;
+ case 'a': cberg->motion_state &= ~MOTION_LEFT; break;
+ case 'd': cberg->motion_state &= ~MOTION_RIGHT; break;
+ case 's': cberg->motion_state &= ~MOTION_BACK; break;
+ case 'w': cberg->motion_state &= ~MOTION_FORW; break;
+ case ' ':
+ if (cberg->motion_state == MOTION_MANUAL)
+ cberg->motion_state = MOTION_AUTO;
+ break;
+ default: return False;
+ }
+ } else if (ev->xany.type == ButtonPress &&
+ ev->xbutton.button == Button1) {
+ cberg->button_down_p = True;
+ cberg->mouse_x = ev->xbutton.x;
+ cberg->mouse_y = ev->xbutton.y;
+ cberg->motion_state = MOTION_MANUAL;
+ cberg->paused.tv_sec = 0;
+ } else if (ev->xany.type == ButtonRelease &&
+ ev->xbutton.button == Button1) {
+ cberg->button_down_p = False;
+ cberg->motion_state = MOTION_AUTO;
+ /* After mouse-up, don't go back into auto-motion mode for a second, so
+ that repeated click-and-drag gestures don't fight with auto-motion. */
+ gettimeofday(&cberg->paused, NULL);
+ } else if (ev->xany.type == MotionNotify &&
+ cberg->button_down_p) {
+ int dx = ev->xmotion.x - cberg->mouse_x;
+ int dy = ev->xmotion.y - cberg->mouse_y;
+ cberg->mouse_x = ev->xmotion.x;
+ cberg->mouse_y = ev->xmotion.y;
+ cberg->motion_state = MOTION_MANUAL;
+
+ /* Take the larger dimension, since motion_state doesn't scale */
+ if (dx > 0 && dx > dy) dy = 0;
+ if (dx < 0 && dx < dy) dy = 0;
+ if (dy > 0 && dy > dx) dx = 0;
+ if (dy < 0 && dy < dx) dx = 0;
+
+ {
+ int rot = current_device_rotation();
+ int swap;
+ while (rot <= -180) rot += 360;
+ while (rot > 180) rot -= 360;
+ if (rot > 135 || rot < -135) /* 180 */
+ dx = -dx, dy = -dy;
+ else if (rot > 45) /* 90 */
+ swap = dx, dx = -dy, dy = swap;
+ else if (rot < -45) /* 270 */
+ swap = dx, dx = dy, dy = -swap;
+ }
+
+ if (dx > 0) cberg->motion_state |= MOTION_LEFT;
+ else if (dx < 0) cberg->motion_state |= MOTION_RIGHT;
+ else if (dy > 0) cberg->motion_state |= MOTION_FORW;
+ else if (dy < 0) cberg->motion_state |= MOTION_BACK;
+ } else
+ return False;
+ return True;
+}
+
+ENTRYPOINT void draw_crackberg (ModeInfo *mi)
+{
+ cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
+ struct timeval cur_frame_t;
+ double cur_frame;
+ static const float lpos[] = {2.0,0.0,-0.3,0.0};
+
+ if (!cberg->glx_context) /*XXX does this get externally tweaked? it kinda*/
+ return; /*XXX can't.. check it in crackberg_init*/
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cberg->glx_context));
+
+ gettimeofday(&cur_frame_t, NULL);
+ cur_frame = cur_frame_t.tv_sec + cur_frame_t.tv_usec / 1.0E6;
+ if ( cberg->prev_frame ) { /*not first run */
+
+ cberg->elapsed = cur_frame - cberg->prev_frame;
+
+ if (cberg->motion_state == MOTION_AUTO &&
+ cberg->paused.tv_sec < cur_frame_t.tv_sec) {
+ cberg->x += cberg->dx * cberg->elapsed;
+ cberg->y += cberg->dy * cberg->elapsed;
+ /* cberg->z */
+ /* cberg->pitch */
+ /* cberg->roll */
+ cberg->yaw += cberg->dyaw * cberg->elapsed;
+
+ cberg->draw_elapsed += cberg->elapsed;
+ if (cberg->draw_elapsed >= 0.8) {
+ cberg->draw_elapsed = 0.0;
+ cberg->dx = drunken_rando(cberg->dx, 2.5, 0.8);
+ cberg->dy = drunken_rando(cberg->dy, 2.5, 0.8);
+ /* cberg->dz */
+ /* cberg->dpitch */
+ /* cberg->droll */
+ cberg->dyaw = drunken_rando(cberg->dyaw, 40.0, 8.0);
+ }
+ } else {
+ double scale = cberg->elapsed * cberg->mspeed;
+ if (cberg->motion_state & MOTION_BACK) {
+ cberg->x -= cos(cberg->yaw * M_PI_180) * scale;
+ cberg->y -= sin(cberg->yaw * M_PI_180) * scale;
+ }
+ if (cberg->motion_state & MOTION_FORW) {
+ cberg->x += cos(cberg->yaw * M_PI_180) * scale;
+ cberg->y += sin(cberg->yaw * M_PI_180) * scale;
+ }
+
+ if (cberg->motion_state & MOTION_LEFT) {
+ cberg->x -= sin(cberg->yaw * M_PI_180) * scale;
+ cberg->y += cos(cberg->yaw * M_PI_180) * scale;
+ }
+ if (cberg->motion_state & MOTION_RIGHT) {
+ cberg->x += sin(cberg->yaw * M_PI_180) * scale;
+ cberg->y -= cos(cberg->yaw * M_PI_180) * scale;
+ }
+
+ if (cberg->motion_state & MOTION_LROT)
+ cberg->yaw += 45 * scale;
+ if (cberg->motion_state & MOTION_RROT)
+ cberg->yaw -= 45 * scale;
+
+ if (cberg->motion_state & MOTION_DEC)
+ cberg->mspeed /= pow(MSPEED_SCALE, cberg->draw_elapsed);
+ if (cberg->motion_state & MOTION_INC)
+ cberg->mspeed *= pow(MSPEED_SCALE, cberg->draw_elapsed);
+
+ }
+ }
+ cberg->prev_frame = cur_frame;
+
+ mark_visible(cberg);
+ triles_update_state(&(cberg->trile_head), cberg);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ gluLookAt(0,0,0, 1,0,0, 0,0,1);
+ glLightfv(GL_LIGHT0, GL_POSITION, lpos);
+ /*glRotated(cberg->roll, 1,0,0); / * XXX blah broken and unused for now..* /
+ glRotated(cberg->pitch, 0,1,0); */
+ glRotated(-cberg->yaw, 0,0,1); /* camera sees ->yaw over */
+ glTranslated(-cberg->x, -cberg->y, -cberg->z);
+
+ mi->polygon_count = cberg->ntris *
+ triles_foreach(cberg->trile_head, trile_draw,(void *) cberg);
+
+ if (mi->fps_p)
+ do_fps(mi);
+
+#ifdef DEBUG
+ glBegin(GL_LINES);
+ glColor3f(1.0,0.0,0.0);
+ glVertex3d(x_shit, y_shit, 0.0);
+ glVertex3d(x_shit, y_shit, 1.0);
+ glEnd();
+#endif
+
+ glFinish();
+ glXSwapBuffers(MI_DISPLAY(mi), MI_WINDOW(mi));
+}
+
+/* uh */
+ENTRYPOINT void free_crackberg (ModeInfo *mi)
+{
+ cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
+ if (cberg->norms)
+ free(cberg->norms);
+ free(cberg->heights);
+}
+
+XSCREENSAVER_MODULE ("Crackberg", crackberg)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/crackberg.man b/hacks/glx/crackberg.man
new file mode 100644
index 0000000..5183baa
--- /dev/null
+++ b/hacks/glx/crackberg.man
@@ -0,0 +1,123 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+crackberg - Lose your way wandering some height fields, and enjoy candy.
+.SH SYNOPSIS
+.B crackberg
+[\-root]
+[\-window]
+[\-install]
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window-id \fIid\fP]
+[\-delay \fIusecs\fP]
+[\-fps]
+[\-crack]
+[\-lit]
+[\-boring]
+[\-letterbox]
+[\-flat]
+[\-wire]
+[\-nowater]
+[\-visibility \fIfloat\fP]
+[\-color \fIstring\fP]
+[\-nsubdivs \fIinteger\fP]
+.SH DESCRIPTION
+Flies through height maps, optionally animating the instantiation and
+destruction of generated tiles; by default, tiles 'grow' into place (height
+gradually increased up to correct value). In windowed mode the following key
+controls are available:
+.TP 8
+.B left, right
+Turn left and right.
+.TP 8
+.B a,w,s,d
+Move left, forwards, backwards, and to the right, respectively.
+.TP 8
+.B 1,2
+Decrease and increase manual speed, respectively.
+.TP 8
+.B Spacebar
+Return to automatic control.
+.SH OPTIONS
+.I crackberg
+accepts the following options:
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual
+class, or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fImicroseconds\fP
+Delay between frames; default 20000 (1/50th of a second).
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-crack
+Use all possible methods to animate tile instantiation.
+.TP 8
+.B \-boring
+Do not animate instatiation at all; use this to get standard landscape
+generator behavior.
+.TP 8
+.B \-letterbox
+Drawable window region has a 16:9 aspect ratio, regardless of actual
+window size.
+.TP 8
+.B \-lit
+Enable lighting.
+.TP 8
+.B \-flat
+Flat shading (OpenGL will use one color per primitive, rather than
+interpolating betwixt vertices).
+.TP 8
+.B \-wire
+Wireframe.
+.TP 8
+.B \-nowater
+Do not display 'water' (forces negative values to zero, and selects a
+different coloring method).
+.TP 8
+.B \-visibility \fIfloat\fP
+Value in range [0.2,1.0] (default 0.6) specifying proportion of viewable
+XY plane which is to be drawn upon.
+.TP 8
+.B \-color \fIstring\fP
+Selects color scheme. Use with no or bogus argument for current list.
+.TP 8
+.B \-nsubdivs \fIinteger\fP
+Number of times to recursively subdivide each triangular tile. Each
+increment increases total triangles by a factor of 4; for instance the default
+setting 4 results in 256 triangles per tile.
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Matus Telgarsky. Permission to use, copy,
+modify, distribute, and sell this software and its documentation for
+any purpose is hereby granted without fee, provided that the above
+copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation.
+No representations are made about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+.SH AUTHOR
+Matus Telgarsky , 2005.
diff --git a/hacks/glx/crumbler.c b/hacks/glx/crumbler.c
new file mode 100644
index 0000000..8e783db
--- /dev/null
+++ b/hacks/glx/crumbler.c
@@ -0,0 +1,875 @@
+/* crumbler, Copyright (c) 2018 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define release_crumbler 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "rotator.h"
+#include "quickhull.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "True"
+#define DEF_WANDER "True"
+#define DEF_SPEED "1.0"
+#define DEF_DENSITY "1.0"
+#define DEF_FRACTURE "0"
+
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+typedef struct {
+ qh_vertex_t *verts; /* interior point cloud */
+ int nverts, onverts;
+ qh_vertex_t min, max; /* enclosing box */
+ qh_vertex_t mid, vec;
+ int polygon_count;
+ GLuint dlist;
+ int color;
+ int color_shift;
+} chunk;
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ enum { IDLE, SPLIT, PAUSE, FLEE, ZOOM } state;
+ GLfloat tick;
+ Bool button_down_p;
+ int nchunks;
+ chunk **chunks;
+ chunk *ghost;
+
+ int ncolors;
+ XColor *colors;
+} crumbler_configuration;
+
+static crumbler_configuration *bps = NULL;
+
+static Bool do_spin;
+static GLfloat speed;
+static GLfloat density;
+static int fracture;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-density", ".density", XrmoptionSepArg, 0 },
+ { "-fracture",".fracture",XrmoptionSepArg, 0 },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" }
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&density, "density", "Density", DEF_DENSITY, t_Float},
+ {&fracture, "fracture","Fracture",DEF_FRACTURE,t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt crumbler_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Create a roughly spherical cloud of N random points.
+ */
+static void
+make_point_cloud (qh_vertex_t *verts, int nverts)
+{
+ int i = 0;
+ while (i < nverts)
+ {
+ verts[i].x = (0.5 - frand(1.0));
+ verts[i].y = (0.5 - frand(1.0));
+ verts[i].z = (0.5 - frand(1.0));
+ if ((verts[i].x * verts[i].x +
+ verts[i].y * verts[i].y +
+ verts[i].z * verts[i].z)
+ < 0.25)
+ i++;
+ }
+}
+
+
+static chunk *
+make_chunk (void)
+{
+ chunk *c = (chunk *) calloc (1, sizeof(*c));
+ c->dlist = glGenLists (1);
+ c->color_shift = 1 + (random() % 3) * RANDSIGN();
+ return c;
+}
+
+static void
+render_chunk (ModeInfo *mi, chunk *c)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ int i, j;
+ qh_mesh_t m;
+ GLfloat d;
+
+ if (c->nverts <= 3)
+ {
+ fprintf (stderr, "%s: nverts %d\n", progname, c->nverts);
+ abort();
+ }
+
+ c->polygon_count = 0;
+ c->min.x = c->min.y = c->min.z = 999999;
+ c->max.x = c->max.y = c->max.z = -999999;
+
+ for (i = 0; i < c->nverts; i++)
+ {
+ if (c->verts[i].x < c->min.x) c->min.x = c->verts[i].x;
+ if (c->verts[i].y < c->min.y) c->min.y = c->verts[i].y;
+ if (c->verts[i].z < c->min.z) c->min.z = c->verts[i].z;
+ if (c->verts[i].x > c->max.x) c->max.x = c->verts[i].x;
+ if (c->verts[i].y > c->max.y) c->max.y = c->verts[i].y;
+ if (c->verts[i].z > c->max.z) c->max.z = c->verts[i].z;
+ }
+
+ c->mid.x = (c->max.x + c->min.x) / 2;
+ c->mid.y = (c->max.y + c->min.y) / 2;
+ c->mid.z = (c->max.z + c->min.z) / 2;
+
+ /* midpoint as normalized vector from origin */
+ d = sqrt (c->mid.x * c->mid.x +
+ c->mid.y * c->mid.y +
+ c->mid.z * c->mid.z);
+ c->vec.x = c->mid.x / d;
+ c->vec.y = c->mid.y / d;
+ c->vec.z = c->mid.z / d;
+
+ if (c->nverts <= 3)
+ {
+ fprintf (stderr, "%s: nverts %d\n", progname, c->nverts);
+ abort();
+ }
+
+ m = qh_quickhull3d (c->verts, c->nverts);
+
+ glNewList (c->dlist, GL_COMPILE);
+ if (! wire) glBegin (GL_TRIANGLES);
+ for (i = 0, j = 0; i < m.nindices; i += 3, j++)
+ {
+ qh_vertex_t *v0 = &m.vertices[m.indices[i+0]];
+ qh_vertex_t *v1 = &m.vertices[m.indices[i+1]];
+ qh_vertex_t *v2 = &m.vertices[m.indices[i+2]];
+ qh_vec3_t *n = &m.normals[m.normalindices[j]];
+
+ if (i+2 >= m.nindices) abort();
+ if (j >= m.nnormals) abort();
+
+ glNormal3f (n->x, n->y, n->z);
+ if (wire) glBegin(GL_LINE_LOOP);
+ glVertex3f (v0->x, v0->y, v0->z);
+ glVertex3f (v1->x, v1->y, v1->z);
+ glVertex3f (v2->x, v2->y, v2->z);
+ if (wire) glEnd();
+ c->polygon_count++;
+ }
+ if (! wire) glEnd();
+
+ if (wire)
+ {
+ glPointSize (1);
+ glColor3f (0, 1, 0);
+ glBegin (GL_POINTS);
+ for (i = 0; i < c->nverts; i++)
+ {
+ if (i > 0 && i == c->onverts)
+ {
+ glEnd();
+ glColor3f (1, 0, 0);
+ glBegin (GL_POINTS);
+ }
+ glVertex3f (c->verts[i].x, c->verts[i].y, c->verts[i].z);
+ }
+ glEnd();
+ }
+
+ glEndList();
+
+ qh_free_mesh (m);
+}
+
+
+static void
+free_chunk (chunk *c)
+{
+ if (c->dlist)
+ glDeleteLists (c->dlist, 1);
+ free (c->verts);
+ free (c);
+}
+
+
+/* Make sure the chunk contains at least N points.
+ As we subdivide, the number of points is reduced.
+ This adds new points to the interior that do not
+ affect the shape of the outer hull.
+ */
+static void
+pad_chunk (chunk *c, int min)
+{
+ /* Allocate a new array of size N
+ Copy the old points into it
+ while size < N
+ pick two random points
+ add a point that is somewhere along the line between them
+ (that point will still be inside the old hull)
+ */
+ qh_vertex_t *verts;
+ int i;
+ if (c->nverts >= min) return;
+ if (c->nverts <= 3) abort();
+ verts = (qh_vertex_t *) calloc (min, sizeof(*verts));
+ if (!verts) abort();
+ memcpy (verts, c->verts, c->nverts * sizeof(*verts));
+ i = c->nverts;
+ while (i < min)
+ {
+ qh_vertex_t v;
+ int j0, j1;
+ GLfloat r;
+ j0 = random() % c->nverts;
+ do {
+ j1 = random() % c->nverts;
+ } while (j0 == j1);
+
+ r = 0.2 + frand(0.6);
+# undef R
+# define R(F) v.F = c->verts[j0].F + \
+ r * (fabs (c->verts[j1].F - c->verts[j0].F)) \
+ * (c->verts[j0].F > c->verts[j1].F ? -1 : 1)
+ R(x);
+ R(y);
+ R(z);
+# undef R
+
+ /* Sometimes quickhull.c is giving us concave and un-closed polygons.
+ Maybe it gets confused if there are duplicate points? So reject
+ this point if it is within epsilon of any earlier point.
+ */
+# if 0 /* Nope, that's not it. */
+ {
+ Bool ok = True;
+ int j;
+ for (j = 0; j < i; j++)
+ {
+
+ double X = c->verts[j].x - v.x;
+ double Y = c->verts[j].y - v.y;
+ double Z = c->verts[j].z - v.z;
+ double d2 = X*X + Y*Y + Z*Z;
+ if (d2 < 0.0001)
+ {
+ /* fprintf (stderr, "## REJ %f\n",d2); */
+ ok = False;
+ break;
+ }
+ }
+ if (! ok) continue;
+ }
+# endif
+
+ verts[i++] = v;
+ }
+
+#if 0
+ fprintf (stdout, " int n = %d;\n", min);
+ fprintf (stdout, " qh_vertex_t v[] = {");
+ for (i = 0; i < min; i++)
+ fprintf(stdout,"{%f,%f,%f},", verts[i].x, verts[i].y, verts[i].z);
+ fprintf (stdout, "};\n\n");
+#endif
+
+ free (c->verts);
+ c->verts = verts;
+ c->onverts = c->nverts;
+ c->nverts = min;
+
+#if 0
+ qh_vertex_t *verts2 = (qh_vertex_t *) calloc (n, sizeof(*verts2));
+ memcpy (verts2, v, n * sizeof(*verts2));
+ free (c->verts);
+ c->verts = verts2;
+ c->onverts = 0;
+ c->nverts = n;
+#endif
+}
+
+
+/* Returns a list of N new chunks.
+ */
+static chunk **
+split_chunk (ModeInfo *mi, chunk *c, int nchunks)
+{
+ /* Pick N key-points from the cloud.
+ Create N new chunks.
+ For each old point:
+ It goes in chunk N if it is closest to key-point N.
+ Free old chunk.
+ for each new chunk
+ render_chunk
+ */
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+ chunk **chunks;
+ int *keys;
+ int i, j;
+ int retries = 0;
+
+ RETRY:
+ chunks = (chunk **) calloc (nchunks, sizeof(*chunks));
+ keys = (int *) calloc (nchunks, sizeof(*keys));
+
+ for (i = 0; i < nchunks; i++)
+ {
+ /* Fill keys with random numbers that are not duplicates. */
+ Bool ok = True;
+ chunk *c2 = 0;
+ if (nchunks >= c->nverts)
+ {
+ fprintf (stderr, "%s: nverts %d nchunks %d\n", progname,
+ c->nverts, nchunks);
+ abort();
+ }
+ do {
+ keys[i] = random() % c->nverts;
+ ok = True;
+ for (j = 0; j < i; j++)
+ if (keys[i] == keys[j])
+ {
+ ok = False;
+ break;
+ }
+ } while (!ok);
+
+ c2 = make_chunk();
+ chunks[i] = c2;
+ chunks[i]->nverts = 0;
+ c2->verts = (qh_vertex_t *) calloc (c->nverts, sizeof(*c2->verts));
+ c2->color = (c->color + (random() % (1 + (bp->ncolors / 3))))
+ % bp->ncolors;
+ }
+
+ /* Add the verts to the approprate chunks
+ */
+ for (i = 0; i < c->nverts; i++)
+ {
+ qh_vertex_t *v0 = &c->verts[i];
+ int target_chunk = -1;
+ double target_d2 = 9999999;
+ chunk *c2 = 0;
+
+ for (j = 0; j < nchunks; j++)
+ {
+ qh_vertex_t *v1 = &c->verts[keys[j]];
+ double X = v1->x - v0->x;
+ double Y = v1->y - v0->y;
+ double Z = v1->z - v0->z;
+ double d2 = X*X + Y*Y + Z*Z;
+ if (d2 < target_d2)
+ {
+ target_d2 = d2;
+ target_chunk = j;
+ }
+ }
+ if (target_chunk == -1) abort();
+
+ c2 = chunks[target_chunk];
+ c2->verts[c2->nverts++] = *v0;
+ if (c2->nverts > c->nverts) abort();
+ }
+
+ free (keys);
+ keys = 0;
+
+ for (i = 0; i < nchunks; i++)
+ {
+ chunk *c2 = chunks[i];
+
+ /* It is possible that the keys we have chosen have resulted in one or
+ more cells that have 3 or fewer points in them. If that's the case,
+ re-randomize.
+ */
+ if (c2->nverts <= 3)
+ {
+ for (j = 0; j < nchunks; j++)
+ free_chunk (chunks[j]);
+ free (chunks);
+ chunks = 0;
+ if (retries++ > 100)
+ {
+ fprintf(stderr, "%s: unsplittable\n", progname);
+ abort();
+ }
+ goto RETRY;
+ }
+
+ if (i == 0) /* The one we're gonna keep */
+ pad_chunk (c2, c->nverts);
+ render_chunk (mi, c2);
+ }
+
+ return chunks;
+}
+
+
+static void
+tick_crumbler (ModeInfo *mi)
+{
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat ts;
+
+ if (bp->button_down_p) return;
+
+ switch (bp->state) {
+ case IDLE: ts = 0.02; break;
+ case SPLIT: ts = 0.01; break;
+ case PAUSE: ts = 0.008; break;
+ case FLEE: ts = 0.005; break;
+ case ZOOM: ts = 0.03; break;
+ default: abort(); break;
+ }
+
+ bp->tick += ts * speed;
+
+ if (bp->tick < 1) return;
+
+ bp->tick = 0;
+ bp->state = (bp->state + 1) % (ZOOM + 1);
+
+ switch (bp->state) {
+ case IDLE:
+ {
+ chunk *c = bp->chunks[0];
+ int i;
+
+ /* We already animated it zooming to full size. Now make it real. */
+ GLfloat X = (c->max.x - c->min.x);
+ GLfloat Y = (c->max.y - c->min.y);
+ GLfloat Z = (c->max.z - c->min.z);
+ GLfloat s = 1 / MAX(X, MAX(Y, Z));
+
+ for (i = 0; i < c->nverts; i++)
+ {
+ c->verts[i].x *= s;
+ c->verts[i].y *= s;
+ c->verts[i].z *= s;
+ }
+
+ /* Re-render it to move the verts in the display list too.
+ This also recomputes min, max and mid.
+ */
+ render_chunk (mi, c);
+ break;
+ }
+
+ case SPLIT:
+ {
+ chunk *c = bp->chunks[0];
+ int frac = (fracture >= 2 ? fracture : 2 + (2 * (random() % 5)));
+ chunk **chunks = split_chunk (mi, c, frac);
+ if (bp->nchunks != 1) abort();
+ if (bp->ghost) abort();
+ bp->ghost = c;
+ free (bp->chunks);
+ bp->chunks = chunks;
+ bp->nchunks = frac;
+ break;
+ }
+
+ case PAUSE:
+ break;
+
+ case FLEE:
+ if (bp->ghost) free_chunk (bp->ghost);
+ bp->ghost = 0;
+ break;
+
+ case ZOOM:
+ {
+ chunk *c = bp->chunks[0];
+ int i;
+ for (i = 1; i < bp->nchunks; i++)
+ free_chunk (bp->chunks[i]);
+ bp->nchunks = 1;
+
+ /* We already animated the remaining chunk moving toward the origin.
+ Make it real.
+ */
+ for (i = 0; i < c->nverts; i++)
+ {
+ c->verts[i].x -= c->mid.x;
+ c->verts[i].y -= c->mid.y;
+ c->verts[i].z -= c->mid.z;
+ }
+
+ /* Re-render it to move the verts in the display list too.
+ This also recomputes min, max and mid (now 0).
+ */
+ render_chunk (mi, c);
+ break;
+ }
+
+ default: abort(); break;
+ }
+}
+
+
+static GLfloat
+ease_fn (GLfloat r)
+{
+ return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
+
+
+static GLfloat
+ease_ratio (GLfloat r)
+{
+ GLfloat ease = 0.35;
+ if (r <= 0) return 0;
+ else if (r >= 1) return 1;
+ else if (r <= ease) return ease * ease_fn (r / ease);
+ else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+ else return r;
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_crumbler (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+crumbler_handle_event (ModeInfo *mi, XEvent *event)
+{
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_crumbler (ModeInfo *mi)
+{
+ crumbler_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+
+ MI_INIT (mi, bps);
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_crumbler (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0};
+ GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ {
+ double spin_speed = 0.5 * speed;
+ double spin_accel = 0.3;
+ double wander_speed = 0.01 * speed;
+
+ bp->rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ True);
+ bp->trackball = gltrackball_init (True);
+ }
+
+ bp->ncolors = 1024;
+ bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor));
+ make_smooth_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+
+ /* brighter colors, please... */
+ for (i = 0; i < bp->ncolors; i++)
+ {
+# undef R
+# define R(F) F = 65535 * (0.3 + 0.7 * ((F) / 65535.0))
+ R (bp->colors[i].red);
+ R (bp->colors[i].green);
+ R (bp->colors[i].blue);
+# undef R
+ }
+
+# ifdef HAVE_MOBILE
+# ifdef USE_IPHONE
+ density *= 0.5; /* iPhone 6s runs out of memory at 4500 nverts. */
+# else
+ density *= 0.3; /* Android Nexus_5_8.1 emulator runs out earlier. */
+# endif
+# endif
+
+ {
+ chunk *c;
+ bp->nchunks = 1;
+ bp->chunks = (chunk **) calloc (bp->nchunks, sizeof(*bp->chunks));
+ c = make_chunk();
+ bp->chunks[0] = c;
+ c->nverts = 4500 * density;
+ c->verts = (qh_vertex_t *) calloc (c->nverts, sizeof(*c->verts));
+ make_point_cloud (c->verts, c->nverts);
+
+ /* Let's shrink it to a point then zoom in. */
+ bp->state = ZOOM;
+ bp->tick = 0;
+ for (i = 0; i < c->nverts; i++)
+ {
+ c->verts[i].x /= 500;
+ c->verts[i].y /= 500;
+ c->verts[i].z /= 500;
+ }
+
+ render_chunk (mi, c);
+ }
+}
+
+
+static void
+draw_chunk (ModeInfo *mi, chunk *c, GLfloat alpha)
+{
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat color[4];
+
+ color[0] = bp->colors[c->color].red / 65536.0;
+ color[1] = bp->colors[c->color].green / 65536.0;
+ color[2] = bp->colors[c->color].blue / 65536.0;
+ color[3] = alpha;
+ glColor4fv (color);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
+
+ c->color += c->color_shift;
+ while (c->color < 0) c->color += bp->ncolors;
+ while (c->color >= bp->ncolors) c->color -= bp->ncolors;
+
+ glCallList (c->dlist);
+ mi->polygon_count += c->polygon_count;
+}
+
+
+ENTRYPOINT void
+draw_crumbler (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ GLfloat alpha = 1;
+ int i;
+
+ static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0};
+ static const GLfloat bshiny = 128.0;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ tick_crumbler (mi);
+
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 8,
+ (y - 0.5) * 8,
+ (z - 0.5) * 15);
+
+ gltrackball_rotate (bp->trackball);
+
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ mi->polygon_count = 0;
+
+ glMaterialfv (GL_FRONT, GL_SPECULAR, bspec);
+ glMateriali (GL_FRONT, GL_SHININESS, bshiny);
+
+ if (do_wander)
+ glScalef (10, 10, 10);
+ else
+ glScalef (13, 13, 13);
+
+ alpha = 1;
+ for (i = 0; i < bp->nchunks; i++)
+ {
+ chunk *c = bp->chunks[i];
+
+ glPushMatrix();
+
+ switch (bp->state) {
+ case FLEE:
+ {
+ GLfloat r = ease_ratio (bp->tick);
+ /* Move everybody toward the origin, so that chunk #0 ends up
+ centered there. */
+ glTranslatef (-r * c->mid.x,
+ -r * c->mid.y,
+ -r * c->mid.z);
+ if (i != 0)
+ {
+ /* Move this chunk away from the center, along a vector from
+ the origin to its midpoint. */
+ GLfloat d2 = r * 6;
+ glTranslatef (c->vec.x * d2, c->vec.y * d2, c->vec.z * d2);
+ alpha = 1 - r;
+ }
+ }
+ break;
+
+ case ZOOM:
+ {
+ chunk *c = bp->chunks[0];
+ GLfloat X = (c->max.x - c->min.x);
+ GLfloat Y = (c->max.y - c->min.y);
+ GLfloat Z = (c->max.z - c->min.z);
+ GLfloat size0 = MAX(X, MAX(Y, Z));
+ GLfloat size1 = 1.0;
+ GLfloat r = 1 - ease_ratio (bp->tick);
+ GLfloat s = 1 / (size0 + r * (size1 - size0));
+ glScalef (s, s, s);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ draw_chunk (mi, c, alpha);
+ glPopMatrix();
+ }
+
+ /* Draw the old one, fading out. */
+ if (!wire && bp->state == SPLIT && bp->ghost)
+ {
+ GLfloat s;
+ /* alpha = 1 - bp->tick; */
+ alpha = 1;
+ /* s = 0.7 + (0.3 * ease_ratio (1-bp->tick)); */
+ s = 2 * ease_ratio ((1-bp->tick) / 2);
+ s *= 1.01;
+ glScalef (s, s, s);
+ draw_chunk (mi, bp->ghost, alpha);
+ }
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+
+ENTRYPOINT void
+free_crumbler (ModeInfo *mi)
+{
+ crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ free (bp->trackball);
+ free (bp->rot);
+ free (bp->colors);
+ for (i = 0; i < bp->nchunks; i++)
+ free_chunk (bp->chunks[i]);
+ free (bp->chunks);
+}
+
+
+XSCREENSAVER_MODULE ("Crumbler", crumbler)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/crumbler.man b/hacks/glx/crumbler.man
new file mode 100644
index 0000000..a608d9d
--- /dev/null
+++ b/hacks/glx/crumbler.man
@@ -0,0 +1,77 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+crumbler - voronoi divisions of a sphere.
+.SH SYNOPSIS
+.B crumbler
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-density \fInumber\fP]
+[\-fracture \fInumber\fP]
+[\-no-wander]
+[\-no-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Randomly subdivides a ball into voronoi chunks, then further subdivides one
+of the remaining pieces.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-density \fInumber\fP
+Density of the polygons mesh. 2.0 means twice as dense, 0.5 means half.
+.TP 8
+.B \-fracture \fInumber\fP
+How many times to fracture each object. 0 means random.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2018 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/cube21.c b/hacks/glx/cube21.c
new file mode 100644
index 0000000..451a523
--- /dev/null
+++ b/hacks/glx/cube21.c
@@ -0,0 +1,941 @@
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Cube 21 - a Rubik-like puzzle. It changes its shape and has more than
+ * 200 configurations. It is known better as Square-1, but it is called
+ * Cube 21 in the Czech republic, where it was invented in 1992.
+ *
+ * This file is derived from cage.c,
+ * "cage --- the Impossible Cage, an Escher like scene",
+ * by Marcelo F. Vienna,
+ * parts from gltext.c by Jamie Zawinski
+ *
+ * Vaclav (Vasek) Potocek
+ * vasek.potocek@post.cz
+ */
+
+/* TODO:
+ * some simple "solve mode"
+ * use rotator
+ */
+
+/*-
+ * Texture mapping is only available on RGBA contexts, Mono and color index
+ * visuals DO NOT support texture mapping in OpenGL.
+ *
+ * BUT Mesa do implements RGBA contexts in pseudo color visuals, so texture
+ * mapping should work on PseudoColor, DirectColor, TrueColor using Mesa. Mono
+ * is not officially supported for both OpenGL and Mesa, but seems to not crash
+ * Mesa.
+ *
+ * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
+ */
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n"
+
+# define free_cube21 0
+# define release_cube21 0
+#include "xlockmore.h"
+
+#include "gltrackball.h"
+
+#ifdef USE_GL
+
+#define DEF_SPIN "True"
+#define DEF_WANDER "True"
+#define DEF_TEXTURE "True"
+#define DEF_RANDOMIZE "True"
+#define DEF_SPINSPEED "1.0"
+#define DEF_ROTSPEED "3.0"
+#define DEF_WANDERSPEED "0.02"
+#define DEF_WAIT "40.0"
+#define DEF_CUBESIZE "0.7"
+#define DEF_COLORMODE "six"
+
+#ifdef Pi
+#undef Pi
+#endif
+#define Pi M_PI
+
+#define SHUFFLE 100
+
+#define COS15 0.9659258263
+#define SIN15 0.2588190451
+#define COS30 0.8660254038
+#define SIN30 0.5000000000
+
+#define TEX_WIDTH 128
+#define TEX_HEIGHT 128
+#define TEX_GRAY 0.7, 0.7
+#define BORDER 3
+#define BORDER2 9
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#define rnd01() (random()%2)
+#define rndcolor() (frand(0.5)+0.3)
+
+/*************************************************************************/
+
+static Bool spin, wander, rndstart, tex;
+static float spinspeed, tspeed, wspeed, twait, size;
+static char *colmode_s;
+static int colmode;
+
+static argtype vars[] = {
+ { &spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ { &wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ { &rndstart, "randomize", "Randomize", DEF_RANDOMIZE, t_Bool},
+ { &tex, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ { &spinspeed, "spinspeed", "SpinSpeed", DEF_SPINSPEED, t_Float},
+ { &tspeed, "rotspeed", "RotSpeed", DEF_ROTSPEED, t_Float},
+ { &wspeed, "wanderspeed", "WanderSpeed", DEF_WANDERSPEED, t_Float},
+ { &twait, "wait", "Wait", DEF_WAIT, t_Float},
+ { &size, "cubesize", "CubeSize", DEF_CUBESIZE, t_Float},
+ { &colmode_s, "colormode", "ColorMode", DEF_COLORMODE, t_String}
+};
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-randomize", ".randomize", XrmoptionNoArg, "True" },
+ { "+randomize", ".randomize", XrmoptionNoArg, "False" },
+ { "-texture", ".texture", XrmoptionNoArg, "True" },
+ { "+texture", ".texture", XrmoptionNoArg, "False" },
+ { "-spinspeed", ".spinspeed", XrmoptionSepArg, 0 },
+ { "-wanderspeed", ".wanderspeed", XrmoptionSepArg, 0 },
+ { "-rotspeed", ".rotspeed", XrmoptionSepArg, 0 },
+ { "-wait", ".wait", XrmoptionSepArg, 0 },
+ { "-cubesize", ".cubesize", XrmoptionSepArg, 0 },
+ { "-colormode", ".colormode", XrmoptionSepArg, 0 }
+};
+
+ENTRYPOINT ModeSpecOpt cube21_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct cube21_description =
+{ "cube21", "init_cube21", "draw_cube21", NULL,
+ "draw_cube21", "change_cube21", NULL, &cube21_opts,
+ 25000, 1, 1, 1, 1.0, 4, "",
+ "Shows randomly shuffling Cube 21", 0, NULL
+};
+#endif
+
+typedef enum {
+ CUBE21_STATE_BASIC,
+ CUBE21_PAUSE1 = CUBE21_STATE_BASIC,
+ CUBE21_ROT_BASE,
+ CUBE21_ROT_TOP = CUBE21_ROT_BASE,
+ CUBE21_ROT_BOTTOM,
+ CUBE21_PAUSE2,
+ CUBE21_HALF_BASE,
+ CUBE21_HALF1 = CUBE21_HALF_BASE,
+ CUBE21_HALF2
+} cube21_state;
+
+typedef enum {
+ CUBE21_COLOR_WHITE,
+ CUBE21_COLOR_RANDOM,
+ CUBE21_COLOR_SILVER,
+ CUBE21_COLOR_TWORND,
+ CUBE21_COLOR_CLASSIC,
+ CUBE21_COLOR_SIXRND
+} cube21_cmode;
+
+typedef int pieces_t[2][13];
+typedef int cind_t[5][12];
+typedef GLfloat col_t[6][3];
+
+typedef struct {
+ GLXContext *glx_context;
+ GLfloat ratio;
+ cube21_state state; /* type of "rotation" - shuffling */
+ GLfloat xrot, yrot; /* "spin" - object rotation around axis */
+ GLfloat posarg; /* position argument (for sine function) */
+ GLfloat t, tmax; /* rotation clock */
+ int hf[2], fr[2]; /* half flipped / face rotated flags */
+ int rface, ramount; /* selected face and amount of rotation in multiplies of 30deg */
+ int pieces[2][13]; /* locations of "narrow" and "wide" pieces */
+ int cind[5][12]; /* color indices */
+ GLfloat colors[6][3]; /* color map */
+
+ Bool wire, cmat;
+ unsigned char texture[TEX_HEIGHT][TEX_WIDTH];
+
+ GLfloat texp, texq, posc[6];
+ GLfloat color_inner[4];
+
+ Bool button_down_p;
+ trackball_state *trackball;
+
+} cube21_conf;
+
+static cube21_conf *cube21 = NULL;
+
+static const GLfloat shininess = 20.0;
+static const GLfloat ambient[] = {0.0, 0.0, 0.0, 1.0};
+static const GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0};
+static const GLfloat position0[] = {1.0, 1.0, 1.0, 0.0};
+static const GLfloat position1[] = {-1.0, -1.0, 1.0, 0.0};
+static const GLfloat lmodel_ambient[] = {0.1, 0.1, 0.1, 1.0};
+static const GLfloat material_ambient[] = {0.7, 0.7, 0.7, 1.0};
+static const GLfloat material_diffuse[] = {0.7, 0.7, 0.7, 1.0};
+static const GLfloat material_specular[] = {0.2, 0.2, 0.2, 1.0};
+static const GLfloat zpos = -18.0;
+
+/*************************************************************************/
+
+static void find_matches(pieces_t pieces, int matches[12], int s)
+{
+ int i, j = 1;
+ for(i = 1; i<6; i++) {
+ if(pieces[s][i] && pieces[s][i+6]) {
+ matches[j++] = i;
+ }
+ }
+ matches[0] = j;
+ for(i = 1; ipieces, matches, s);
+ j = matches[0]-1;
+ j = random()%j;
+ j = matches[j+1];
+ rot_face(cp->pieces, cp->cind, s, j);
+ s = rnd01();
+ rot_halves(cp->pieces, cp->cind, cp->hf, s);
+ }
+}
+
+static void finish(cube21_conf *cp)
+{
+ int j, s;
+ int matches[12];
+ switch(cp->state) {
+ case CUBE21_PAUSE1:
+ s = rnd01();
+ find_matches(cp->pieces, matches, s);
+ j = matches[0]-1;
+ j = random()%j;
+ j = matches[j+1];
+ if(j==6 && rnd01()) j = -6;
+ cp->state = CUBE21_ROT_BASE+s;
+ cp->tmax = 30.0*abs(j);
+ cp->fr[0] = cp->fr[1] = 0;
+ cp->rface = s;
+ cp->ramount = j;
+ break;
+ case CUBE21_ROT_TOP:
+ case CUBE21_ROT_BOTTOM:
+ rot_face(cp->pieces, cp->cind, s = cp->rface, cp->ramount);
+ cp->fr[s] = 1;
+ s ^= 1;
+ if(!cp->fr[s] && rnd01()) {
+ find_matches(cp->pieces, matches, s);
+ j = matches[0]-1;
+ j = random()%j;
+ j = matches[j+1];
+ if(j==6 && rnd01()) j = -6;
+ cp->state = CUBE21_ROT_BASE+s;
+ cp->tmax = 30.0*abs(j);
+ cp->rface = s;
+ cp->ramount = j;
+ break;
+ } else {
+ cp->state = CUBE21_PAUSE2;
+ cp->tmax = twait;
+ break;
+ }
+ case CUBE21_PAUSE2:
+ s = rnd01();
+ cp->ramount = -rnd01(); /* 0 or -1, only sign is significant in this case */
+ cp->state = CUBE21_HALF_BASE+s;
+ cp->tmax = 180.0;
+ cp->rface = s;
+ break;
+ case CUBE21_HALF1:
+ case CUBE21_HALF2:
+ rot_halves(cp->pieces, cp->cind, cp->hf, cp->rface);
+ cp->state = CUBE21_PAUSE1;
+ cp->tmax = twait;
+ break;
+ }
+ cp->t = 0;
+}
+
+static void draw_narrow_piece(ModeInfo *mi, cube21_conf *cp, GLfloat s, int c1, int c2, col_t colors)
+{
+ GLfloat s1 = cp->posc[0]*s;
+ glBegin(GL_TRIANGLES);
+ glNormal3f(0.0, 0.0, s);
+ if(cp->cmat) glColor3fv(colors[c1]);
+ glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s);
+ glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[1], 0.0, s);
+ glTexCoord2f(cp->texp, 0.0); glVertex3f(cp->posc[2], cp->posc[3], s);
+ mi->polygon_count++;
+ glNormal3f(0.0, 0.0, -s);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s1);
+ glVertex3f(cp->posc[1], 0.0, s1);
+ glVertex3f(cp->posc[2], cp->posc[3], s1);
+ mi->polygon_count++;
+ glEnd();
+ glBegin(GL_QUADS);
+ glNormal3f(0.0, -1.0, 0.0);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s);
+ glVertex3f(cp->posc[1], 0.0, s);
+ glVertex3f(cp->posc[1], 0.0, s1);
+ glVertex3f(0.0, 0.0, s1);
+ mi->polygon_count++;
+ glNormal3f(COS15, SIN15, 0.0);
+ if(cp->cmat) glColor3fv(colors[c2]);
+ glTexCoord2f(cp->texq, cp->texq); glVertex3f(cp->posc[1], 0.0, s);
+ glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[2], cp->posc[3], s);
+ glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[2], cp->posc[3], s1);
+ glTexCoord2f(1.0, cp->texq); glVertex3f(cp->posc[1], 0.0, s1);
+ mi->polygon_count++;
+ glNormal3f(-SIN30, COS30, 0.0);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s);
+ glVertex3f(cp->posc[2], cp->posc[3], s);
+ glVertex3f(cp->posc[2], cp->posc[3], s1);
+ glVertex3f(0.0, 0.0, s1);
+ mi->polygon_count++;
+ glEnd();
+ glRotatef(30.0, 0.0, 0.0, 1.0);
+}
+
+static void draw_wide_piece(ModeInfo *mi, cube21_conf *cp, GLfloat s, int c1, int c2, int c3, col_t colors)
+{
+ GLfloat s1 = cp->posc[0]*s;
+ glBegin(GL_TRIANGLES);
+ glNormal3f(0.0, 0.0, s);
+ if(cp->cmat) glColor3fv(colors[c1]);
+ glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s);
+ glTexCoord2f(cp->texp, 0.0); glVertex3f(cp->posc[1], 0.0, s);
+ glTexCoord2f(0.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s);
+ glTexCoord2f(0.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s);
+ glTexCoord2f(0.0, cp->texp); glVertex3f(cp->posc[3], cp->posc[2], s);
+ glTexCoord2f(0.5, 0.5); glVertex3f(0.0, 0.0, s);
+ glNormal3f(0.0, 0.0, -s);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s1);
+ glVertex3f(cp->posc[1], 0.0, s1);
+ glVertex3f(cp->posc[4], cp->posc[5], s1);
+ glVertex3f(cp->posc[4], cp->posc[5], s1);
+ glVertex3f(cp->posc[3], cp->posc[2], s1);
+ glVertex3f(0.0, 0.0, s1);
+ glEnd();
+ glBegin(GL_QUADS);
+ glNormal3f(0.0, -1.0, 0);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s);
+ glVertex3f(cp->posc[1], 0.0, s);
+ glVertex3f(cp->posc[1], 0.0, s1);
+ glVertex3f(0.0, 0.0, s1);
+ glNormal3f(COS15, -SIN15, 0.0);
+ if(cp->cmat) glColor3fv(colors[c2]);
+ glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[1], 0.0, s);
+ glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s);
+ glTexCoord2f(1.0, 0.0); glVertex3f(cp->posc[4], cp->posc[5], s1);
+ glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[1], 0.0, s1);
+ glNormal3f(SIN15, COS15, 0.0);
+ if(cp->cmat) glColor3fv(colors[c3]);
+ glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], s);
+ glTexCoord2f(cp->texq, 0.0); glVertex3f(cp->posc[3], cp->posc[2], s);
+ glTexCoord2f(1.0, 0.0); glVertex3f(cp->posc[3], cp->posc[2], s1);
+ glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], s1);
+ glNormal3f(-COS30, SIN30, 0.0);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(0.0, 0.0, s);
+ glVertex3f(cp->posc[3], cp->posc[2], s);
+ glVertex3f(cp->posc[3], cp->posc[2], s1);
+ glVertex3f(0.0, 0.0, s1);
+ glEnd();
+ glRotatef(60.0, 0.0, 0.0, 1.0);
+}
+
+static void draw_middle_piece(cube21_conf *cp, int s, cind_t cind, col_t colors)
+{
+ s *= 6;
+ glBegin(GL_QUADS);
+ if(cp->cmat) glColor3fv(cp->color_inner);
+ glNormal3f(0.0, 0.0, 1.0);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(cp->posc[1], 0.0, cp->posc[0]);
+ glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]);
+ glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]);
+ glVertex3f(-cp->posc[1], 0.0, cp->posc[0]);
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(cp->posc[1], 0.0, -cp->posc[0]);
+ glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]);
+ glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]);
+ glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]);
+ glNormal3f(0.0, -1.0, 0.0);
+ glTexCoord2f(TEX_GRAY);
+ glVertex3f(-cp->posc[1], 0.0, cp->posc[0]);
+ glVertex3f(cp->posc[1], 0.0, cp->posc[0]);
+ glVertex3f(cp->posc[1], 0.0, -cp->posc[0]);
+ glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]);
+ glNormal3f(COS15, -SIN15, 0.0);
+ if(cp->cmat) glColor3fv(colors[cind[4][s]]);
+ glTexCoord2f(cp->texq, cp->texp); glVertex3f(cp->posc[1], 0.0, cp->posc[0]);
+ glTexCoord2f(1.0, cp->texp); glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]);
+ glTexCoord2f(1.0, cp->texq); glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]);
+ glTexCoord2f(cp->texq, cp->texq); glVertex3f(cp->posc[1], 0.0, -cp->posc[0]);
+ glNormal3f(SIN15, COS15, 0.0);
+ if(cp->cmat) glColor3fv(colors[cind[4][s+1]]);
+ glTexCoord2f(0.0, 0.5); glVertex3f(cp->posc[4], cp->posc[5], cp->posc[0]);
+ glTexCoord2f(cp->texq, 0.5); glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]);
+ glTexCoord2f(cp->texq, 0.75); glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]);
+ glTexCoord2f(0.0, 0.75); glVertex3f(cp->posc[4], cp->posc[5], -cp->posc[0]);
+ glNormal3f(-COS15, SIN15, 0.0);
+ if(cp->cmat) glColor3fv(colors[cind[4][s+4]]);
+ glTexCoord2f(0.0, 0.75); glVertex3f(-cp->posc[5], cp->posc[4], cp->posc[0]);
+ glTexCoord2f(1.0, 0.75); glVertex3f(-cp->posc[1], 0.0, cp->posc[0]);
+ glTexCoord2f(1.0, 1.0); glVertex3f(-cp->posc[1], 0.0, -cp->posc[0]);
+ glTexCoord2f(0.0, 1.0); glVertex3f(-cp->posc[5], cp->posc[4], -cp->posc[0]);
+ glEnd();
+}
+
+static void draw_middle(cube21_conf *cp)
+{
+ if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ draw_middle_piece(cp, 0, cp->cind, cp->colors);
+ if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ glRotatef(180.0, 0.0, 0.0, 1.0);
+ if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ draw_middle_piece(cp, 1, cp->cind, cp->colors);
+ if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0);
+}
+
+static void draw_half_face(ModeInfo *mi, cube21_conf *cp, int s, int o)
+{
+ int i, s1 = 1-s*2, s2 = s*2;
+ for(i = o; ipieces[s][i+1])
+ draw_narrow_piece(mi, cp, s1, cp->cind[s2][i], cp->cind[s2+1][i], cp->colors);
+ else {
+ draw_wide_piece(mi, cp, s1, cp->cind[s2][i], cp->cind[s2+1][i], cp->cind[s2+1][i+1], cp->colors);
+ i++;
+ }
+ }
+}
+
+static void draw_top_face(ModeInfo *mi, cube21_conf *cp)
+{
+ draw_half_face(mi, cp, 0, 0);
+ draw_half_face(mi, cp, 0, 6);
+}
+
+static void draw_bottom_face(ModeInfo *mi, cube21_conf *cp)
+{
+ draw_half_face(mi, cp, 1, 0);
+ draw_half_face(mi, cp, 1, 6);
+}
+
+static Bool draw_main(ModeInfo *mi, cube21_conf *cp)
+{
+ GLfloat theta = cp->ramount<0?cp->t:-cp->t;
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+ if(wander)
+ glTranslatef(3.0*cp->ratio*sin(13.0*cp->posarg), 3.0*sin(17.0*cp->posarg), zpos);
+ else
+ glTranslatef(0, 0, zpos);
+ glScalef(size, size, size);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glRotatef(cp->xrot, 1.0, 0.0, 0.0);
+ glRotatef(cp->yrot, 0.0, 1.0, 0.0);
+
+ gltrackball_rotate (cp->trackball);
+
+ if(cp->wire) glColor3f(0.7, 0.7, 0.7);
+ switch(cp->state) {
+ case CUBE21_PAUSE1:
+ case CUBE21_PAUSE2:
+ draw_top_face(mi, cp);
+ draw_bottom_face(mi, cp);
+ draw_middle(cp);
+ break;
+ case CUBE21_ROT_TOP:
+ glRotatef(theta, 0.0, 0.0, 1.0);
+ draw_top_face(mi, cp);
+ glRotatef(-theta, 0.0, 0.0, 1.0);
+ draw_bottom_face(mi, cp);
+ draw_middle(cp);
+ break;
+ case CUBE21_ROT_BOTTOM:
+ draw_top_face(mi, cp);
+ glRotatef(theta, 0.0, 0.0, 1.0);
+ draw_bottom_face(mi, cp);
+ glRotatef(-theta, 0.0, 0.0, 1.0);
+ draw_middle(cp);
+ break;
+ case CUBE21_HALF1:
+ glRotatef(theta, 0.0, 1.0, 0.0);
+ case CUBE21_HALF2:
+ draw_half_face(mi, cp, 0, 0);
+ glRotatef(-180.0, 0.0, 0.0, 1.0);
+ draw_half_face(mi, cp, 1, 0);
+ glRotatef(-180.0, 0.0, 0.0, 1.0);
+ if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ draw_middle_piece(cp, 0, cp->cind, cp->colors);
+ if(cp->hf[0]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ if(cp->state==CUBE21_HALF1)
+ glRotatef(-theta, 0.0, 1.0, 0.0);
+ else
+ glRotatef(theta, 0.0, 1.0, 0.0);
+ glRotatef(180.0, 0.0, 0.0, 1.0);
+ draw_half_face(mi, cp, 0, 6);
+ glRotatef(-180.0, 0.0, 0.0, 1.0);
+ draw_half_face(mi, cp, 1, 6);
+ glRotatef(-180.0, 0.0, 0.0, 1.0);
+ if(cp->hf[1]) glRotatef(180.0, 0.0, 1.0, 0.0);
+ draw_middle_piece(cp, 1, cp->cind, cp->colors);
+ break;
+ }
+ if(spin) {
+ if((cp->xrot += spinspeed)>360.0) cp->xrot -= 360.0;
+ if((cp->yrot += spinspeed)>360.0) cp->yrot -= 360.0;
+ }
+ if(wander)
+ if((cp->posarg += wspeed/1000.0)>360.0) cp->posarg -= 360.0;
+ if((cp->t += tspeed)>cp->tmax) finish(cp);
+ return True;
+}
+
+static void parse_colmode(void)
+{
+ if(!colmode_s) {
+ colmode = CUBE21_COLOR_WHITE;
+ return;
+ }
+ if(strstr(colmode_s, "se") || strstr(colmode_s, "sil")) colmode = CUBE21_COLOR_SILVER;
+ else if(strstr(colmode_s, "ce") || strstr(colmode_s, "cla")) colmode = CUBE21_COLOR_CLASSIC;
+ else if(strstr(colmode_s, "2") || strstr(colmode_s, "two")) colmode = CUBE21_COLOR_TWORND;
+ else if(strstr(colmode_s, "6") || strstr(colmode_s, "six")) colmode = CUBE21_COLOR_SIXRND;
+ else if(strstr(colmode_s, "1") || strstr(colmode_s, "ran") || strstr(colmode_s, "rnd")) colmode = CUBE21_COLOR_RANDOM;
+ else colmode = CUBE21_COLOR_WHITE;
+}
+
+static void init_posc(cube21_conf *cp)
+{
+ cp->texp = (1.0-tan(Pi/12.0))/2.0;
+ cp->texq = 1.0-cp->texp;
+ /* Some significant non-trivial coordinates
+ * of the object. We need them exactly at GLfloat precision
+ * for the edges to line up perfectly. */
+ cp->posc[0] = tan(Pi/12); /* 0.268 */
+ cp->posc[1] = 1.0/cos(Pi/12); /* 1.035 */
+ cp->posc[2] = cos(Pi/6)/cos(Pi/12); /* 0.897 */
+ cp->posc[3] = sin(Pi/6)/cos(Pi/12); /* 0.518 */
+ cp->posc[4] = sqrt(2)*cos(Pi/6); /* 1.225 */
+ cp->posc[5] = sqrt(2)*sin(Pi/6); /* 0.707 = 1/sqrt(2) */
+}
+
+static void draw_horz_line(cube21_conf *cp, int x1, int x2, int y)
+{
+ int x, y0 = y, w;
+ if(y=TEX_HEIGHT) break;
+ w = y*y*255/BORDER2;
+ for(x=x1; x<=x2; x++)
+ if(cp->texture[y0+y][x]>w) cp->texture[y0+y][x] = w;
+ }
+}
+
+static void draw_vert_line(cube21_conf *cp, int x, int y1, int y2)
+{
+ int x0 = x, y, w;
+ if(x=TEX_WIDTH) break;
+ w = x*x*255/BORDER2;
+ for(y=y1; y<=y2; y++)
+ if(cp->texture[y][x0+x]>w) cp->texture[y][x0+x] = w;
+ }
+}
+
+static void draw_slanted_horz(cube21_conf *cp, int x1, int y1, int x2, int y2)
+{
+ int x, y, dx = x2-x1, dy = y2-y1, y0, w;
+ for(x=x1; x<=x2; x++) {
+ y0 = y1+(y2-y1)*(x-x1)/(x2-x1);
+ for(y=-1-BORDER; y<2+BORDER; y++) {
+ w = dx*(y0+y-y1)-dy*(x-x1);
+ w = w*w/(dx*dx+dy*dy);
+ w = w*255/BORDER2;
+ if(cp->texture[y0+y][x]>w) cp->texture[y0+y][x] = w;
+ }
+ }
+}
+
+static void draw_slanted_vert(cube21_conf *cp, int x1, int y1, int x2, int y2)
+{
+ int x, y, dx = x2-x1, dy = y2-y1, x0, w;
+ for(y=y1; y<=y2; y++) {
+ x0 = x1+(x2-x1)*(y-y1)/(y2-y1);
+ for(x=-1-BORDER; x<2+BORDER; x++) {
+ w = dy*(x0+x-x1)-dx*(y-y1);
+ w = w*w/(dy*dy+dx*dx);
+ w = w*255/BORDER2;
+ if(cp->texture[y][x0+x]>w) cp->texture[y][x0+x] = w;
+ }
+ }
+}
+
+static void make_texture(cube21_conf *cp)
+{
+ int x, y, x0, y0;
+ float grayp[2] = {TEX_GRAY};
+ for(y=0; ytexture[y][x] = 255;
+ draw_horz_line(cp, 0, TEX_WIDTH-1, 0);
+ draw_horz_line(cp, cp->texq*TEX_WIDTH, TEX_WIDTH-1, cp->texp*TEX_HEIGHT);
+ draw_horz_line(cp, cp->texq*TEX_WIDTH, TEX_WIDTH-1, cp->texq*TEX_HEIGHT);
+ draw_horz_line(cp, 0, cp->texq*TEX_WIDTH, TEX_HEIGHT/2);
+ draw_horz_line(cp, 0, TEX_WIDTH-1, TEX_HEIGHT*3/4);
+ draw_horz_line(cp, 0, TEX_WIDTH-1, TEX_HEIGHT-1);
+ draw_vert_line(cp, 0, 0, TEX_HEIGHT-1);
+ draw_vert_line(cp, cp->texq*TEX_WIDTH, 0, TEX_HEIGHT*3/4);
+ draw_vert_line(cp, TEX_WIDTH-1, 0, TEX_HEIGHT-1);
+ draw_slanted_horz(cp, 0, cp->texp*TEX_HEIGHT, TEX_WIDTH/2, TEX_HEIGHT/2);
+ draw_slanted_vert(cp, cp->texp*TEX_WIDTH, 0, TEX_WIDTH/2, TEX_HEIGHT/2);
+ draw_slanted_vert(cp, cp->texq*TEX_WIDTH, 0, TEX_WIDTH/2, TEX_HEIGHT/2);
+ x0 = grayp[0]*TEX_WIDTH;
+ y0 = grayp[1]*TEX_HEIGHT;
+ for(y=-1; y<=1; y++)
+ for(x=-1; x<=1; x++)
+ cp->texture[y0+y][x0+x] = 100;
+}
+
+/* It doesn't look good */
+/*#define MIPMAP*/
+
+static void init_gl(ModeInfo *mi)
+{
+ cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+#ifdef MIPMAP
+ int status;
+#endif
+ parse_colmode();
+ cp->wire = MI_IS_WIREFRAME(mi);
+ cp->cmat = !cp->wire && (colmode != CUBE21_COLOR_WHITE);
+ if(MI_IS_MONO(mi)) {
+ tex = False;
+ cp->cmat = False;
+ }
+
+# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
+ cp->wire = 0;
+# endif
+
+ if(cp->wire) {
+ glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+ return;
+ }
+ if(!tex)
+ cp->color_inner[0] = cp->color_inner[1] = cp->color_inner[2] = 0.4;
+ else
+ cp->color_inner[0] = cp->color_inner[1] = cp->color_inner[2] = 1.0;
+
+ glClearDepth(1.0);
+ glDrawBuffer(GL_BACK);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glShadeModel(GL_FLAT);
+ glDepthFunc(GL_LESS);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT1, GL_POSITION, position1);
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+ glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_COLOR_MATERIAL);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material_ambient);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material_diffuse);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material_specular);
+ glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
+ if(!tex) return;
+ glEnable(GL_TEXTURE_2D);
+#ifdef MIPMAP
+ clear_gl_error();
+ status = gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEX_WIDTH, TEX_HEIGHT,
+ GL_LUMINANCE, GL_UNSIGNED_BYTE, texture);
+ if (status) {
+ const char *s = gluErrorString(status);
+ fprintf (stderr, "%s: error mipmapping texture: %s\n", progname, (s?s:"(unknown)"));
+ exit (1);
+ }
+ check_gl_error("mipmapping");
+#else
+ glTexImage2D(GL_TEXTURE_2D, 0, 1, TEX_WIDTH, TEX_HEIGHT,
+ 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, cp->texture);
+#endif
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+#ifdef MIPMAP
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+#else
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+#endif
+}
+
+static void init_cp(cube21_conf *cp)
+{
+ int i, j;
+ GLfloat ce_colors[6][3] = {
+ {1.0, 1.0, 1.0},
+ {1.0, 0.5, 0.0},
+ {0.0, 0.9, 0.0},
+ {0.8, 0.0, 0.0},
+ {0.1, 0.1, 1.0},
+ {0.9, 0.9, 0.0}
+ };
+ cp->state = CUBE21_STATE_BASIC;
+ cp->xrot = -65.0; cp->yrot = 185.0;
+ cp->posarg = (wspeed?random()%360:0.0);
+ cp->t = 0.0; cp->tmax = twait;
+ cp->hf[0] = cp->hf[1] = 0;
+ cp->fr[0] = cp->fr[1] = 0;
+ for(i=0;i<13;i++)
+ cp->pieces[0][i] = cp->pieces[1][i] = (i%3==1?0:1);
+ switch(colmode) {
+ case CUBE21_COLOR_RANDOM:
+ case CUBE21_COLOR_TWORND:
+ case CUBE21_COLOR_SIXRND:
+ for(i=0; i<6; i++)
+ for(j=0; j<3; j++)
+ cp->colors[i][j] = rndcolor();
+ break;
+ case CUBE21_COLOR_SILVER:
+ cp->colors[0][0] = 1.0;
+ cp->colors[0][1] = 1.0;
+ cp->colors[0][2] = 1.0;
+ cp->colors[1][0] = rndcolor();
+ cp->colors[1][1] = rndcolor();
+ cp->colors[1][2] = rndcolor();
+ break;
+ case CUBE21_COLOR_CLASSIC:
+ for(i=0; i<6; i++)
+ for(j=0; j<3; j++)
+ cp->colors[i][j] = 0.2+0.7*ce_colors[i][j];
+ break;
+ }
+ switch(colmode) {
+ case CUBE21_COLOR_SILVER:
+ case CUBE21_COLOR_TWORND:
+ for(i=0; i<5; i++)
+ for(j=0; j<12; j++)
+ if(i==0) cp->cind[i][j] = 0;
+ else if(i==2) cp->cind[i][j] = 1;
+ else cp->cind[i][j] = ((j+5)%12)>=6?1:0;
+ break;
+ case CUBE21_COLOR_CLASSIC:
+ case CUBE21_COLOR_SIXRND:
+ for(i=0; i<5; i++)
+ for(j=0; j<12; j++)
+ if(i==0) cp->cind[i][j] = 4;
+ else if(i==2) cp->cind[i][j] = 5;
+ else cp->cind[i][j] = ((j+5)%12)/3;
+ break;
+ case CUBE21_COLOR_RANDOM:
+ for(i=0; i<5; i++)
+ for(j=0; j<12; j++)
+ cp->cind[i][j] = 0;
+ break;
+ }
+ if(rndstart) randomize(cp);
+}
+
+/*************************************************************************/
+
+ENTRYPOINT void reshape_cube21(ModeInfo *mi, int width, int height)
+{
+ cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+ int y = 0;
+ if(!height) height = 1;
+ cp->ratio = (GLfloat)width/(GLfloat)height;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ cp->ratio = width / (GLfloat) height;
+ cp->posarg = 0;
+ }
+
+ glViewport(0, y, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(30.0, cp->ratio, 1.0, 100.0);
+ glMatrixMode(GL_MODELVIEW);
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+ENTRYPOINT Bool
+cube21_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, cp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void init_cube21(ModeInfo *mi)
+{
+ cube21_conf *cp;
+ MI_INIT(mi, cube21);
+ cp = &cube21[MI_SCREEN(mi)];
+
+ cp->trackball = gltrackball_init (False);
+
+ if(!cp->texp) {
+ init_posc(cp);
+ make_texture(cp);
+ }
+
+#ifdef HAVE_MOBILE
+ size *= 2;
+#endif
+
+ if ((cp->glx_context = init_GL(mi)) != NULL) {
+ init_gl(mi);
+ init_cp(cp);
+ reshape_cube21(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+}
+
+ENTRYPOINT void draw_cube21(ModeInfo * mi)
+{
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ cube21_conf *cp;
+ if (!cube21) return;
+ cp = &cube21[MI_SCREEN(mi)];
+ MI_IS_DRAWN(mi) = True;
+ if (!cp->glx_context) return;
+ mi->polygon_count = 0;
+ glXMakeCurrent(display, window, *(cp->glx_context));
+ if (!draw_main(mi, cp)) {
+ MI_ABORT(mi);
+ return;
+ }
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glFlush();
+ glXSwapBuffers(display, window);
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void change_cube21(ModeInfo * mi)
+{
+ cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+ if (!cp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ init_gl(mi);
+}
+#endif /* !STANDALONE */
+
+
+XSCREENSAVER_MODULE ("Cube21", cube21)
+
+#endif
diff --git a/hacks/glx/cube21.man b/hacks/glx/cube21.man
new file mode 100644
index 0000000..d90c0fb
--- /dev/null
+++ b/hacks/glx/cube21.man
@@ -0,0 +1,147 @@
+.TH XScreenSaver 1 "30-Aug-05" "X Version 11"
+.SH NAME
+cube21 - animates the Cube 21 puzzle
+.SH SYNOPSIS
+.B cube21
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-delay \fImicroseconds\fP]
+[\-texture] [\-no\-texture]
+[\-mono]
+[\-wireframe]
+[\-spin] [\-no\-spin]
+[\-wander] [\-no\-wander]
+[\-randomize] [\-no\-randomize]
+[\-spinspeed \fInumber\fP]
+[\-rotspeed \fInumber\fP]
+[\-wanderspeed \fInumber\fP]
+[\-wait \fInumber\fP]
+[\-cubesize \fInumber\fP]
+[\-colormode \fIarg\fP]
+[\-fps]
+.SH DESCRIPTION
+This program animates a puzzle known as Cube 21 or Square-1.
+Its moves are chosen randomly.
+.P
+Cube 21 is a Rubik-like puzzle invented in 1992. Its specialities are that
+it can change its shape and even the number of possible moves. It can have
+more than 200 different shapes and the total number of configurations
+(assuming colors) is several tens of billions.
+.SH OPTIONS
+.I cube21
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How long to pause between frames. Default is 20000, or 0.02 second.
+.TP 8
+.B \-texture
+Use texture maps. This is the default.
+.TP 8
+.B \-no\-texture
+Use solid colors.
+.TP 8
+.B \-mono
+Disable both texture maps and colors.
+.TP 8
+.B \-wireframe
+Only draw outlines. Outlines of all pieces, not only the whole object, are drawn.
+.TP 8
+.B \-spin
+Spin the whole object around X, Y and Z axes. This is the default.
+.TP 8
+.B \-no\-spin
+Do not spin, showing the same three faces all the time.
+.TP 8
+.B \-wander
+Move the object around the screen. This is the default.
+.TP 8
+.B \-no\-wander
+Keep the object centered on the screen.
+.TP 8
+.B \-randomize
+Shuffle the puzzle randomly at startup. This is the default.
+.TP 8
+.B \-no\-randomize
+Do not shuffle at startup, begin at the shape of cube.
+.TP 8
+.B \-spinspeed \fInumber\fP
+The relative speed of spinning. Default is 1.0.
+.TP 8
+.B \-rotspeed \fInumber\fP
+The relative speed of the moves. Default is 3.0. Setting to \(<= 0.0
+makes the object stay at one configuration.
+.TP 8
+.B \-wanderspeed \fInumber\fP
+The relative speed of wandering around the screen. Default is 1.0.
+.TP 8
+.B \-wait \fInumber\fP
+How long to stay at ending position after each move. The meaning of
+the argument is again relative. Default is 40.0.
+.TP 8
+.B \-cubesize \fInumber\fP
+Size of the object. Value of 3.0 fills roughly all the screen (its height). Default is 0.7.
+.TP 8
+.B \-colormode \fIargument\fP
+How many and which colors should the object have. The colors are put on the piece
+faces so that the puzzle is solvable. The inner faces are not influenced.
+.RS
+.TP 8
+.BR se " or " silver
+Simulate the "Silver Edition" \- white and one random color.
+.TP 8
+.BR 2 " or " two
+Two random colors.
+.TP 8
+.BR ce " or " classic
+Simulate the "Classic Edition" \- white, yellow, orange, red, green and blue.
+.TP 8
+.BR 6 " or " six
+Six random colors.
+.TP 8
+.BR 1 " or " random " or " rnd
+One random color.
+.TP 8
+Anything else
+All faces white.
+.RE
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2005 by Vaclav Potocek. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Vaclav (Vasek) Potocek , 30-Aug-05.
diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c
new file mode 100644
index 0000000..cc9b0d6
--- /dev/null
+++ b/hacks/glx/cubenetic.c
@@ -0,0 +1,598 @@
+/* cubenetic, Copyright (c) 2002-2014 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*count: 5 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_cube 0
+# define release_cube 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "XYZ"
+#define DEF_WANDER "True"
+#define DEF_TEXTURE "True"
+
+#define DEF_WAVES "3"
+#define DEF_WAVE_SPEED "80"
+#define DEF_WAVE_RADIUS "512"
+
+typedef struct {
+ int color;
+ GLfloat x, y, z;
+ GLfloat w, h, d;
+ int frame;
+ GLfloat dx, dy, dz;
+ GLfloat dw, dh, dd;
+} cube;
+
+typedef struct {
+ int x, y;
+ double xth, yth;
+} wave_src;
+
+typedef struct {
+ int nwaves;
+ int radius;
+ int speed;
+ wave_src *srcs;
+ int *heights;
+} waves;
+
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLuint cube_list;
+ GLuint texture_id;
+ int cube_polys;
+ int ncubes;
+ cube *cubes;
+ waves *waves;
+
+ int texture_width, texture_height;
+ unsigned char *texture;
+
+ int ncolors;
+ XColor *cube_colors;
+ XColor *texture_colors;
+
+} cube_configuration;
+
+static cube_configuration *ccs = NULL;
+
+static char *do_spin;
+static Bool do_wander;
+static Bool do_texture;
+
+static int wave_count;
+static int wave_speed;
+static int wave_radius;
+static int texture_size = 256;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionSepArg, 0 },
+ { "+spin", ".spin", XrmoptionNoArg, "" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ {"-texture", ".texture", XrmoptionNoArg, "true" },
+ {"+texture", ".texture", XrmoptionNoArg, "false" },
+ {"-waves", ".waves", XrmoptionSepArg, 0 },
+ {"-wave-speed", ".waveSpeed", XrmoptionSepArg, 0 },
+ {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_String},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ {&wave_count, "waves", "Waves", DEF_WAVES, t_Int},
+ {&wave_speed, "waveSpeed", "WaveSpeed", DEF_WAVE_SPEED, t_Int},
+ {&wave_radius,"waveRadius","WaveRadius", DEF_WAVE_RADIUS,t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+static int
+unit_cube (Bool wire)
+{
+ int polys = 0;
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* front */
+ glNormal3f (0, 0, 1);
+ glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, 0.5);
+ glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5);
+ glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, 0.5);
+ glTexCoord2f(1, 1); glVertex3f (-0.5, -0.5, 0.5);
+ polys++;
+ glEnd();
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* back */
+ glNormal3f (0, 0, -1);
+ glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5);
+ glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, -0.5);
+ glTexCoord2f(1, 1); glVertex3f ( 0.5, 0.5, -0.5);
+ glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, -0.5);
+ polys++;
+ glEnd();
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* left */
+ glNormal3f (-1, 0, 0);
+ glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, 0.5);
+ glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, -0.5);
+ glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5);
+ glTexCoord2f(0, 1); glVertex3f (-0.5, -0.5, 0.5);
+ polys++;
+ glEnd();
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* right */
+ glNormal3f (1, 0, 0);
+ glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, -0.5);
+ glTexCoord2f(1, 0); glVertex3f ( 0.5, 0.5, -0.5);
+ glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5);
+ glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, 0.5);
+ polys++;
+ glEnd();
+
+ if (wire) return polys;
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* top */
+ glNormal3f (0, 1, 0);
+ glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5);
+ glTexCoord2f(0, 1); glVertex3f ( 0.5, 0.5, -0.5);
+ glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, -0.5);
+ glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, 0.5);
+ polys++;
+ glEnd();
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* bottom */
+ glNormal3f (0, -1, 0);
+ glTexCoord2f(1, 0); glVertex3f (-0.5, -0.5, 0.5);
+ glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5);
+ glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, -0.5);
+ glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, 0.5);
+ polys++;
+ glEnd();
+ return polys;
+}
+
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+
+/* Waves.
+ Adapted from ../hacks/interference.c by Hannu Mallat.
+ */
+
+static void
+init_wave (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ waves *ww;
+ int i;
+ cc->waves = ww = (waves *) calloc (sizeof(*cc->waves), 1);
+ ww->nwaves = wave_count;
+ ww->radius = wave_radius;
+ ww->speed = wave_speed;
+ ww->heights = (int *) calloc (sizeof(*ww->heights), ww->radius);
+ ww->srcs = (wave_src *) calloc (sizeof(*ww->srcs), ww->nwaves);
+
+ for (i = 0; i < ww->radius; i++)
+ {
+ float max = (cc->ncolors * (ww->radius - i) / (float) ww->radius);
+ ww->heights[i] = ((max + max * cos(i / 50.0)) / 2.0);
+ }
+
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ ww->srcs[i].xth = frand(2.0) * M_PI;
+ ww->srcs[i].yth = frand(2.0) * M_PI;
+ }
+}
+
+static void
+interference (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ waves *ww = cc->waves;
+ int x, y, i;
+
+ /* Move the wave origins around
+ */
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ ww->srcs[i].xth += (ww->speed / 1000.0);
+ if (ww->srcs[i].xth > 2*M_PI)
+ ww->srcs[i].xth -= 2*M_PI;
+ ww->srcs[i].yth += (ww->speed / 1000.0);
+ if (ww->srcs[i].yth > 2*M_PI)
+ ww->srcs[i].yth -= 2*M_PI;
+
+ ww->srcs[i].x = (cc->texture_width/2 +
+ (cos (ww->srcs[i].xth) *
+ cc->texture_width / 2));
+ ww->srcs[i].y = (cc->texture_height/2 +
+ (cos (ww->srcs[i].yth) *
+ cc->texture_height / 2));
+ }
+
+ /* Compute the effect of the waves on each pixel,
+ and generate the output map.
+ */
+ for (y = 0; y < cc->texture_height; y++)
+ for (x = 0; x < cc->texture_width; x++)
+ {
+ int result = 0;
+ unsigned char *o;
+ for (i = 0; i < ww->nwaves; i++)
+ {
+ int dx = x - ww->srcs[i].x;
+ int dy = y - ww->srcs[i].y;
+ int dist = sqrt (dx*dx + dy*dy);
+ result += (dist > ww->radius ? 0 : ww->heights[dist]);
+ }
+ result %= cc->ncolors;
+
+ o = cc->texture + (((y * cc->texture_width) + x) << 2);
+ o[0] = (cc->texture_colors[result].red >> 8);
+ o[1] = (cc->texture_colors[result].green >> 8);
+ o[2] = (cc->texture_colors[result].blue >> 8);
+ /* o[3] = 0xFF; */
+ }
+}
+
+
+/* Textures
+ */
+
+static void
+init_texture (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ int i;
+
+ glEnable(GL_TEXTURE_2D);
+
+ clear_gl_error();
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
+ glGenTextures (1, &cc->texture_id);
+ glBindTexture (GL_TEXTURE_2D, cc->texture_id);
+ check_gl_error("texture binding");
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ check_gl_error("texture initialization");
+
+ cc->texture_width = texture_size;
+ cc->texture_height = texture_size;
+
+ i = texture_size * texture_size * 4;
+ cc->texture = (unsigned char *) malloc (i);
+ memset (cc->texture, 0xFF, i);
+}
+
+
+static void
+shuffle_texture (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ interference (mi);
+ clear_gl_error();
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ cc->texture_width, cc->texture_height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ cc->texture);
+ check_gl_error("texture");
+}
+
+
+static void
+reset_colors (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ double H[3], S[3], V[3];
+ int shift = 60;
+ H[0] = frand(360.0);
+ H[1] = ((H[0] + shift) < 360) ? (H[0]+shift) : (H[0] + shift - 360);
+ H[2] = ((H[1] + shift) < 360) ? (H[1]+shift) : (H[1] + shift - 360);
+ S[0] = S[1] = S[2] = 1.0;
+ V[0] = V[1] = V[2] = 1.0;
+ make_color_loop(0, 0, 0,
+ H[0], S[0], V[0],
+ H[1], S[1], V[1],
+ H[2], S[2], V[2],
+ cc->texture_colors, &cc->ncolors,
+ False, False);
+
+ make_smooth_colormap (0, 0, 0,
+ cc->cube_colors, &cc->ncolors,
+ False, 0, False);
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, cc->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cc->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ reset_colors (mi);
+ return True;
+ }
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ int i;
+ cube_configuration *cc;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, ccs);
+
+ cc = &ccs[MI_SCREEN(mi)];
+
+ if ((cc->glx_context = init_GL(mi)) != NULL) {
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ }
+
+ if (!wire)
+ {
+ static const GLfloat pos[4] = {1.0, 0.5, 1.0, 0.0};
+ static const GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ static const GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ }
+
+
+ {
+ Bool spinx=False, spiny=False, spinz=False;
+ double spin_speed = 1.0;
+ double wander_speed = 0.05;
+
+ char *s = do_spin;
+ while (*s)
+ {
+ if (*s == 'x' || *s == 'X') spinx = True;
+ else if (*s == 'y' || *s == 'Y') spiny = True;
+ else if (*s == 'z' || *s == 'Z') spinz = True;
+ else if (*s == '0') ;
+ else
+ {
+ fprintf (stderr,
+ "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
+ progname, do_spin);
+ exit (1);
+ }
+ s++;
+ }
+
+ cc->rot = make_rotator (spinx ? spin_speed : 0,
+ spiny ? spin_speed : 0,
+ spinz ? spin_speed : 0,
+ 1.0,
+ do_wander ? wander_speed : 0,
+ (spinx && spiny && spinz));
+ cc->trackball = gltrackball_init (True);
+ }
+
+ cc->ncolors = 256;
+ cc->texture_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor));
+ cc->cube_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor));
+
+ reset_colors (mi);
+
+ cc->ncubes = MI_COUNT (mi);
+ cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes);
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ cube *cube = &cc->cubes[i];
+ cube->color = random() % cc->ncolors;
+ cube->w = 1.0;
+ cube->h = 1.0;
+ cube->d = 1.0;
+ cube->dx = frand(0.1);
+ cube->dy = frand(0.1);
+ cube->dz = frand(0.1);
+ cube->dw = frand(0.1);
+ cube->dh = frand(0.1);
+ cube->dd = frand(0.1);
+ }
+
+ if (wire)
+ do_texture = False;
+
+ if (do_texture)
+ {
+ init_texture (mi);
+ init_wave (mi);
+ shuffle_texture (mi);
+ }
+
+ cc->cube_list = glGenLists (1);
+ glNewList (cc->cube_list, GL_COMPILE);
+ cc->cube_polys = unit_cube (wire);
+ glEndList ();
+}
+
+
+static void
+shuffle_cubes (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < cc->ncubes; i++)
+ {
+# define SINOID(SCALE,FRAME,SIZE) \
+ ((((1 + sin((FRAME * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2)
+
+ cube *cube = &cc->cubes[i];
+ cube->x = SINOID(cube->dx, cube->frame, 0.5);
+ cube->y = SINOID(cube->dy, cube->frame, 0.5);
+ cube->z = SINOID(cube->dz, cube->frame, 0.5);
+ cube->w = SINOID(cube->dw, cube->frame, 0.9) + 1.0;
+ cube->h = SINOID(cube->dh, cube->frame, 0.9) + 1.0;
+ cube->d = SINOID(cube->dd, cube->frame, 0.9) + 1.0;
+ cube->frame++;
+# undef SINOID
+ }
+}
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i;
+
+ if (!cc->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+
+ glShadeModel(GL_FLAT);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glScalef(1.1, 1.1, 1.1);
+
+ {
+ double x, y, z;
+ get_position (cc->rot, &x, &y, &z, !cc->button_down_p);
+ glTranslatef((x - 0.5) * 8,
+ (y - 0.5) * 6,
+ (z - 0.5) * 15);
+
+ gltrackball_rotate (cc->trackball);
+
+ get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ glScalef (2.5, 2.5, 2.5);
+
+ for (i = 0; i < cc->ncubes; i++)
+ {
+ cube *cube = &cc->cubes[i];
+ GLfloat color[4];
+ color[0] = cc->cube_colors[cube->color].red / 65536.0;
+ color[1] = cc->cube_colors[cube->color].green / 65536.0;
+ color[2] = cc->cube_colors[cube->color].blue / 65536.0;
+ color[3] = 1.0;
+ cube->color++;
+ if (cube->color >= cc->ncolors) cube->color = 0;
+
+ glPushMatrix ();
+ glTranslatef (cube->x, cube->y, cube->z);
+ glScalef (cube->w, cube->h, cube->d);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
+ glCallList (cc->cube_list);
+ mi->polygon_count += cc->cube_polys;
+ glPopMatrix ();
+ }
+
+ shuffle_cubes (mi);
+ if (do_texture)
+ shuffle_texture (mi);
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("Cubenetic", cubenetic, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/cubenetic.man b/hacks/glx/cubenetic.man
new file mode 100644
index 0000000..e11d479
--- /dev/null
+++ b/hacks/glx/cubenetic.man
@@ -0,0 +1,89 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cubenetic - cubist 3D undulating blob.
+.SH SYNOPSIS
+.B cubenetic
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-wander]
+[\-no-spin]
+[\-spin \fI[XYZ]\fP]
+[\-wireframe]
+[\-no-texture]
+[\-wave-speed \fInumber\fP]
+[\-wave-radius \fInumber\fP]
+[\-waves \fInumber\fP]
+[\-fps]
+.SH DESCRIPTION
+Draws a pulsating set of overlapping boxes with ever-chaning blobby
+patterns undulating across their surfaces.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-count \fInumber\fP
+How many boxes make up the object. Default: 5.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin \fI[XYZ]\fP
+Around which axes should the object spin?
+.TP 8
+.B \-no-spin
+Don't spin.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-texture | \-no-texture
+Display Solid Colors.
+.TP 8
+.B \-wave-speed \fInumber\fP
+Surface Pattern Speed. 5 - 150. Default: 80.
+.TP 8
+.B \-wave-radius \fInumber\fP
+Surface Pattern Overlap. 5 - 600. Default: 512.
+.TP 8
+.B \-waves \fInumber\fP
+Surface Pattern Complexity. 1 - 20. Default: 3.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/cubestack.c b/hacks/glx/cubestack.c
new file mode 100644
index 0000000..70883f6
--- /dev/null
+++ b/hacks/glx/cubestack.c
@@ -0,0 +1,462 @@
+/* cubestack, Copyright (c) 2016 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_cube 0
+# define release_cube 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_WANDER "True"
+#define DEF_SPEED "1.0"
+#define DEF_THICKNESS "0.13"
+#define DEF_OPACITY "0.7"
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ GLfloat state;
+ GLfloat r;
+ int length;
+ int ncolors;
+ XColor *colors;
+ int ccolor;
+} cube_configuration;
+
+static cube_configuration *bps = NULL;
+
+static GLfloat speed;
+static GLfloat thickness;
+static GLfloat opacity;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-thickness", ".thickness", XrmoptionSepArg, 0 },
+ { "-opacity", ".opacity", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float},
+ {&opacity, "opacity", "Opacity", DEF_OPACITY, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+static int
+draw_strut (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+ GLfloat h;
+
+ glPushMatrix();
+ glFrontFace (GL_CCW);
+ glNormal3f (0, 0, -1);
+ glTranslatef (-0.5, -0.5, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN);
+ glVertex3f (0, 0, 0);
+ glVertex3f (1, 0, 0);
+ glVertex3f (1 - thickness, thickness, 0);
+ glVertex3f (thickness, thickness, 0);
+ glEnd();
+ polys += 2;
+
+ h = 0.5 - thickness;
+ if (h >= 0.25)
+ {
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN);
+ glVertex3f (0.5, 0.5, 0);
+ glVertex3f (0.5 - thickness/2, 0.5 - thickness/2, 0);
+ glVertex3f (0.5 - thickness/2, 0.5 - h/2, 0);
+ glVertex3f (0.5 + thickness/2, 0.5 - h/2, 0);
+ glVertex3f (0.5 + thickness/2, 0.5 - thickness/2, 0);
+ glEnd();
+ polys += 3;
+ }
+
+ glPopMatrix();
+
+ return polys;
+}
+
+
+static int
+draw_face (ModeInfo *mi)
+{
+ int i;
+ int polys = 0;
+ for (i = 0; i < 4; i++)
+ {
+ polys += draw_strut (mi);
+ glRotatef (90, 0, 0, 1);
+ }
+ return polys;
+}
+
+
+static GLfloat
+ease_fn (GLfloat r)
+{
+ return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
+
+
+static GLfloat
+ease_ratio (GLfloat r)
+{
+ GLfloat ease = 0.5;
+ if (r <= 0) return 0;
+ else if (r >= 1) return 1;
+ else if (r <= ease) return ease * ease_fn (r / ease);
+ else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+ else return r;
+}
+
+
+static int
+draw_cube_1 (ModeInfo *mi, GLfloat state, GLfloat color[4], Bool bottom_p)
+{
+ int polys = 0;
+ int istate = state;
+ GLfloat r = state - istate;
+ GLfloat a = color[3];
+
+ r = ease_ratio (r);
+
+# define COLORIZE(R) \
+ color[3] = a * R; \
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); \
+ glColor4fv (color)
+
+ if (bottom_p)
+ {
+ GLfloat r2 = (state < 0 ? 1 + state : 1);
+ COLORIZE(r2);
+ polys += draw_face (mi); /* Bottom */
+ }
+
+ if (state >= 0) /* Left */
+ {
+ GLfloat r2 = (istate == 0 ? r : 1);
+ COLORIZE(r2);
+ glPushMatrix();
+ glTranslatef (-0.5, 0.5, 0);
+ glRotatef (-r2 * 90, 0, 1, 0);
+ glTranslatef (0.5, -0.5, 0);
+ polys += draw_face (mi);
+ glPopMatrix();
+ }
+
+ if (state >= 1) /* Back */
+ {
+ GLfloat r2 = (istate == 1 ? r : 1);
+ COLORIZE(r2);
+ glPushMatrix();
+ glTranslatef (-0.5, 0.5, 0);
+ glRotatef ( 90, 0, 1, 0);
+ glRotatef (-90, 0, 0, 1);
+ glRotatef (-r2 * 90, 0, 1, 0);
+ glTranslatef (0.5, -0.5, 0);
+ polys += draw_face (mi);
+ glPopMatrix();
+ }
+
+ if (state >= 2) /* Right */
+ {
+ GLfloat r2 = (istate == 2 ? r : 1);
+ COLORIZE(r2);
+ glPushMatrix();
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef ( 90, 0, 1, 0);
+ glRotatef (-90, 0, 0, 1);
+ glRotatef (-90, 0, 1, 0);
+ glRotatef (-r2 * 90, 0, 1, 0);
+ glTranslatef (-0.5, -0.5, 0);
+ polys += draw_face (mi);
+ glPopMatrix();
+ }
+
+ if (state >= 3) /* Front */
+ {
+ GLfloat r2 = (istate == 3 ? r : 1);
+ COLORIZE(r2);
+ glPushMatrix();
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef ( 90, 0, 1, 0);
+ glRotatef (-90, 0, 0, 1);
+ glRotatef (-180, 0, 1, 0);
+ glTranslatef (-1, 0, 0);
+ glRotatef (-r2 * 90, 0, 1, 0);
+ glTranslatef (0.5, -0.5, 0);
+ polys += draw_face (mi);
+ glPopMatrix();
+ }
+
+ if (state >= 4) /* Top */
+ {
+ GLfloat r2 = (istate == 4 ? r : 1);
+ COLORIZE(r2);
+ glPushMatrix();
+ glTranslatef (0, 0, 1);
+ glRotatef (-90, 0, 0, 1);
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef (-90, 0, 1, 0);
+ glRotatef (r2 * 90, 0, 1, 0);
+ glTranslatef (-0.5, -0.5, 0);
+ polys += draw_face (mi);
+ glPopMatrix();
+ }
+
+ return polys;
+}
+
+
+static int
+draw_cubes (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ int polys = 0;
+ GLfloat z = bp->state / 6;
+ int i;
+ GLfloat c[4];
+ int c0 = bp->ccolor;
+ GLfloat alpha = opacity;
+
+ glPushMatrix();
+ glTranslatef (0, 0, -1.5 - z);
+
+ glTranslatef (0, 0, -bp->length);
+ for (i = bp->length-1; i >= 0; i--)
+ {
+ int c1 = c0 - i - 1;
+ if (c1 < 0) c1 += bp->ncolors;
+ c[0] = bp->colors[c1].red / 65536.0;
+ c[1] = bp->colors[c1].green / 65536.0;
+ c[2] = bp->colors[c1].blue / 65536.0;
+ c[3] = alpha;
+
+ glTranslatef (0, 0, 1);
+ polys += draw_cube_1 (mi, 5, c, i == bp->length - 1);
+ }
+
+ c[0] = bp->colors[c0].red / 65536.0;
+ c[1] = bp->colors[c0].green / 65536.0;
+ c[2] = bp->colors[c0].blue / 65536.0;
+ c[3] = alpha;
+ glTranslatef (0, 0, 1);
+ polys += draw_cube_1 (mi, bp->state, c, bp->length == 0);
+
+ glPopMatrix();
+
+ return polys;
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ if (c == ' ' || c == '\t')
+ {
+ bp->ncolors = 32;
+ make_smooth_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+ return True;
+ }
+ }
+
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ cube_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ if (!wire)
+ {
+ glDisable (GL_LIGHTING);
+ glEnable(GL_DEPTH_TEST);
+ glShadeModel (GL_SMOOTH);
+ glEnable (GL_NORMALIZE);
+ glDisable (GL_CULL_FACE);
+ glEnable (GL_BLEND);
+ glDisable (GL_DEPTH_TEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE);
+ }
+
+ {
+ double wander_speed = 0.005;
+ bp->rot = make_rotator (0, 0, 0, 0,
+ do_wander ? wander_speed : 0,
+ False);
+ bp->trackball = gltrackball_init (True);
+ }
+
+ if (thickness > 0.5)
+ thickness = 0.5;
+ if (thickness < 0.001)
+ thickness = 0.001;
+
+ bp->ncolors = 32;
+ bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor));
+ make_smooth_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+ bp->state = -1;
+}
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 4,
+ (y - 0.5) * 4,
+ (z - 0.5) * 2);
+
+ gltrackball_rotate (bp->trackball);
+ }
+
+ mi->polygon_count = 0;
+
+ glScalef (6, 6, 6);
+ glRotatef (-45, 1, 0, 0);
+ glRotatef (20, 0, 0, 1);
+ glRotatef (bp->r, 0, 0, 1);
+
+ mi->polygon_count = draw_cubes (mi);
+ glPopMatrix ();
+
+ if (!bp->button_down_p)
+ {
+ int max = 6;
+ bp->state += speed * 0.015;
+ bp->r += speed * 0.05;
+ while (bp->r > 360)
+ bp->r -= 360;
+ while (bp->state > max)
+ {
+ bp->state -= max;
+ bp->length++;
+ bp->ccolor++;
+ if (bp->ccolor > bp->ncolors)
+ bp->ccolor = 0;
+ }
+
+ if (bp->length > 20)
+ bp->length = 20;
+ }
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("CubeStack", cubestack, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/cubestack.man b/hacks/glx/cubestack.man
new file mode 100644
index 0000000..511d116
--- /dev/null
+++ b/hacks/glx/cubestack.man
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cubestack - An endless stack of unfolding, translucent cubes.
+.SH SYNOPSIS
+.B cubestack
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-thickness \fInumber\fP]
+[\-opacity \fInumber\fP]
+[\-no-wander]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+An endless stack of unfolding, translucent cubes.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-thickness \fInumber\fP
+Thickness of the face edges. 0.0 - 0.5. Default: 0.13.
+.TP 8
+.B \-opacity \fInumber\fP
+Opacity of the cubes. 0.01 - 1.0. Default: 0.7.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/cubestorm.c b/hacks/glx/cubestorm.c
new file mode 100644
index 0000000..cf973c9
--- /dev/null
+++ b/hacks/glx/cubestorm.c
@@ -0,0 +1,469 @@
+/* cubestorm, Copyright (c) 2003-2018 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: " DEF_COUNT "\n" \
+ "*showFPS: False \n" \
+ "*fpsSolid: True \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+
+# define free_cube 0
+# define release_cube 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+#define DEF_SPIN "True"
+#define DEF_WANDER "True"
+#define DEF_SPEED "1.0"
+#define DEF_THICKNESS "0.06"
+#define DEF_COUNT "4"
+#define DEF_LENGTH "200"
+
+typedef struct {
+ GLfloat px, py, pz;
+ GLfloat rx, ry, rz;
+ int ccolor;
+} histcube;
+
+typedef struct {
+ rotator *rot;
+ int ccolor;
+} subcube;
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+ Bool clear_p;
+
+ GLuint cube_list;
+
+ int ncolors;
+ XColor *colors;
+
+ subcube *subcubes;
+
+ int hist_size, hist_count;
+ histcube *hist;
+
+} cube_configuration;
+
+static cube_configuration *bps = NULL;
+
+static Bool do_spin;
+static Bool do_wander;
+static GLfloat speed;
+static GLfloat thickness;
+static int max_length;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-db", ".doubleBuffer", XrmoptionNoArg, "True"},
+ { "+db", ".doubleBuffer", XrmoptionNoArg, "False"},
+ { "-thickness", ".thickness", XrmoptionSepArg, 0 },
+ { "-length", ".length", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float},
+ {&max_length, "length", "Length", DEF_LENGTH, t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+static void
+draw_face (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+
+ int i;
+ GLfloat t = thickness / 2;
+ GLfloat a = -0.5;
+ GLfloat b = 0.5;
+
+ if (t <= 0) t = 0.001;
+ else if (t > 0.5) t = 0.5;
+
+ glPushMatrix();
+ glFrontFace(GL_CW);
+
+ for (i = 0; i < 4; i++)
+ {
+ glNormal3f (0, 0, -1);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (a, a, a);
+ glVertex3f (b, a, a);
+ glVertex3f (b-t, a+t, a);
+ glVertex3f (a+t, a+t, a);
+ glEnd();
+
+ glNormal3f (0, 1, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (b-t, a+t, a);
+ glVertex3f (b-t, a+t, a+t);
+ glVertex3f (a+t, a+t, a+t);
+ glVertex3f (a+t, a+t, a);
+ glEnd();
+
+ glRotatef(90, 0, 0, 1);
+ }
+ glPopMatrix();
+}
+
+static void
+draw_faces (ModeInfo *mi)
+{
+ glPushMatrix();
+ draw_face (mi);
+ glRotatef (90, 0, 1, 0); draw_face (mi);
+ glRotatef (90, 0, 1, 0); draw_face (mi);
+ glRotatef (90, 0, 1, 0); draw_face (mi);
+ glRotatef (90, 1, 0, 0); draw_face (mi);
+ glRotatef (180, 1, 0, 0); draw_face (mi);
+ glPopMatrix();
+}
+
+
+static void
+new_cube_colors (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ bp->ncolors = 128;
+ if (bp->colors) free (bp->colors);
+ bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor));
+ make_smooth_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+ for (i = 0; i < MI_COUNT(mi); i++)
+ bp->subcubes[i].ccolor = random() % bp->ncolors;
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 45.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ if (c == ' ')
+ {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ return True;
+ }
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ goto DEF;
+ }
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ DEF:
+ new_cube_colors (mi);
+ return True;
+ }
+ return False;
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ cube_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ if (MI_COUNT(mi) <= 0) MI_COUNT(mi) = 1;
+
+ bp->trackball = gltrackball_init (True);
+ bp->subcubes = (subcube *) calloc (MI_COUNT(mi), sizeof(subcube));
+
+ bp->hist_count = 0;
+ bp->hist_size = 100;
+ bp->hist = (histcube *) malloc (bp->hist_size * sizeof(*bp->hist));
+
+ for (i = 0; i < MI_COUNT(mi); i++)
+ {
+ double wander_speed, spin_speed, spin_accel;
+
+ if (i == 0)
+ {
+ wander_speed = 0.05 * speed;
+ spin_speed = 10.0 * speed;
+ spin_accel = 4.0 * speed;
+ }
+ else
+ {
+ wander_speed = 0;
+ spin_speed = 4.0 * speed;
+ spin_accel = 2.0 * speed;
+ }
+
+ bp->subcubes[i].rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ True);
+ }
+
+ bp->colors = 0;
+ new_cube_colors (mi);
+
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0};
+ GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ bp->cube_list = glGenLists (1);
+ glNewList (bp->cube_list, GL_COMPILE);
+ draw_faces (mi);
+ glEndList ();
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+/* Originally, this program achieved the "accumulating cubes" effect by
+ simply not clearing the depth or color buffers between frames. That
+ doesn't work on modern systems, particularly mobile: you can no longer
+ rely on your buffers being unmolested once you have yielded. So now we
+ must save and re-render every polygon. Noof has the same problem and
+ solves it by taking a screenshot of the frame buffer into a texture, but
+ cubestorm needs to restore the depth buffer as well as the color buffer.
+ */
+static void
+push_hist (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ double px, py, pz;
+ double rx = 0, ry = 0, rz = 0;
+ int i;
+
+ if (bp->hist_count > max_length &&
+ bp->hist_count > MI_COUNT(mi) &&
+ !bp->button_down_p)
+ {
+ /* Drop history off of the end. */
+ memmove (bp->hist,
+ bp->hist + MI_COUNT(mi),
+ (bp->hist_count - MI_COUNT(mi)) * sizeof(*bp->hist));
+ bp->hist_count -= MI_COUNT(mi);
+ }
+
+ if (bp->hist_count + MI_COUNT(mi) >= bp->hist_size)
+ {
+ bp->hist_size = bp->hist_count + MI_COUNT(mi) + 100;
+ bp->hist = (histcube *)
+ realloc (bp->hist, bp->hist_size * sizeof(*bp->hist));
+ }
+
+ get_position (bp->subcubes[0].rot, &px, &py, &pz, !bp->button_down_p);
+
+ for (i = 0; i < MI_COUNT(mi); i++)
+ {
+ subcube *sc = &bp->subcubes[i];
+ histcube *hc = &bp->hist[bp->hist_count];
+ double rx2, ry2, rz2;
+
+ get_rotation (sc->rot, &rx2, &ry2, &rz2, !bp->button_down_p);
+
+ if (i == 0) /* N+1 cubes rotate relative to cube 0 */
+ rx = rx2, ry = ry2, rz = rz2;
+ else
+ rx2 += rx, ry2 += ry, rz2 += rz;
+
+ hc->px = px;
+ hc->py = py;
+ hc->pz = pz;
+ hc->rx = rx2;
+ hc->ry = ry2;
+ hc->rz = rz2;
+ hc->ccolor = sc->ccolor;
+ sc->ccolor++;
+ if (sc->ccolor >= bp->ncolors)
+ sc->ccolor = 0;
+ bp->hist_count++;
+ }
+}
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ if (bp->clear_p) /* we're in "no vapor trails" mode */
+ {
+ bp->hist_count = 0;
+ if (! (random() % (int) (25 / speed)))
+ bp->clear_p = False;
+ }
+ else
+ {
+ if (! (random() % (int) (200 / speed)))
+ {
+ bp->clear_p = True;
+ new_cube_colors (mi);
+ }
+ }
+
+ push_hist (mi);
+ mi->polygon_count = 0;
+ for (i = 0; i < bp->hist_count; i++)
+ {
+ GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat bshiny = 128.0;
+
+ histcube *hc = &bp->hist[i];
+
+ glPushMatrix();
+ glScalef (1.1, 1.1, 1.1);
+
+ glTranslatef((hc->px - 0.5) * 15,
+ (hc->py - 0.5) * 15,
+ (hc->pz - 0.5) * 30);
+ gltrackball_rotate (bp->trackball);
+
+ glScalef (4.0, 4.0, 4.0);
+
+ glRotatef (hc->rx * 360, 1.0, 0.0, 0.0);
+ glRotatef (hc->ry * 360, 0.0, 1.0, 0.0);
+ glRotatef (hc->rz * 360, 0.0, 0.0, 1.0);
+
+ bcolor[0] = bp->colors[hc->ccolor].red / 65536.0;
+ bcolor[1] = bp->colors[hc->ccolor].green / 65536.0;
+ bcolor[2] = bp->colors[hc->ccolor].blue / 65536.0;
+
+ if (wire)
+ glColor3f (bcolor[0], bcolor[1], bcolor[2]);
+ else
+ {
+ glMaterialfv (GL_FRONT, GL_SPECULAR, bspec);
+ glMateriali (GL_FRONT, GL_SHININESS, bshiny);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor);
+ }
+
+ glCallList (bp->cube_list);
+ mi->polygon_count += (4 * 2 * 6);
+
+ glPopMatrix();
+ }
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("CubeStorm", cubestorm, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/cubestorm.man b/hacks/glx/cubestorm.man
new file mode 100644
index 0000000..9d912fd
--- /dev/null
+++ b/hacks/glx/cubestorm.man
@@ -0,0 +1,77 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cubestorm - a series of 3D boxes that fill space
+.SH SYNOPSIS
+.B cubestorm
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fIfloat\fP]
+[\-count \fIint\fP]
+[\-thickness \fIfloat\fP]
+[\-no-wander]
+[\-no-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Draws a series of rotating 3D boxes that intersect each other and
+eventually fill space.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+Larger numbers mean run faster. Default: 1.0.
+.TP 8
+.B \-count \fInumber\fP
+Number of cubes. Default 4.
+.TP 8
+.B \-thickness \fIfloat\fP
+How thick the struts making up the cubes should be (0.0-1.0). Default 0.06.
+.TP 8
+.B \-wander | \-no-wander
+Whether the cubes should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the cubes should spin.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/cubetwist.c b/hacks/glx/cubetwist.c
new file mode 100644
index 0000000..61af287
--- /dev/null
+++ b/hacks/glx/cubetwist.c
@@ -0,0 +1,595 @@
+/* cubetwist, Copyright (c) 2016-2017 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define release_cube 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "normals.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "True"
+#define DEF_WANDER "True"
+#define DEF_SPEED "1.0"
+#define DEF_FLAT "True"
+#define DEF_THICKNESS "0.0"
+#define DEF_DISPLACEMENT "0.0"
+
+typedef struct cube cube;
+struct cube {
+ GLfloat size, thickness;
+ XYZ pos, rot;
+ GLfloat color[4];
+ cube *next;
+};
+
+typedef struct oscillator oscillator;
+struct oscillator {
+ double ratio, from, to, speed, *var;
+ int remaining;
+ oscillator *next;
+};
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ cube *cubes;
+ oscillator *oscillators;
+} cube_configuration;
+
+static cube_configuration *bps = NULL;
+
+static Bool do_flat;
+static Bool do_spin;
+static GLfloat speed;
+static GLfloat thickness;
+static GLfloat displacement;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-flat", ".flat", XrmoptionNoArg, "True" },
+ { "+flat", ".flat", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-thickness", ".thickness", XrmoptionSepArg, 0 },
+ { "-displacement", ".displacement", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&do_flat, "flat", "flat", DEF_FLAT, t_Bool},
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&thickness, "thickness", "Thickness", DEF_THICKNESS, t_Float},
+ {&displacement, "displacement", "Displacement", DEF_DISPLACEMENT, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt cube_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+static int
+draw_strut (ModeInfo *mi, cube *c)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+
+ glPushMatrix();
+ glFrontFace (GL_CW);
+ glNormal3f (0, 0, -1);
+ glTranslatef (-c->size/2, -c->size/2, -c->size/2);
+
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN);
+ glVertex3f (0, 0, 0);
+ glVertex3f (c->size, 0, 0);
+ glVertex3f (c->size - c->thickness, c->thickness, 0);
+ glVertex3f (c->thickness, c->thickness, 0);
+ glEnd();
+ polys += 2;
+
+ glNormal3f (0, 1, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_FAN);
+ glVertex3f (c->thickness, c->thickness, 0);
+ glVertex3f (c->size - c->thickness, c->thickness, 0);
+ glVertex3f (c->size - c->thickness, c->thickness, c->thickness);
+ glVertex3f (c->thickness, c->thickness, c->thickness);
+ glEnd();
+ polys += 2;
+ glPopMatrix();
+
+ return polys;
+}
+
+
+static int
+draw_cubes (ModeInfo *mi, cube *c)
+{
+ int polys = 0;
+ int i, j;
+
+ glColor4fv (c->color);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, c->color);
+
+ glPushMatrix();
+ for (j = 0; j < 6; j++)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ polys += draw_strut (mi, c);
+ glRotatef (90, 0, 0, 1);
+ }
+ if (j == 3)
+ glRotatef (90, 0, 0, 1);
+ if (j < 4)
+ glRotatef (90, 0, 1, 0);
+ else
+ glRotatef (180, 1, 0, 0);
+ }
+ glPopMatrix();
+
+ if (c->next)
+ {
+ /* This leaves rotations on the prevailing matrix stack, but since
+ this is a tail-call, that's fine. Don't blow the matrix stack. */
+ glRotatef (c->rot.x, 1, 0, 0);
+ glRotatef (c->rot.y, 0, 1, 0);
+ glRotatef (c->rot.z, 0, 0, 1);
+ glTranslatef (c->pos.x, c->pos.y, c->pos.z);
+ c->next->pos = c->pos;
+ c->next->rot = c->rot;
+ polys += draw_cubes (mi, c->next);
+ }
+
+ check_gl_error("cubetwist");
+ return polys;
+}
+
+
+static void
+make_cubes (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat step = 2 * (thickness + displacement);
+ GLfloat size = 1.0;
+ cube *tail = 0;
+ GLfloat cc[4], cstep;
+ int depth = 0;
+ cube *c;
+
+ cc[0] = 0.3 + frand(0.7);
+ cc[1] = 0.3 + frand(0.7);
+ cc[2] = 0.3 + frand(0.7);
+ cc[3] = 1;
+
+ if (bp->cubes) abort();
+ while (1)
+ {
+ cube *c = (cube *) calloc (1, sizeof (*c));
+ c->size = size;
+ c->thickness = thickness;
+ if (tail)
+ tail->next = c;
+ else
+ bp->cubes = c;
+ tail = c;
+
+ depth++;
+ size -= step;
+ if (size <= step)
+ break;
+ }
+
+ cstep = 0.8 / depth;
+ for (c = bp->cubes; c; c = c->next)
+ {
+ memcpy (c->color, cc, sizeof(cc));
+ cc[0] -= cstep;
+ cc[1] -= cstep;
+ cc[2] -= cstep;
+ }
+}
+
+
+static GLfloat
+ease_fn (GLfloat r)
+{
+ return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
+
+
+static GLfloat
+ease_ratio (GLfloat r)
+{
+ GLfloat ease = 0.5;
+ if (r <= 0) return 0;
+ else if (r >= 1) return 1;
+ else if (r <= ease) return ease * ease_fn (r / ease);
+ else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+ else return r;
+}
+
+
+static void
+tick_oscillators (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ oscillator *prev = 0;
+ oscillator *a = bp->oscillators;
+ GLfloat tick = 0.1 / speed;
+
+ while (a)
+ {
+ oscillator *next = a->next;
+ a->ratio += tick * a->speed;
+ if (a->ratio > 1)
+ a->ratio = 1;
+
+ *a->var = a->from + (a->to - a->from) * ease_ratio (a->ratio);
+
+ if (a->ratio < 1) /* mid cycle */
+ prev = a;
+ else if (--a->remaining <= 0) /* ended, and expired */
+ {
+ if (prev)
+ prev->next = next;
+ else
+ bp->oscillators = next;
+ free (a);
+ }
+ else /* keep going the other way */
+ {
+ GLfloat swap = a->from;
+ a->from = a->to;
+ a->to = swap;
+ a->ratio = 0;
+ prev = a;
+ }
+
+ a = next;
+ }
+}
+
+
+static void
+add_oscillator (ModeInfo *mi, double *var, GLfloat speed, GLfloat to,
+ int repeat)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ oscillator *a;
+
+ /* If an oscillator is already running on this variable, don't
+ add another. */
+ for (a = bp->oscillators; a && a->next; a = a->next)
+ if (a->var == var)
+ return;
+
+ a = (oscillator *) calloc (1, sizeof (*a));
+ if (repeat <= 0) abort();
+ a->ratio = 0;
+ a->from = *var;
+ a->to = to;
+ a->speed = speed;
+ a->var = var;
+ a->remaining = repeat;
+ a->next = bp->oscillators;
+ bp->oscillators = a;
+# if 0
+ fprintf (stderr, "%s: %3d %6.2f -> %6.2f %s\n",
+ progname, repeat, *var, to,
+ (var == &bp->midpoint.z ? "z" :
+ var == &bp->tilt ? "tilt" :
+ var == &bp->axial_radius ? "r" :
+ var == &bp->speed ? "speed" : "?"));
+# endif
+}
+
+
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+static void
+add_random_oscillator (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ cube *c = bp->cubes;
+ double s1 = speed * 0.07;
+ double s2 = speed * 0.3;
+ double disp = (thickness + displacement);
+ int c1 = 1 + ((random() % 4) ? 0 : (random() % 3));
+ int c2 = 2;
+ int n = random() % 6;
+
+ switch (n) {
+ case 0: add_oscillator (mi, &c->rot.x, s1, 90 * RANDSIGN(), c1); break;
+ case 1: add_oscillator (mi, &c->rot.y, s1, 90 * RANDSIGN(), c1); break;
+ case 2: add_oscillator (mi, &c->rot.z, s1, 90 * RANDSIGN(), c1); break;
+ case 3: add_oscillator (mi, &c->pos.x, s2, disp * RANDSIGN(), c2); break;
+ case 4: add_oscillator (mi, &c->pos.y, s2, disp * RANDSIGN(), c2); break;
+ case 5: add_oscillator (mi, &c->pos.z, s2, disp * RANDSIGN(), c2); break;
+ default: abort(); break;
+ }
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_cube (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+cube_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ if (c == ' ' || c == '\t')
+ {
+ while (bp->cubes)
+ {
+ cube *c = bp->cubes->next;
+ free (bp->cubes);
+ bp->cubes = c;
+ }
+
+ while (bp->oscillators)
+ {
+ oscillator *o = bp->oscillators->next;
+ free (bp->oscillators);
+ bp->oscillators = o;
+ }
+
+ if (random() & 1)
+ {
+ thickness = 0.03 + frand(0.02);
+ displacement = (random() & 1) ? 0 : (thickness / 3);
+ }
+ else
+ {
+ thickness = 0.001 + frand(0.02);
+ displacement = 0;
+ }
+
+ make_cubes (mi);
+
+ return True;
+ }
+ }
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_cube (ModeInfo *mi)
+{
+ cube_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ if (!wire && !do_flat)
+ {
+ GLfloat color[4] = {1, 1, 1, 1};
+ GLfloat cspec[4] = {1, 1, 0, 1};
+ static const GLfloat shiny = 30;
+
+ static GLfloat pos0[4] = { 0.5, -1, -0.5, 0};
+ static GLfloat pos1[4] = {-0.75, -1, 0, 0};
+ static GLfloat amb[4] = {0, 0, 0, 1};
+ static GLfloat dif[4] = {1, 1, 1, 1};
+ static GLfloat spc[4] = {1, 1, 1, 1};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos0);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+
+ glLightfv(GL_LIGHT1, GL_POSITION, pos1);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT1, GL_SPECULAR, spc);
+
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT, GL_SPECULAR, cspec);
+ glMateriali (GL_FRONT, GL_SHININESS, shiny);
+ }
+
+ {
+ double spin_speed = 0.05;
+ double wander_speed = 0.005;
+ double spin_accel = 1.0;
+
+ bp->rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ True);
+ bp->trackball = gltrackball_init (True);
+ }
+
+ if (thickness > 0.5)
+ thickness = 0.5;
+ if (displacement > 0.5)
+ displacement = 0.5;
+
+ if (thickness <= 0.0001)
+ {
+ if (random() & 1)
+ {
+ thickness = 0.03 + frand(0.02);
+ displacement = (random() & 1) ? 0 : (thickness / 3);
+ }
+ else
+ {
+ thickness = 0.001 + frand(0.02);
+ displacement = 0;
+ }
+ }
+
+ make_cubes (mi);
+}
+
+
+ENTRYPOINT void
+draw_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glScalef(1.1, 1.1, 1.1);
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 4,
+ (y - 0.5) * 4,
+ (z - 0.5) * 2);
+
+ gltrackball_rotate (bp->trackball);
+
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ mi->polygon_count = 0;
+
+ glScalef (6, 6, 6);
+
+ mi->polygon_count = draw_cubes (mi, bp->cubes);
+ glPopMatrix ();
+
+ if (!bp->button_down_p)
+ tick_oscillators (mi);
+
+ if (! bp->oscillators &&
+ !bp->button_down_p &&
+ !(random() % 60))
+ {
+ bp->cubes->pos.x = bp->cubes->pos.y = bp->cubes->pos.z = 0;
+ bp->cubes->rot.x = bp->cubes->rot.y = bp->cubes->rot.z = 0;
+ add_random_oscillator (mi);
+ }
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ while (bp->cubes)
+ {
+ cube *c = bp->cubes->next;
+ free (bp->cubes);
+ bp->cubes = c;
+ }
+
+ while (bp->oscillators)
+ {
+ oscillator *o = bp->oscillators->next;
+ free (bp->oscillators);
+ bp->oscillators = o;
+ }
+}
+
+
+XSCREENSAVER_MODULE_2 ("CubeTwist", cubetwist, cube)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/cubetwist.man b/hacks/glx/cubetwist.man
new file mode 100644
index 0000000..3a6574b
--- /dev/null
+++ b/hacks/glx/cubetwist.man
@@ -0,0 +1,80 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+cubetwist - A series of nested cubes rotate and slide recursively.
+.SH SYNOPSIS
+.B cubetwist
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-thickness \fInumber\fP]
+[\-displacement \fInumber\fP]
+[\-no-flat]
+[\-no-wander]
+[\-no-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+A series of nested cubes rotate and slide recursively.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-thickness \fInumber\fP
+Thickness of the cube edges. 0.005 - 0.2. Default: 0.05.
+.TP 8
+.B \-displacement \fInumber\fP
+Displacement between nested cubes. 0.0 - 0.2. Default: 0.01.
+.TP 8
+.B \-flat | \-no-flat
+Whether to use flat shading, or lighting. Default flat.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/cubicgrid.c b/hacks/glx/cubicgrid.c
new file mode 100644
index 0000000..34b6c34
--- /dev/null
+++ b/hacks/glx/cubicgrid.c
@@ -0,0 +1,269 @@
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * Cubic Grid - a 3D lattice. The observer is located in the centre of
+ * a spinning finite lattice. As it rotates, various view-throughs appear and
+ * evolve. A simple idea with interesting results.
+ *
+ * Vasek Potocek (Dec-28-2007)
+ * vasek.potocek@post.cz
+ */
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_cubicgrid 0
+# define release_cubicgrid 0
+#include "xlockmore.h"
+
+#ifdef USE_GL
+
+#define DEF_SPEED "1.0"
+#define DEF_DIV "30"
+#define DEF_ZOOM "20"
+#define DEF_BIGDOTS "True"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "rotator.h"
+#include "gltrackball.h"
+
+/*************************************************************************/
+
+static int ticks;
+static float size;
+static float speed;
+static Bool bigdots;
+
+static argtype vars[] = {
+ { &speed, "speed", "Speed", DEF_SPEED, t_Float },
+ { &size, "zoom", "Zoom", DEF_ZOOM, t_Float },
+ { &ticks, "ticks", "Ticks", DEF_DIV, t_Int },
+ { &bigdots, "bigdots", "BigDots", DEF_BIGDOTS, t_Bool },
+};
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-zoom", ".zoom", XrmoptionSepArg, 0 },
+ { "-ticks", ".ticks", XrmoptionSepArg, 0 },
+ { "-bigdots", ".bigdots", XrmoptionNoArg, "True" },
+ { "+bigdots", ".bigdots", XrmoptionNoArg, "False" },
+};
+
+ENTRYPOINT ModeSpecOpt cubicgrid_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct cubicgrid_description =
+{ "cubicgrid", "init_cubicgrid", "draw_cubicgrid", NULL,
+ "draw_cubicgrid", "change_cubicgrid", NULL, &cubicgrid_opts,
+ 25000, 1, 1, 1, 1.0, 4, "",
+ "Shows a rotating 3D lattice from inside", 0, NULL
+};
+#endif
+
+typedef struct {
+ GLXContext *glx_context;
+ GLfloat ratio;
+ GLint list;
+
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ int npoints;
+} cubicgrid_conf;
+
+static cubicgrid_conf *cubicgrid = NULL;
+
+static const GLfloat zpos = -18.0;
+
+/*************************************************************************/
+
+ENTRYPOINT Bool
+cubicgrid_handle_event (ModeInfo *mi, XEvent *event)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, cp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+static Bool draw_main(ModeInfo *mi)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+ double x, y, z;
+
+ glClear(GL_COLOR_BUFFER_BIT);
+ glLoadIdentity();
+
+ glRotatef (180, 1, 0, 0); /* Make trackball track the right way */
+ glRotatef (180, 0, 1, 0);
+
+ glTranslatef(0, 0, zpos);
+
+ glScalef(size/ticks, size/ticks, size/ticks);
+
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1);
+ }
+# endif
+
+ gltrackball_rotate (cp->trackball);
+
+ get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p);
+ glRotatef (-x * 360, 1.0, 0.0, 0.0);
+ glRotatef (-y * 360, 0.0, 1.0, 0.0);
+ glRotatef (-z * 360, 0.0, 0.0, 1.0);
+
+ glTranslatef(-ticks/2.0, -ticks/2.0, -ticks/2.0);
+ glCallList(cp->list);
+ return True;
+}
+
+static void init_gl(ModeInfo *mi)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+ int x, y, z;
+ float tf = ticks;
+
+ glDrawBuffer(GL_BACK);
+ if(bigdots) {
+ glPointSize(2.0);
+ }
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glShadeModel(GL_FLAT);
+
+ cp->list = glGenLists(1);
+ glNewList(cp->list, GL_COMPILE);
+ if(MI_IS_MONO(mi)) {
+ glColor3f(1.0, 1.0, 1.0);
+ glBegin(GL_POINTS);
+ for(x = 0; x < ticks; x++) {
+ for(y = 0; y < ticks; y++) {
+ for(z = 0; z < ticks; z++) {
+ glVertex3f(x, y, z);
+ cp->npoints++;
+ }
+ }
+ }
+ glEnd();
+ }
+ else
+ {
+ glBegin(GL_POINTS);
+ for(x = 0; x < ticks; x++) {
+ for(y = 0; y < ticks; y++) {
+ for(z = 0; z < ticks; z++) {
+ glColor3f(x/tf, y/tf, z/tf);
+ glVertex3f(x, y, z);
+ cp->npoints++;
+ }
+ }
+ }
+ glEnd();
+ }
+ glEndList();
+}
+
+/*************************************************************************/
+
+ENTRYPOINT void reshape_cubicgrid(ModeInfo *mi, int width, int height)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+ int y = 0;
+ if(!height) height = 1;
+ cp->ratio = (GLfloat)width/(GLfloat)height;
+
+ if (width > height * 3) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ cp->ratio = (GLfloat)width/(GLfloat)height;
+ }
+
+ glViewport(0, y, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(30.0, cp->ratio, 1.0, 100.0);
+ glMatrixMode(GL_MODELVIEW);
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+ENTRYPOINT void init_cubicgrid(ModeInfo *mi)
+{
+ cubicgrid_conf *cp;
+ MI_INIT(mi, cubicgrid);
+ cp = &cubicgrid[MI_SCREEN(mi)];
+
+ if ((cp->glx_context = init_GL(mi)) != NULL) {
+ init_gl(mi);
+ reshape_cubicgrid(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+
+ {
+ double spin_speed = 0.045 * speed;
+ double spin_accel = 0.005 * speed;
+
+ cp->rot = make_rotator (spin_speed, spin_speed, spin_speed,
+ spin_accel, 0, True);
+ cp->trackball = gltrackball_init (True);
+ }
+}
+
+ENTRYPOINT void draw_cubicgrid(ModeInfo * mi)
+{
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ cubicgrid_conf *cp;
+ if (!cubicgrid) return;
+ cp = &cubicgrid[MI_SCREEN(mi)];
+ MI_IS_DRAWN(mi) = True;
+ if (!cp->glx_context) return;
+ glXMakeCurrent(display, window, *(cp->glx_context));
+ if (!draw_main(mi)) {
+ MI_ABORT(mi);
+ return;
+ }
+ mi->polygon_count = cp->npoints;
+ if (MI_IS_FPS(mi)) do_fps (mi);
+ glFlush();
+ glXSwapBuffers(display, window);
+}
+
+#ifndef STANDALONE
+ENTRYPOINT void change_cubicgrid(ModeInfo * mi)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+ if (!cp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ init_gl(mi);
+}
+#endif /* !STANDALONE */
+
+
+XSCREENSAVER_MODULE ("CubicGrid", cubicgrid)
+
+#endif
diff --git a/hacks/glx/cubicgrid.man b/hacks/glx/cubicgrid.man
new file mode 100644
index 0000000..d267bc3
--- /dev/null
+++ b/hacks/glx/cubicgrid.man
@@ -0,0 +1,83 @@
+.TH XScreenSaver 1 "Dec-28-07" "X Version 11"
+.SH NAME
+cubicgrid - rotating 3D lattice seen from inside
+.SH SYNOPSIS
+.B cubicgrid
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-delay \fImicroseconds\fP]
+[\-mono]
+[\-speed \fInumber\fP]
+[\-zoom \fInumber\fP]
+[\-ticks \fInumber\fP]
+[\-bigdots]
+[\-fps]
+.SH DESCRIPTION
+This program shows the view of an observer located inside a set of points
+arranged to a 3D lattice. As the lattice rotates, various view-throughs appear
+and evolve. A simple idea with interesting results.
+.SH OPTIONS
+.I cubicgrid
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How long to pause between frames. Default is 20000, or 0.02 second.
+.TP 8
+.B \-mono
+Draw in black and white. If not used, a fixed all-color scheme is chosen.
+.TP 8
+.B \-speed \fInumber\fP
+The maximum speed of the rotation. The actual speed and axis change smoothly
+for better effect. 0.5 - 10. The default is 1.0.
+.TP 8
+.B \-zoom \fInumber\fP
+Size of the lattice. Ideally it should fill all the screen, but one may find
+other values also interesting. 5 - 50. The default of 20 should do for common
+screen aspect ratios.
+.TP 8
+.B \-ticks \fInumber\fP
+The count of points drawn along every axis. 10 - 100. The default is 30.
+.TP 8
+.B \-bigdots
+Draw the points twice as big.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2007 by Vasek Potocek. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear in
+all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Vasek Potocek , Dec-28-07.
diff --git a/hacks/glx/curlicue.h b/hacks/glx/curlicue.h
new file mode 100644
index 0000000..0963d6e
--- /dev/null
+++ b/hacks/glx/curlicue.h
@@ -0,0 +1,261 @@
+/* curlicue.h --- A texture map containing a "curlicue" */
+
+#define TEX_DIMENSION 64
+static const unsigned char texture[TEX_DIMENSION*TEX_DIMENSION] = {
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 58, 43, 43, 43, 43, 45, 70, 70, 70,
+ 70, 70, 70, 70, 74, 98, 98, 98,100,194,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 30,186,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1,111,244,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 43,198,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5,123,248,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 50,209,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,246,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 74,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,138, 4,
+ 66,229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,153, 0, 0,
+ 0, 53,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6,188,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,213, 7, 0, 0,
+ 0, 0,226,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 0, 0, 0, 0, 47, 0, 0,
+ 0, 0, 22,225,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,254, 54, 0, 0, 0,
+ 0, 81,254,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 0, 0, 0, 56,247, 82, 0,
+ 0, 0, 0, 59,253,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,152, 0, 0, 0, 0,
+ 52,243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 0, 0, 8,215,255,250, 56,
+ 0, 0, 0, 0,142,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,241, 19, 0, 0, 0, 15,
+ 220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 0, 0,129,255,255,255,230,
+ 23, 0, 0, 0, 12,230,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,131, 0, 0, 0, 0,157,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 0, 49,250,255,255,255,255,
+ 171, 0, 0, 0, 0,112,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,246, 19, 0, 0, 0, 54,253,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0, 5,208,255,255,255,255,255,
+ 255, 77, 0, 0, 0, 9,231,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,163, 0, 0, 0, 0,186,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 0,121,255,255,255,255,255,255,
+ 255,211, 2, 0, 0, 0,134,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255, 69, 0, 0, 0, 50,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 45, 41,247,255,255,255,255,255,255,
+ 255,255, 73, 0, 0, 0, 38,254,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,237, 4, 0, 0, 0,145,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255, 52,201,255,255,255,255,255,255,255,
+ 255,255,169, 0, 0, 0, 0,216,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,181, 0, 0, 0, 0,229,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,186,255,255,255,255,255,255,255,255,
+ 255,255,247, 7, 0, 0, 0,150,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,130, 0, 0, 0, 42,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255, 67, 0, 0, 0, 91,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 79, 0, 0, 0, 95,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,120, 0, 0, 0, 56,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 55, 0, 0, 0,130,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,157, 0, 0, 0, 21,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 34, 0, 0, 0,161,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,179, 0, 0, 0, 2,250,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 27, 0, 0, 0,168,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,200, 0, 0, 0, 0,249,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 27, 0, 0, 0,168,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,200, 0, 0, 0, 0,249,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 27, 0, 0, 0,163,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,183, 0, 0, 0, 0,249,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 42, 0, 0, 0,135,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,161, 0, 0, 0, 17,254,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255, 76, 0, 0, 0,100,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,126, 0, 0, 0, 48,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,114, 0, 0, 0, 53,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255, 78, 0, 0, 0, 84,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,165, 0, 0, 0, 3,241,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,252, 16, 0, 0, 0,139,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,228, 0, 0, 0, 0,161,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,192, 0, 0, 0, 0,198,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255, 46, 0, 0, 0, 67,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255, 93, 0, 0, 0, 21,250,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,139, 0, 0, 0, 1,211,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,226, 7, 0, 0, 0,108,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,230, 6, 0, 0, 0, 79,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,106, 0, 0, 0, 1,206,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255, 97, 0, 0, 0, 0,183,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 202, 3, 0, 0, 0, 67,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,221, 8, 0, 0, 0, 27,
+ 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,243,
+ 40, 0, 0, 0, 0,198,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,126, 0, 0, 0, 0,
+ 71,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,253, 85,
+ 0, 0, 0, 0, 96,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,247, 44, 0, 0, 0,
+ 0, 91,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,116, 0,
+ 0, 0, 0, 25,233,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,216, 11, 0, 0,
+ 0, 0, 90,251,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,252,112, 0, 0,
+ 0, 0, 4,191,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,174, 4, 0,
+ 0, 0, 0, 72,235,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,242, 84, 0, 0, 0,
+ 0, 0,146,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,150, 1,
+ 0, 0, 0, 0, 27,181,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,194, 39, 0, 0, 0, 0,
+ 0,120,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,
+ 4, 0, 0, 0, 0, 0, 77,209,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,216, 92, 1, 0, 0, 0, 0, 0,
+ 125,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 175, 12, 0, 0, 0, 0, 0, 1, 70,164,241,255,255,255,255,255,
+ 255,255,255,255,255,242,171, 77, 2, 0, 0, 0, 0, 0, 4,150,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,214, 41, 0, 0, 0, 0, 0, 0, 0, 4, 48, 98,138,163,163,
+ 163,163,140,103, 55, 5, 0, 0, 0, 0, 0, 0, 0, 30,199,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,245,125, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,105,240,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,222,100, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 83,210,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,228,136, 45, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 37,125,220,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,225,166,112, 74, 43, 32, 12,
+ 8, 32, 40, 71,105,162,218,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+};
diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c
new file mode 100644
index 0000000..e40ccc5
--- /dev/null
+++ b/hacks/glx/dangerball.c
@@ -0,0 +1,364 @@
+/* dangerball, Copyright (c) 2001-2017 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 30 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_ball 0
+# define release_ball 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "sphere.h"
+#include "tube.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "True"
+#define DEF_WANDER "True"
+#define DEF_SPEED "0.05"
+
+#define SPIKE_FACES 12 /* how densely to render spikes */
+#define SMOOTH_SPIKES True
+#define SPHERE_SLICES 32 /* how densely to render spheres */
+#define SPHERE_STACKS 16
+
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLuint ball_list;
+ GLuint spike_list;
+
+ GLfloat pos;
+ int *spikes;
+
+ int ncolors;
+ XColor *colors;
+ int ccolor;
+ int color_shift;
+
+} ball_configuration;
+
+static ball_configuration *bps = NULL;
+
+static Bool do_spin;
+static GLfloat speed;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" }
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_ball (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+static void
+randomize_spikes (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ bp->pos = 0;
+ for (i = 0; i < MI_COUNT(mi); i++)
+ {
+ bp->spikes[i*2] = (random() % 360) - 180;
+ bp->spikes[i*2+1] = (random() % 180) - 90;
+ }
+
+# define ROT_SCALE 22
+ for (i = 0; i < MI_COUNT(mi) * 2; i++)
+ bp->spikes[i] = (bp->spikes[i] / ROT_SCALE) * ROT_SCALE;
+
+ if ((random() % 3) == 0)
+ bp->color_shift = random() % (bp->ncolors / 2);
+ else
+ bp->color_shift = 0;
+}
+
+static void
+draw_spikes (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat diam = 0.2;
+ GLfloat pos = bp->pos;
+ int i;
+
+ if (pos < 0) pos = -pos;
+
+ pos = (asin (0.5 + pos/2) - 0.5) * 2;
+
+ for (i = 0; i < MI_COUNT(mi); i++)
+ {
+ glPushMatrix();
+ glRotatef(bp->spikes[i*2], 0, 1, 0);
+ glRotatef(bp->spikes[i*2+1], 0, 0, 1);
+ glTranslatef(0.7, 0, 0);
+ glRotatef(-90, 0, 0, 1);
+ glScalef (diam, pos, diam);
+ glCallList (bp->spike_list);
+ glPopMatrix();
+
+ mi->polygon_count += (SPIKE_FACES + 1);
+ }
+}
+
+
+static void
+move_spikes (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (bp->pos >= 0) /* moving outward */
+ {
+ bp->pos += speed;
+ if (bp->pos >= 1) /* reverse gears at apex */
+ bp->pos = -1;
+ }
+ else /* moving inward */
+ {
+ bp->pos += speed;
+ if (bp->pos >= 0) /* stop at end */
+ randomize_spikes (mi);
+ }
+}
+
+
+ENTRYPOINT Bool
+ball_handle_event (ModeInfo *mi, XEvent *event)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_ball (ModeInfo *mi)
+{
+ ball_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, bps);
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0};
+ GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ {
+ double spin_speed = 10.0;
+ double wander_speed = 0.12;
+ double spin_accel = 2.0;
+
+ bp->rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ True);
+ bp->trackball = gltrackball_init (True);
+ }
+
+ bp->ncolors = 128;
+ bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor));
+ make_smooth_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+
+ bp->spikes = (int *) calloc(MI_COUNT(mi), sizeof(*bp->spikes) * 2);
+
+ bp->ball_list = glGenLists (1);
+ bp->spike_list = glGenLists (1);
+
+ glNewList (bp->ball_list, GL_COMPILE);
+ unit_sphere (SPHERE_STACKS, SPHERE_SLICES, wire);
+ glEndList ();
+
+ glNewList (bp->spike_list, GL_COMPILE);
+ cone (0, 0, 0,
+ 0, 1, 0,
+ 1, 0, SPIKE_FACES, SMOOTH_SPIKES, False, wire);
+ glEndList ();
+
+ randomize_spikes (mi);
+}
+
+
+ENTRYPOINT void
+draw_ball (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int c2;
+
+ static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0};
+ static const GLfloat sspec[4] = {0.0, 0.0, 0.0, 1.0};
+ static const GLfloat bshiny = 128.0;
+ static const GLfloat sshiny = 0.0;
+
+ GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat scolor[4] = {0.0, 0.0, 0.0, 1.0};
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glScalef(1.1, 1.1, 1.1);
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 8,
+ (y - 0.5) * 8,
+ (z - 0.5) * 15);
+
+ gltrackball_rotate (bp->trackball);
+
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ bcolor[0] = bp->colors[bp->ccolor].red / 65536.0;
+ bcolor[1] = bp->colors[bp->ccolor].green / 65536.0;
+ bcolor[2] = bp->colors[bp->ccolor].blue / 65536.0;
+
+ c2 = (bp->ccolor + bp->color_shift) % bp->ncolors;
+ scolor[0] = bp->colors[c2].red / 65536.0;
+ scolor[1] = bp->colors[c2].green / 65536.0;
+ scolor[2] = bp->colors[c2].blue / 65536.0;
+
+ bp->ccolor++;
+ if (bp->ccolor >= bp->ncolors) bp->ccolor = 0;
+
+ mi->polygon_count = 0;
+
+ glScalef (2.0, 2.0, 2.0);
+
+ move_spikes (mi);
+
+ glMaterialfv (GL_FRONT, GL_SPECULAR, bspec);
+ glMateriali (GL_FRONT, GL_SHININESS, bshiny);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor);
+ glCallList (bp->ball_list);
+ mi->polygon_count += (SPHERE_SLICES * SPHERE_STACKS);
+
+ glMaterialfv (GL_FRONT, GL_SPECULAR, sspec);
+ glMaterialf (GL_FRONT, GL_SHININESS, sshiny);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, scolor);
+ draw_spikes (mi);
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("DangerBall", dangerball, ball)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/dangerball.man b/hacks/glx/dangerball.man
new file mode 100644
index 0000000..3e33f82
--- /dev/null
+++ b/hacks/glx/dangerball.man
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+dangerball - a 3D ball that periodically extrudes spikes. Ouch!
+.SH SYNOPSIS
+.B dangerball
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-wander]
+[\-no-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Draws a ball that periodically extrudes many random spikes. Ouch!
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+Spike growth frequency. 0.0 - 0.25. Default: 0.05.
+.TP 8
+.B \-count \fInumber\fP
+Number o spikes. Default: 30.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/discoball.c b/hacks/glx/discoball.c
new file mode 100644
index 0000000..4085c56
--- /dev/null
+++ b/hacks/glx/discoball.c
@@ -0,0 +1,707 @@
+/* discoball, Copyright (c) 2016 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 30 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define release_ball 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "normals.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPIN "False"
+#define DEF_WANDER "True"
+#define DEF_SPEED "1.0"
+
+typedef struct tile tile;
+struct tile {
+ XYZ position, normal;
+ GLfloat size, tilt;
+ tile *next;
+};
+
+
+typedef struct {
+ XYZ normal;
+ GLfloat color[4];
+} ray;
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ GLfloat th;
+ trackball_state *trackball;
+ Bool button_down_p;
+ tile *tiles;
+ int nrays;
+ ray *rays;
+} ball_configuration;
+
+static ball_configuration *bps = NULL;
+
+static Bool do_spin;
+static GLfloat speed;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" }
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt ball_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+static XYZ
+normalize (XYZ p)
+{
+ GLfloat d = sqrt(p.x*p.x + p.y*p.y * p.z*p.z);
+ if (d < 0.0000001)
+ p.x = p.y = p.z = 0;
+ else
+ {
+ p.x /= d;
+ p.y /= d;
+ p.z /= d;
+ }
+
+ return p;
+}
+
+
+static void
+build_texture (ModeInfo *mi)
+{
+ int x, y;
+ int size = 128;
+ int bpl = size * 2;
+ unsigned char *data = malloc (bpl * size);
+
+ for (y = 0; y < size; y++)
+ {
+ for (x = 0; x < size; x++)
+ {
+ unsigned char *c = &data [y * bpl + x * 2];
+ GLfloat X = (x / (GLfloat) (size-1)) - 0.5;
+ GLfloat Y = (y / (GLfloat) (size-1)) - 0.5;
+ X = cos (X * X * 6.2);
+ Y = cos (Y * Y * 6.2);
+ X = X < Y ? X : Y;
+ X *= 0.4;
+ c[0] = 0xFF;
+ c[1] = 0xFF * X;
+ }
+ }
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
+ check_gl_error ("texture param");
+
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, size, size, 0,
+ GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
+ check_gl_error ("light texture");
+ free (data);
+}
+
+
+static int
+draw_rays (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+ int i;
+
+ glEnable (GL_TEXTURE_2D);
+ glDisable (GL_LIGHTING);
+ glEnable (GL_BLEND);
+ glDisable (GL_DEPTH_TEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE);
+
+ for (i = 0; i < bp->nrays; i++)
+ {
+ GLfloat x = bp->rays[i].normal.x;
+ GLfloat y = bp->rays[i].normal.y;
+ GLfloat z = bp->rays[i].normal.z;
+ glPushMatrix();
+
+ /* Orient to direction of ray. */
+ glRotatef (-atan2 (x, y) * (180 / M_PI), 0, 0, 1);
+ glRotatef ( atan2 (z, sqrt(x*x + y*y)) * (180 / M_PI), 1, 0, 0);
+
+ glScalef (5, 5, 10);
+ glTranslatef(0, 0, 1.1);
+ glColor4fv (bp->rays[i].color);
+ glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
+ glTexCoord2f (0, 0); glVertex3f (-0.5, 0, -1);
+ glTexCoord2f (1, 0); glVertex3f ( 0.5, 0, -1);
+ glTexCoord2f (1, 1); glVertex3f ( 0.5, 0, 1);
+ glTexCoord2f (0, 1); glVertex3f (-0.5, 0, 1);
+ glEnd();
+ polys++;
+ glPopMatrix();
+ }
+
+ glDisable (GL_TEXTURE_2D);
+ glEnable (GL_LIGHTING);
+ glDisable (GL_BLEND);
+ glEnable (GL_DEPTH_TEST);
+ glDisable (GL_FOG);
+
+ return polys;
+}
+
+
+static int
+draw_ball_1 (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+ tile *t;
+ GLfloat m[4][4];
+
+ glGetFloatv (GL_MODELVIEW_MATRIX, &m[0][0]);
+
+ glFrontFace (GL_CW);
+
+#if 0
+ /* Draw the back rays.
+ */
+ if (! wire)
+ {
+ glPushMatrix();
+ glLoadIdentity();
+ glMultMatrixf (&m[0][0]);
+ glTranslatef(0, 0, -4.1);
+ glRotatef (bp->th, 0, 0, 1);
+ polys += draw_rays (mi);
+ glPopMatrix();
+ }
+ glClear(GL_DEPTH_BUFFER_BIT);
+#endif
+
+
+ /* Instead of rendering polygons for the foam ball substrate, let's
+ just billboard a quad down the middle to mask out the back-facing
+ tiles. */
+ {
+ glPushMatrix();
+ m[0][0] = 1; m[1][0] = 0; m[2][0] = 0;
+ m[0][1] = 0; m[1][1] = 1; m[2][1] = 0;
+ m[0][2] = 0; m[1][2] = 0; m[2][2] = 1;
+ glLoadIdentity();
+ glMultMatrixf (&m[0][0]);
+ glScalef (40, 40, 40);
+ glTranslatef (-0.5, -0.5, -0.01);
+ if (! wire)
+ glDisable (GL_LIGHTING);
+ /* Draw into the depth buffer but not the frame buffer */
+ glColorMask (GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ glColor3f (0, 0, 0);
+ glBegin (GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glEnd();
+ polys++;
+ glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ if (! wire)
+ glEnable (GL_LIGHTING);
+ glPopMatrix();
+ glColor3f (1, 1, 1);
+ }
+
+ /* Draw all the tiles.
+ */
+ for (t = bp->tiles; t; t = t->next)
+ {
+ GLfloat x = t->normal.x;
+ GLfloat y = t->normal.y;
+ GLfloat z = t->normal.z;
+ GLfloat s = t->size / 2;
+ glPushMatrix();
+
+ /* Move to location of tile. */
+ glTranslatef (t->position.x, t->position.y, t->position.z);
+
+ /* Orient to direction tile is facing. */
+ glRotatef (-atan2 (x, y) * (180 / M_PI), 0, 0, 1);
+ glRotatef ( atan2 (z, sqrt(x*x + y*y)) * (180 / M_PI), 1, 0, 0);
+
+ glRotatef (t->tilt, 0, 1, 0);
+
+ glScalef (s, s, s);
+ glNormal3f (0, 1, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-1, 0, -1);
+ glVertex3f ( 1, 0, -1);
+ glVertex3f ( 1, 0, 1);
+ glVertex3f (-1, 0, 1);
+ glEnd();
+ polys++;
+
+ if (! wire)
+ {
+ GLfloat d = 0.2;
+ glNormal3f (0, 0, -1);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-1, 0, -1);
+ glVertex3f (-1, -d, -1);
+ glVertex3f ( 1, -d, -1);
+ glVertex3f ( 1, 0, -1);
+ glEnd();
+ polys++;
+
+ glNormal3f (0, 0, 1);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f ( 1, 0, 1);
+ glVertex3f ( 1, -d, 1);
+ glVertex3f (-1, -d, 1);
+ glVertex3f (-1, 0, 1);
+ glEnd();
+ polys++;
+
+ glNormal3f (1, 0, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f ( 1, 0, -1);
+ glVertex3f ( 1, -d, -1);
+ glVertex3f ( 1, -d, 1);
+ glVertex3f ( 1, 0, 1);
+ glEnd();
+ polys++;
+
+ glNormal3f (-1, 0, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-1, 0, 1);
+ glVertex3f (-1, -d, 1);
+ glVertex3f (-1, -d, -1);
+ glVertex3f (-1, 0, -1);
+ glEnd();
+ polys++;
+ }
+
+ glPopMatrix();
+ }
+
+ /* Draw the front rays.
+ */
+ if (! wire)
+ {
+ glPushMatrix();
+ glLoadIdentity();
+ glMultMatrixf (&m[0][0]);
+ glTranslatef(0, 0, 4.1);
+ glRotatef (-bp->th, 0, 0, 1);
+ polys += draw_rays (mi);
+ glPopMatrix();
+ }
+
+ return polys;
+}
+
+
+static GLfloat
+vector_angle (XYZ a, XYZ b)
+{
+ double La = sqrt (a.x*a.x + a.y*a.y + a.z*a.z);
+ double Lb = sqrt (b.x*b.x + b.y*b.y + b.z*b.z);
+ double cc, angle;
+
+ if (La == 0 || Lb == 0) return 0;
+ if (a.x == b.x && a.y == b.y && a.z == b.z) return 0;
+
+ /* dot product of two vectors is defined as:
+ La * Lb * cos(angle between vectors)
+ and is also defined as:
+ ax*bx + ay*by + az*bz
+ so:
+ La * Lb * cos(angle) = ax*bx + ay*by + az*bz
+ cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb)
+ angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb));
+ */
+ cc = (a.x*b.x + a.y*b.y + a.z*b.z) / (La * Lb);
+ if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */
+ angle = acos (cc);
+
+ return (angle);
+}
+
+
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+
+static void
+build_ball (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ int rows = MI_COUNT (mi);
+
+ GLfloat tile_size = M_PI / rows;
+ GLfloat th0, th1;
+
+ struct { XYZ position; GLfloat strength; } dents[5];
+ int dent_count = random() % countof(dents);
+ int i;
+ for (i = 0; i < dent_count; i++)
+ {
+ GLfloat dist;
+ dents[i].position.x = RANDSIGN() * (2 - BELLRAND(0.2));
+ dents[i].position.y = RANDSIGN() * (2 - BELLRAND(0.2));
+ dents[i].position.z = RANDSIGN() * (2 - BELLRAND(0.2));
+ dist = sqrt (dents[i].position.x * dents[i].position.x +
+ dents[i].position.y * dents[i].position.y +
+ dents[i].position.z * dents[i].position.z);
+ dents[i].strength = dist - (1 - BELLRAND(0.3));
+ dents[i].strength = dist - (1 - BELLRAND(0.3));
+ }
+
+
+ for (th1 = M_PI/2; th1 > -(M_PI/2 + tile_size/2); th1 -= tile_size)
+ {
+ GLfloat x = cos (th1);
+ GLfloat y = sin (th1);
+ GLfloat x0 = cos (th1 - tile_size/2);
+ GLfloat x1 = cos (th1 + tile_size/2);
+ GLfloat circ0 = M_PI * x0 * 2;
+ GLfloat circ1 = M_PI * x1 * 2;
+ GLfloat circ = (circ0 < circ1 ? circ0 : circ1);
+ int row_tiles = floor ((circ < 0 ? 0 : circ) / tile_size);
+ GLfloat spacing;
+ GLfloat dropsy = 0.13 + frand(0.04);
+
+ if (row_tiles <= 0) row_tiles = 1;
+ spacing = M_PI*2 / row_tiles;
+
+ for (th0 = 0; th0 < M_PI*2; th0 += spacing)
+ {
+ tile *t = (tile *) calloc (1, sizeof(*t));
+ t->size = tile_size * 0.85;
+ t->position.x = cos (th0) * x;
+ t->position.y = sin (th0) * x;
+ t->position.z = y;
+
+ t->normal = t->position;
+
+ /* Apply pressure on position from the dents. */
+ for (i = 0; i < dent_count; i++)
+ {
+ GLfloat dist;
+ XYZ direction;
+
+ if (! (random() % 150)) /* Drop tiles randomly */
+ {
+ free (t);
+ goto SKIP;
+ }
+
+ direction.x = t->position.x - dents[i].position.x;
+ direction.y = t->position.y - dents[i].position.y;
+ direction.z = t->position.z - dents[i].position.z;
+ dist = sqrt (direction.x * direction.x +
+ direction.y * direction.y +
+ direction.z * direction.z);
+ if (dist < dents[i].strength)
+ {
+ GLfloat s = 1 - (dents[i].strength - dist) * 0.66;
+ XYZ n2 = t->normal;
+ GLfloat angle = vector_angle (t->position, dents[i].position);
+
+ /* Drop out the tiles near the apex of the dent. */
+ if (angle < dropsy)
+ {
+ free (t);
+ goto SKIP;
+ }
+
+ t->position.x *= s;
+ t->position.y *= s;
+ t->position.z *= s;
+
+ direction = normalize (direction);
+ n2.x -= direction.x;
+ n2.y -= direction.y;
+ n2.z -= direction.z;
+
+ t->normal.x = (t->normal.x + n2.x) / 2;
+ t->normal.y = (t->normal.y + n2.y) / 2;
+ t->normal.z = (t->normal.z + n2.z) / 2;
+ }
+ }
+
+ /* Skew the direction the tile is facing slightly. */
+ t->normal.x += 0.12 - frand(0.06);
+ t->normal.y += 0.12 - frand(0.06);
+ t->normal.z += 0.12 - frand(0.06);
+ t->tilt = 4 - BELLRAND(8);
+
+ t->next = bp->tiles;
+ bp->tiles = t;
+ SKIP: ;
+ }
+ }
+
+ bp->nrays = 5 + BELLRAND(10);
+ bp->rays = (ray *) calloc (bp->nrays, sizeof(*bp->rays));
+ for (i = 0; i < bp->nrays; i++)
+ {
+ GLfloat th = frand(M_PI * 2);
+ bp->rays[i].normal.x = cos (th);
+ bp->rays[i].normal.y = sin (th);
+ bp->rays[i].normal.z = 1;
+ bp->rays[i].normal = normalize (bp->rays[i].normal);
+ bp->rays[i].color[0] = 0.9 + frand(0.1);
+ bp->rays[i].color[1] = 0.6 + frand(0.4);
+ bp->rays[i].color[2] = 0.6 + frand(0.2);
+ bp->rays[i].color[3] = 1;
+ }
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_ball (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+ball_handle_event (ModeInfo *mi, XEvent *event)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_ball (ModeInfo *mi)
+{
+ ball_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, bps);
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ if (! wire)
+ build_texture (mi);
+
+ reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ bp->th = 180 - frand(360);
+
+ if (MI_COUNT(mi) < 10)
+ MI_COUNT(mi) = 10;
+ if (MI_COUNT(mi) > 200)
+ MI_COUNT(mi) = 200;
+
+ {
+ double spin_speed = 0.1;
+ double wander_speed = 0.003;
+ double spin_accel = 1;
+
+ bp->rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ False);
+ bp->trackball = gltrackball_init (True);
+ }
+
+ build_ball (mi);
+
+ if (!wire)
+ {
+ GLfloat color[4] = {0.5, 0.5, 0.5, 1};
+ GLfloat cspec[4] = {1, 1, 1, 1};
+ static const GLfloat shiny = 10;
+
+ static GLfloat pos0[4] = { 0.5, -1, -0.5, 0};
+ static GLfloat pos1[4] = {-0.75, -1, 0, 0};
+ static GLfloat amb[4] = {0, 0, 0, 1};
+ static GLfloat dif[4] = {1, 1, 1, 1};
+ static GLfloat spc[4] = {1, 1, 1, 1};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_LIGHT1);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ color[0] += frand(0.2);
+ color[1] += frand(0.2);
+ color[2] += frand(0.2);
+
+ cspec[0] -= frand(0.2);
+ cspec[1] -= frand(0.2);
+ cspec[2] -= frand(0.2);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos0);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+
+ glLightfv(GL_LIGHT1, GL_POSITION, pos1);
+ glLightfv(GL_LIGHT1, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT1, GL_SPECULAR, spc);
+
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color);
+ glMaterialfv (GL_FRONT, GL_SPECULAR, cspec);
+ glMateriali (GL_FRONT, GL_SHININESS, shiny);
+ }
+}
+
+
+ENTRYPOINT void
+draw_ball (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 6,
+ (y - 0.5) * 6,
+ (z - 0.5) * 2);
+
+ gltrackball_rotate (bp->trackball);
+
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ mi->polygon_count = 0;
+
+ glRotatef (50, 1, 0, 0);
+
+ glScalef (4, 4, 4);
+ glRotatef (bp->th, 0, 0, 1);
+ if (! bp->button_down_p)
+ {
+ bp->th += (bp->th > 0 ? speed : -speed);
+ while (bp->th > 360) bp->th -= 360;
+ while (bp->th < -360) bp->th += 360;
+ }
+
+ mi->polygon_count += draw_ball_1 (mi);
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+
+ENTRYPOINT void
+free_ball (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ while (bp->tiles)
+ {
+ tile *t = bp->tiles->next;
+ free (bp->tiles);
+ bp->tiles = t;
+ }
+ free (bp->rays);
+}
+
+XSCREENSAVER_MODULE_2 ("Discoball", discoball, ball)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/discoball.man b/hacks/glx/discoball.man
new file mode 100644
index 0000000..041cbd2
--- /dev/null
+++ b/hacks/glx/discoball.man
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+discoball - A dusty, dented disco ball screen saver.
+.SH SYNOPSIS
+.B discoball
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-wander]
+[\-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+A dusty, dented disco ball. Woop woop.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-count \fInumber\fP
+Number of rows of tiles on the ball. 10 - 100. Default: 30.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the scene should spin.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2016 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/dnalogo.c b/hacks/glx/dnalogo.c
new file mode 100644
index 0000000..2b24f83
--- /dev/null
+++ b/hacks/glx/dnalogo.c
@@ -0,0 +1,3639 @@
+/* DNA Logo, Copyright (c) 2001-2018 Jamie Zawinski
+ *
+ * DNA Lounge
+ *
+ * Restaurant -- Bar -- Nightclub -- Cafe -- Est. 1985.
+ *
+ * 375 Eleventh Street
+ * San Francisco, CA
+ * 94103
+ *
+ * https://www.dnalounge.com/
+ * http://www.dnapizza.com/
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS __extension__ \
+ "*delay: 25000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*doGasket: True \n" \
+ "*doHelix: True \n" \
+ "*doLadder: True \n" \
+ "*doFrame: True \n" \
+ "*wallFacets: 360 \n" \
+ "*barFacets: 90 \n" \
+ "*clockwise: False \n" \
+ "*turns: 0.72 \n" \
+ "*turnSpacing: 2.3 \n" \
+ "*barSpacing: 0.268 \n" \
+ "*wallHeight: 0.42 \n" \
+ "*wallThickness: 0.12 \n" \
+ "*barThickness: 0.058 \n" \
+ "*wallTaper: 0.95 \n" \
+ "*gasketSize: 2.0 \n" \
+ "*gasketDepth: 0.15 \n" \
+ "*gasketThickness: 0.4 \n" \
+ "*frameSize: 1.28 \n" \
+ "*frameDepth: 0.01 \n" \
+ "*frameThickness: 0.03 \n" \
+ "*triangleSize: 0.045 \n" \
+ "*cwFacets: 3 \n" \
+ "*cwDiscFacets: 64 \n" \
+ "*cwSpread: 0.5 \n" \
+ "*cwLineWidth: 0.18 \n" \
+ "*cwThickness: 0.15 \n" \
+ "*cwCapSize: 0.4 \n" \
+ "*text: CODEWORD\n" \
+ "*speed: 1.0 \n" \
+ "*mode: both" "\n" \
+ ".background: #000000\n" \
+ ".foreground: #00AA00\n" \
+ ".cwForeground: #FCA816\n" \
+ ".cwBackground: #943225\n" \
+ "*cwFont: " CWFONT "\n" \
+ "*geometry: =640x640\n" \
+
+# if defined(HAVE_COCOA) || defined(HAVE_ANDROID)
+# define CWFONT "Yearling 28, OCR A Std 24"
+# else
+# define CWFONT "-*-helvetica-medium-r-normal-*-*-240-*-*-*-*-*-*"
+# endif
+
+# define free_logo 0
+# define release_logo 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef DXF_OUTPUT_HACK
+
+#ifdef DXF_OUTPUT_HACK /* When this is defined, instead of rendering
+ to the screen, we write a DXF CAD file to stdout.
+ This is a kludge of shocking magnitude...
+ Maybe there's some other way to intercept all
+ glVertex3f calls than with a #define? */
+# define unit_tube dxf_unit_tube
+# define unit_cone dxf_unit_cone
+# define tube_1 dxf_tube_1
+# define tube dxf_tube
+# define cone dxf_cone
+#endif /* DXF_OUTPUT_HACK */
+
+#include "xlockmore.h"
+#include "normals.h"
+#include "tube.h"
+#include "sphere.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "utf8wc.h"
+#include "texfont.h"
+
+#ifdef USE_GL /* whole file */
+
+#ifdef HAVE_JWZGLES
+# include "dnapizza.h"
+#else
+# define HAVE_TESS
+#endif
+
+typedef enum {
+ HELIX_IN, HELIX, HELIX_OUT,
+ PIZZA_IN, PIZZA, PIZZA_OUT,
+ HELIX_AND_PIZZA,
+# ifdef CW
+ CODEWORD_IN, CODEWORD, CODEWORD_OUT, CODEWORD_BLANK
+# endif
+} glyph_mode;
+
+typedef struct {
+ Bool spinning_p;
+ GLfloat position; /* 0.0 - 1.0 */
+ GLfloat position_eased; /* 0.0 - 1.0, eased in and out */
+ GLfloat easement; /* portion of path that is eased. <= 0.5 */
+ GLfloat speed; /* how far along the path (may be negative) */
+ GLfloat probability; /* relative likelyhood to start spinning */
+} spinner;
+
+typedef struct {
+ GLXContext *glx_context;
+
+ GLuint helix_list, helix_list_wire, helix_list_facetted;
+ GLuint pizza_list, pizza_list_wire, pizza_list_facetted;
+ GLuint gasket_list, gasket_list_wire;
+ GLuint frame_list, frame_list_wire;
+ int polys[7];
+
+ int wall_facets;
+ int bar_facets;
+ Bool clockwise;
+ GLfloat color[4];
+
+ GLfloat turns;
+ GLfloat turn_spacing;
+ GLfloat bar_spacing;
+ GLfloat wall_height;
+ GLfloat wall_thickness;
+ GLfloat bar_thickness;
+ GLfloat wall_taper;
+
+ GLfloat gasket_size;
+ GLfloat gasket_depth;
+ GLfloat gasket_thickness;
+
+ GLfloat frame_size;
+ GLfloat frame_depth;
+ GLfloat frame_thickness;
+ GLfloat triangle_size;
+
+# ifdef CW
+ int codeword_facets, codeword_disc_facets;
+ GLfloat codeword_spread, codeword_line_width, codeword_thickness;
+ GLfloat codeword_cap_size;
+ const char *codeword_text;
+ char *codeword_text_out;
+ int *codeword_text_points;
+ XYZ *codeword_path;
+ int codeword_path_npoints;
+ int codeword_nguides;
+ XYZ *codeword_guides;
+ GLfloat codeword_color[4], codeword_bg[4];
+ texture_font_data *font;
+# endif
+
+# ifdef DEBUG
+ GLfloat persp_off, pos_off;
+ texture_font_data *label_font;
+# endif
+
+ GLfloat speed;
+ glyph_mode mode;
+ glyph_mode anim_state;
+ GLfloat anim_ratio;
+
+ spinner gasket_spinnerx, gasket_spinnery, gasket_spinnerz;
+ spinner scene_spinnerx, scene_spinnery; /* for DNA */
+# ifdef CW
+ rotator *scene_rot; /* for Codeword */
+# endif
+ spinner helix_spinnerz;
+ spinner pizza_spinnery, pizza_spinnerz;
+ spinner frame_spinner;
+
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ int wire_overlay; /* frame countdown */
+
+} logo_configuration;
+
+static logo_configuration *dcs = NULL;
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-mode", ".mode", XrmoptionSepArg, 0 },
+ { "-pizza", ".mode", XrmoptionNoArg, "pizza" },
+ { "-helix", ".mode", XrmoptionNoArg, "helix" },
+ { "-both", ".mode", XrmoptionNoArg, "both" },
+# ifdef CW
+ { "-codeword", ".mode", XrmoptionNoArg, "codeword" },
+ { "-cw", ".mode", XrmoptionNoArg, "codeword" },
+ { "-text", ".text", XrmoptionSepArg, 0 },
+# endif
+};
+
+ENTRYPOINT ModeSpecOpt logo_opts = {countof(opts), opts, 0, NULL, NULL};
+
+#define PROBABILITY_SCALE 600
+
+
+#ifdef DXF_OUTPUT_HACK
+
+# define glBegin dxf_glBegin
+# define glVertex3f dxf_glVertex3f
+# define glVertex3dv dxf_glVertex3dv
+# define glEnd dxf_glEnd
+# define glVertexPointer dxf_glVertexPointer
+# define glDrawArrays dxf_glDrawArrays
+
+static int dxf_type, dxf_point, dxf_point_total, dxf_layer, dxf_color;
+static GLfloat dxf_quads[4*4];
+
+static void
+dxf_glBegin (int type)
+{
+ dxf_type = type;
+ dxf_point = 0;
+ dxf_point_total = 0;
+}
+
+static void
+dxf_glVertex3f (GLfloat ox, GLfloat oy, GLfloat oz)
+{
+ int i = 0;
+ GLfloat m[4*4];
+ GLfloat x, y, z;
+
+ /* Transform the point into modelview space. */
+ glGetFloatv (GL_MODELVIEW_MATRIX, m);
+ x = ox * m[0] + oy * m[4] + oz * m[8] + m[12];
+ y = ox * m[1] + oy * m[5] + oz * m[9] + m[13];
+ z = ox * m[2] + oy * m[6] + oz * m[10] + m[14];
+
+ dxf_quads[dxf_point*3+0] = x;
+ dxf_quads[dxf_point*3+1] = y;
+ dxf_quads[dxf_point*3+2] = z;
+ dxf_point++;
+ dxf_point_total++;
+
+ switch (dxf_type) {
+ case GL_QUADS:
+ if (dxf_point < 4) return;
+
+ fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color);
+ fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]);
+ dxf_point = 0;
+ break;
+
+ case GL_QUAD_STRIP:
+ if (dxf_point < 4) return;
+
+ fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color);
+ fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "12\n%.6f\n", dxf_quads[i+3]); /* funky quad strip */
+ fprintf (stdout, "22\n%.6f\n", dxf_quads[i+4]); /* vert order: 1243. */
+ fprintf (stdout, "32\n%.6f\n", dxf_quads[i+5]);
+
+ fprintf (stdout, "13\n%.6f\n", dxf_quads[i]);
+ fprintf (stdout, "23\n%.6f\n", dxf_quads[i+1]);
+ fprintf (stdout, "33\n%.6f\n", dxf_quads[i+2]);
+ i += 6;
+
+ dxf_quads[0] = dxf_quads[6]; /* copy point 3 to pos 1 */
+ dxf_quads[1] = dxf_quads[7];
+ dxf_quads[2] = dxf_quads[8];
+ dxf_quads[3] = dxf_quads[9]; /* copy point 4 to pos 2 */
+ dxf_quads[4] = dxf_quads[10];
+ dxf_quads[5] = dxf_quads[11];
+ dxf_point = 2; /* leave those two points in queue */
+ break;
+
+ case GL_TRIANGLES:
+ case GL_TRIANGLE_FAN:
+ if (dxf_point < 3) return;
+
+ fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color);
+ fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]);
+
+ i -= 3;
+ fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]); /* dup pt 4 as pt 3. */
+ fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]);
+
+ dxf_point = 0;
+ if (dxf_type == GL_TRIANGLE_FAN)
+ {
+ dxf_quads[3] = dxf_quads[6]; /* copy point 3 to point 2 */
+ dxf_quads[4] = dxf_quads[7];
+ dxf_quads[5] = dxf_quads[8];
+ dxf_point = 2; /* leave two points in queue */
+ }
+ break;
+
+ case GL_TRIANGLE_STRIP:
+ if (dxf_point < 3) return;
+
+ fprintf (stdout, "0\n3DFACE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color);
+
+ fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "12\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "22\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "32\n%.6f\n", dxf_quads[i++]);
+
+ i -= 3;
+ fprintf (stdout, "13\n%.6f\n", dxf_quads[i++]); /* dup pt 4 as pt 3. */
+ fprintf (stdout, "23\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "33\n%.6f\n", dxf_quads[i++]);
+
+ dxf_quads[0] = dxf_quads[3]; /* copy point 2 to pos 1 */
+ dxf_quads[1] = dxf_quads[4];
+ dxf_quads[2] = dxf_quads[5];
+ dxf_quads[3] = dxf_quads[6]; /* copy point 3 to pos 2 */
+ dxf_quads[4] = dxf_quads[7];
+ dxf_quads[5] = dxf_quads[8];
+ dxf_point = 2; /* leave those two points in queue */
+ break;
+
+ case GL_LINES:
+ case GL_LINE_STRIP:
+ case GL_LINE_LOOP:
+
+ if (dxf_point_total == 1)
+ {
+ dxf_quads[6] = ox;
+ dxf_quads[7] = oy;
+ dxf_quads[8] = oz;
+ }
+
+ if (dxf_point < 2) return;
+
+ fprintf (stdout, "0\nLINE\n8\n%d\n62\n%d\n", dxf_layer, dxf_color);
+
+ fprintf (stdout, "10\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "20\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "30\n%.6f\n", dxf_quads[i++]);
+
+ fprintf (stdout, "11\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "21\n%.6f\n", dxf_quads[i++]);
+ fprintf (stdout, "31\n%.6f\n", dxf_quads[i++]);
+
+ dxf_point = 0;
+ if (dxf_type != GL_LINES)
+ {
+ dxf_quads[0] = dxf_quads[3];
+ dxf_quads[1] = dxf_quads[4];
+ dxf_quads[2] = dxf_quads[5];
+ dxf_point = 1;
+ }
+ break;
+
+ default:
+ abort();
+ break;
+ }
+}
+
+
+static void
+dxf_glVertex3dv (const GLdouble *v)
+{
+ glVertex3f (v[0], v[1], v[2]);
+}
+
+
+static void
+dxf_glEnd(void)
+{
+ if (dxf_type == GL_LINE_LOOP) /* close loop */
+ glVertex3f (dxf_quads[6], dxf_quads[7], dxf_quads[8]);
+ dxf_type = -1;
+ dxf_point = 0;
+ dxf_point_total = 0;
+}
+
+
+static void
+dxf_start (void)
+{
+ fprintf (stdout, "0\nSECTION\n2\nHEADER\n0\nENDSEC\n");
+ fprintf (stdout, "0\nSECTION\n2\nENTITIES\n");
+}
+
+static void
+dxf_end (void)
+{
+ fprintf (stdout, "0\nENDSEC\n0\nEOF\n");
+ exit (0);
+}
+
+
+static const GLvoid *dxf_vp;
+static GLsizei dxf_vp_size;
+static GLsizei dxf_vp_stride;
+
+static void
+dxf_glVertexPointer (GLint size, GLenum type, GLsizei stride,
+ const GLvoid *pointer)
+{
+ if (type != GL_FLOAT) abort();
+ if (stride <= 0) abort();
+ dxf_vp = pointer;
+ dxf_vp_size = size;
+ dxf_vp_stride = stride;
+}
+
+static void
+dxf_glDrawArrays (GLenum mode, GLint first, GLsizei count)
+{
+ int i;
+ unsigned char *a = (unsigned char *) dxf_vp;
+ dxf_glBegin (mode);
+ for (i = first; i < first+count; i++)
+ {
+ GLfloat *fa = (GLfloat *) a;
+ dxf_glVertex3f (fa[0], fa[1], fa[2]);
+ a += dxf_vp_stride;
+ }
+ dxf_glEnd();
+}
+
+
+# define XYZ tube_XYZ /* avoid conflict with normals.h */
+# include "tube.c" /* Yes, I really am including a C file. */
+# undef XYZ
+# define XYZ sphere_XYZ
+# define unit_sphere unit_sphere_dxf
+# define unit_dome unit_dome_dxf
+# include "sphere.c"
+# undef XYZ
+
+#endif /* DXF_OUTPUT_HACK */
+
+
+
+/* Calculate the angle (in radians) between two vectors.
+ */
+static GLfloat
+vector_angle (double ax, double ay, double az,
+ double bx, double by, double bz)
+{
+ double La = sqrt (ax*ax + ay*ay + az*az);
+ double Lb = sqrt (bx*bx + by*by + bz*bz);
+ double cc, angle;
+
+ if (La == 0 || Lb == 0) return 0;
+ if (ax == bx && ay == by && az == bz) return 0;
+
+ /* dot product of two vectors is defined as:
+ La * Lb * cos(angle between vectors)
+ and is also defined as:
+ ax*bx + ay*by + az*bz
+ so:
+ La * Lb * cos(angle) = ax*bx + ay*by + az*bz
+ cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb)
+ angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb));
+ */
+ cc = (ax*bx + ay*by + az*bz) / (La * Lb);
+ if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */
+ angle = acos (cc);
+
+ return (angle);
+}
+
+
+# ifdef CW
+
+static void
+normalize (XYZ *p)
+{
+ GLfloat d = sqrt (p->x*p->x + p->y*p->y + p->z*p->z);
+ if (d != 0)
+ {
+ p->x /= d;
+ p->y /= d;
+ p->z /= d;
+ }
+ else
+ {
+ p->x = p->y = p->z = 0;
+ }
+}
+
+
+static double
+dot (const XYZ u, const XYZ v)
+{
+ return (u.x * v.x) + (u.y * v.y) + (u.z * v.z);
+}
+
+#endif /* CW */
+
+
+/* Make the helix
+ */
+
+static int
+make_helix (logo_configuration *dc, int facetted, int wire)
+{
+ int polys = 0;
+ int wall_facets = dc->wall_facets / (facetted ? 10 : 1);
+ GLfloat th;
+ GLfloat max_th = M_PI * 2 * dc->turns;
+ GLfloat th_inc = M_PI * 2 / wall_facets;
+
+ GLfloat x1=0, y1=0, x2=0, y2=0;
+ GLfloat x1b=0, y1b=0, x2b=0, y2b=0;
+ GLfloat z1=0, z2=0;
+ GLfloat h1=0, h2=0;
+ GLfloat h1off=0, h2off=0;
+ GLfloat z_inc = dc->turn_spacing / wall_facets;
+
+ th = 0;
+ x1 = 1;
+ y1 = 0;
+ x1b = 1;
+ y1b = 0;
+
+ z1 = -(dc->turn_spacing * dc->turns / 2);
+
+ h1 = (dc->wall_taper > 0 ? 0 : dc->wall_height / 2);
+ h1off = (dc->wall_taper > 0 ? -dc->wall_height / 2 : 0);
+
+ if (!dc->clockwise)
+ z1 = -z1, z_inc = -z_inc, h1off = -h1off;
+
+ /* Leading end-cap
+ */
+ if (!wire && h1 > 0)
+ {
+ GLfloat nx, ny;
+ glFrontFace(GL_CCW);
+ glBegin(GL_QUADS);
+ nx = cos (th + M_PI/2);
+ ny = sin (th + M_PI/2);
+ glNormal3f(nx, ny, 0);
+ glVertex3f( x1, y1, z1 - h1 + h1off);
+ glVertex3f( x1, y1, z1 + h1 + h1off);
+ glVertex3f(x1b, y1b, z1 + h1 + h1off);
+ glVertex3f(x1b, y1b, z1 - h1 + h1off);
+ polys++;
+ glEnd();
+ }
+
+ while (th + th_inc <= max_th)
+ {
+ GLfloat thick = dc->wall_thickness;
+
+ th += th_inc;
+
+ x2 = cos (th);
+ y2 = sin (th);
+ z2 = z1 + z_inc;
+
+ h2 = h1;
+ h2off = h1off;
+
+ if (dc->wall_taper > 0)
+ {
+ h2off = 0;
+ if (th < dc->wall_taper)
+ {
+ h2 = dc->wall_height/2 * cos (M_PI / 2
+ * (1 - (th / dc->wall_taper)));
+ if (dc->clockwise)
+ h2off = h2 - dc->wall_height/2;
+ else
+ h2off = dc->wall_height/2 - h2;
+
+ if (th + th_inc <= 0)
+ thick = 0;
+ else
+ thick *= cos (M_PI / 2 * (1 - (th / dc->wall_taper)));
+ }
+ else if (th >= max_th - dc->wall_taper)
+ {
+ if (th + th_inc > max_th) /* edge case: always come to a point */
+ h2 = 0;
+ else
+ h2 = dc->wall_height/2 * cos (M_PI / 2
+ * (1 - ((max_th - th)
+ / dc->wall_taper)));
+ if (dc->clockwise)
+ h2off = dc->wall_height/2 - h2;
+ else
+ h2off = h2 - dc->wall_height/2;
+
+ if (th + th_inc > max_th)
+ thick = 0;
+ else
+ thick *= cos(M_PI / 2 * (1 - ((max_th - th)/dc->wall_taper)));
+ }
+ }
+
+ x2b = x2 * (1 - thick);
+ y2b = y2 * (1 - thick);
+
+ /* outer face
+ */
+ glFrontFace(GL_CW);
+ glBegin(wire ? GL_LINES : GL_QUADS);
+ glNormal3f(x1, y1, 0);
+ glVertex3f(x1, y1, z1 - h1 + h1off);
+ glVertex3f(x1, y1, z1 + h1 + h1off);
+ glNormal3f(x2, y2, 0);
+ glVertex3f(x2, y2, z2 + h2 + h2off);
+ glVertex3f(x2, y2, z2 - h2 + h2off);
+ polys++;
+ glEnd();
+
+ /* inner face
+ */
+ glFrontFace(GL_CCW);
+ glBegin(wire ? GL_LINES : GL_QUADS);
+ glNormal3f(-x1b, -y1b, 0);
+ glVertex3f( x1b, y1b, z1 - h1 + h1off);
+ glVertex3f( x1b, y1b, z1 + h1 + h1off);
+ glNormal3f(-x2b, -y2b, 0);
+ glVertex3f( x2b, y2b, z2 + h2 + h2off);
+ glVertex3f( x2b, y2b, z2 - h2 + h2off);
+ polys++;
+ glEnd();
+
+ /* top face
+ */
+ glFrontFace(GL_CCW);
+ /* glNormal3f(0, 0, 1);*/
+ do_normal (x2, y2, z2 + h2 + h2off,
+ x2b, y2b, z2 + h2 + h2off,
+ x1b, y1b, z1 + h1 + h1off);
+ glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f( x2, y2, z2 + h2 + h2off);
+ glVertex3f( x2b, y2b, z2 + h2 + h2off);
+ glVertex3f( x1b, y1b, z1 + h1 + h1off);
+ glVertex3f( x1, y1, z1 + h1 + h1off);
+ polys++;
+ glEnd();
+
+ /* bottom face
+ */
+ glFrontFace(GL_CCW);
+ do_normal ( x1, y1, z1 - h1 + h1off,
+ x1b, y1b, z1 - h1 + h1off,
+ x2b, y2b, z2 - h2 + h2off);
+ glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
+ glNormal3f(0, 0, -1);
+ glVertex3f( x1, y1, z1 - h1 + h1off);
+ glVertex3f( x1b, y1b, z1 - h1 + h1off);
+ glVertex3f( x2b, y2b, z2 - h2 + h2off);
+ glVertex3f( x2, y2, z2 - h2 + h2off);
+ polys++;
+ glEnd();
+
+ x1 = x2;
+ y1 = y2;
+ x1b = x2b;
+ y1b = y2b;
+ z1 += z_inc;
+ h1 = h2;
+ h1off = h2off;
+ }
+
+ /* Trailing end-cap
+ */
+ if (!wire && h2 > 0)
+ {
+ GLfloat nx, ny;
+ glFrontFace(GL_CW);
+ glBegin(GL_QUADS);
+ nx = cos (th + M_PI/2);
+ ny = sin (th + M_PI/2);
+ glNormal3f(nx, ny, 0);
+ glVertex3f(x2, y2, z1 - h2 + h2off);
+ glVertex3f(x2, y2, z1 + h2 + h2off);
+ glVertex3f(x2b, y2b, z1 + h2 + h2off);
+ glVertex3f(x2b, y2b, z1 - h2 + h2off);
+ polys++;
+ glEnd();
+ }
+ return polys;
+}
+
+
+static int
+make_ladder (logo_configuration *dc, int facetted, int wire)
+{
+ int polys = 0;
+ GLfloat th;
+ GLfloat max_th = dc->turns * M_PI * 2;
+ GLfloat max_z = dc->turns * dc->turn_spacing;
+ GLfloat z_inc = dc->bar_spacing;
+ GLfloat th_inc = M_PI * 2 * (dc->bar_spacing / dc->turn_spacing);
+ GLfloat x, y, z;
+
+ /* skip forward to center the bars in the helix... */
+ int i;
+ GLfloat usable_th = max_th - dc->wall_taper;
+ GLfloat usable_z = max_z / (max_th / usable_th);
+ int nbars = usable_z / dc->bar_spacing;
+ GLfloat used_z, pad_z, pad_ratio;
+
+ if (! (nbars & 1)) nbars--; /* always an odd number of bars */
+
+ used_z = (nbars - 1) * dc->bar_spacing;
+ pad_z = max_z - used_z;
+ pad_ratio = pad_z / max_z;
+
+ th = (max_th * pad_ratio/2);
+ z = -(max_z / 2) + (max_z * pad_ratio/2);
+
+ /* ##### WHYYYYYY */
+ /* The image is not reflected across line y = -x and I don't know why. */
+ th += M_PI * -0.035;
+ z -= 0.08;
+
+ if (!dc->clockwise)
+ z = -z, z_inc = -z_inc;
+
+ glFrontFace(GL_CCW);
+ for (i = 0; i < nbars; i++)
+ {
+ int facets = dc->bar_facets / (facetted ? 14 : 1);
+ if (facets <= 3) facets = 3;
+ x = cos (th) * (1 - dc->wall_thickness);
+ y = sin (th) * (1 - dc->wall_thickness);
+ polys += tube ( x, y, z,
+ -x, -y, z,
+ dc->bar_thickness, 0, facets,
+ True, True, wire);
+ z += z_inc;
+ th += th_inc;
+ }
+ return polys;
+}
+
+
+
+/* Make the gasket
+ */
+
+
+static int
+make_gasket (logo_configuration *dc, int wire)
+{
+ int polys = 0;
+ int i;
+ int points_size;
+ int npoints = 0;
+ int nctrls = 0;
+ int res = 360/8;
+ GLfloat d2r = M_PI / 180;
+
+ GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 2;
+
+ GLfloat *pointsx0, *pointsy0, *pointsx1, *pointsy1, *normals;
+
+ GLfloat r0 = 0.750; /* 395 */
+ GLfloat r1a = 0.825; /* bottom of wall below upper left hole */
+ GLfloat r1b = 0.867; /* center of upper left hole */
+ GLfloat r1c = 0.909; /* top of wall above hole */
+ GLfloat r1 = 0.916; /* 471 */
+ GLfloat r2 = 0.963; /* 490 */
+ GLfloat r3 = 0.960; /* 499 */
+ GLfloat r4 = 1.000; /* 507 */
+ GLfloat r5 = 1.080; /* 553 */
+
+ GLfloat ctrl_r[100], ctrl_th[100];
+
+ glPushMatrix();
+
+# ifdef DXF_OUTPUT_HACK
+ if (! wire) res *= 8;
+# endif
+
+# define POINT(r,th) \
+ ctrl_r [nctrls] = r, \
+ ctrl_th[nctrls] = (th * d2r), \
+ nctrls++
+
+ POINT (0.829, 0); /* top indentation, right half */
+ POINT (0.831, 0.85);
+ POINT (0.835, 1.81);
+ POINT (0.841, 2.65);
+ POINT (0.851, 3.30);
+ POINT (0.862, 3.81);
+ POINT (0.872, 3.95);
+
+ POINT (r4, 4.0); /* moving clockwise... */
+ POINT (r4, 47.0);
+ POINT (r1, 47.0);
+ POINT (r1, 53.0);
+ POINT (r2, 55.5);
+ POINT (r2, 72.3);
+ POINT (r1, 74.0);
+ POINT (r1, 100.0);
+ POINT (r3, 102.5);
+ POINT (r3, 132.0);
+ POINT (r1, 133.0);
+
+ POINT (r1, 180.7);
+ POINT (r2, 183.6);
+ POINT (r2, 210.0);
+ POINT (r1, 212.0);
+ POINT (r1, 223.2);
+ POINT (r5, 223.2);
+ POINT (r5, 225.0);
+ POINT (r4, 225.0);
+
+ POINT (r4, 316.8); /* upper left indentation */
+ POINT (0.990, 316.87);
+ POINT (0.880, 317.21);
+ POINT (0.872, 317.45);
+ POINT (0.869, 317.80);
+ POINT (0.867, 318.10);
+
+ POINT (0.867, 318.85);
+ POINT (0.869, 319.15);
+ POINT (0.872, 319.50);
+ POINT (0.880, 319.74);
+ POINT (0.990, 320.08);
+
+ POINT (r4, 338.0);
+ if (! wire)
+ {
+ POINT (r1a, 338.0); /* cut-out disc */
+ POINT (r1a, 344.0);
+ }
+ POINT (r4, 344.0);
+ POINT (r4, 356.0);
+
+ POINT (0.872, 356.05); /* top indentation, left half */
+ POINT (0.862, 356.19);
+ POINT (0.851, 356.70);
+ POINT (0.841, 357.35);
+ POINT (0.835, 358.19);
+ POINT (0.831, 359.15);
+ POINT (0.829, 360);
+# undef POINT
+
+ points_size = res + (nctrls * 2);
+ pointsx0 = (GLfloat *) malloc (points_size * sizeof(GLfloat));
+ pointsy0 = (GLfloat *) malloc (points_size * sizeof(GLfloat));
+ pointsx1 = (GLfloat *) malloc (points_size * sizeof(GLfloat));
+ pointsy1 = (GLfloat *) malloc (points_size * sizeof(GLfloat));
+ normals = (GLfloat *) malloc (points_size * sizeof(GLfloat) * 2);
+
+ npoints = 0;
+ for (i = 1; i < nctrls; i++)
+ {
+ GLfloat from_r = ctrl_r [i-1];
+ GLfloat from_th = ctrl_th[i-1];
+ GLfloat to_r = ctrl_r [i];
+ GLfloat to_th = ctrl_th[i];
+
+ GLfloat step = 2*M_PI / res;
+ int nsteps = 1 + ((to_th - from_th) / step);
+ int j;
+
+ for (j = 0; j < nsteps + (i == nctrls-1); j++)
+ {
+ GLfloat r = from_r + (j * (to_r - from_r) / nsteps);
+ GLfloat th = from_th + (j * (to_th - from_th) / nsteps);
+
+ GLfloat cth = cos(th) * dc->gasket_size;
+ GLfloat sth = sin(th) * dc->gasket_size;
+
+ pointsx0[npoints] = r0 * cth; /* inner ring */
+ pointsy0[npoints] = r0 * sth;
+ pointsx1[npoints] = r * cth; /* outer ring */
+ pointsy1[npoints] = r * sth;
+ npoints++;
+
+ if (npoints >= points_size) abort();
+ }
+ }
+
+ /* normals for the outer ring */
+ for (i = 1; i < npoints; i++)
+ {
+ XYZ a, b, c, n;
+ a.x = pointsx1[i-1];
+ a.y = pointsy1[i-1];
+ a.z = 0;
+ b.x = pointsx1[i];
+ b.y = pointsy1[i];
+ b.z = 0;
+ c = b;
+ c.z = 1;
+ n = calc_normal (a, b, c);
+ normals[(i-1)*2 ] = n.x;
+ normals[(i-1)*2+1] = n.y;
+ }
+
+ glRotatef(-90, 0, 1, 0);
+ glRotatef(180, 0, 0, 1);
+
+ if (wire)
+ {
+ GLfloat z;
+ for (z = -thick2; z <= thick2; z += thick2*2)
+ {
+# if 1
+ /* inside edge */
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], pointsy0[i], z);
+ polys += npoints;
+ glEnd();
+
+ /* outside edge */
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx1[i], pointsy1[i], z);
+ polys += npoints;
+ glEnd();
+# else
+ for (i = 1; i < npoints; i++)
+ {
+ glBegin (GL_LINE_STRIP);
+ glVertex3f (pointsx0[i-1], pointsy0[i-1], z);
+ glVertex3f (pointsx0[i ], pointsy0[i ], z);
+ glVertex3f (pointsx1[i ], pointsy1[i ], z);
+ glVertex3f (pointsx1[i-1], pointsy1[i-1], z);
+ glEnd();
+ }
+ polys += npoints;
+# endif
+ }
+#if 1
+ glBegin (GL_LINES);
+ for (i = 0; i < npoints; i++)
+ {
+ /* inside rim */
+ glVertex3f (pointsx0[i], pointsy0[i], -thick2);
+ glVertex3f (pointsx0[i], pointsy0[i], thick2);
+ /* outside rim */
+ glVertex3f (pointsx1[i], pointsy1[i], -thick2);
+ glVertex3f (pointsx1[i], pointsy1[i], thick2);
+ }
+ polys += npoints;
+ glEnd();
+#endif
+ }
+ else
+ {
+ /* top */
+ glFrontFace(GL_CW);
+ glNormal3f(0, 0, -1);
+ glBegin (GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glVertex3f (pointsx0[i], pointsy0[i], -thick2);
+ glVertex3f (pointsx1[i], pointsy1[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ /* bottom */
+ glFrontFace(GL_CCW);
+ glNormal3f(0, 0, 1);
+ glBegin (GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glVertex3f (pointsx0[i], pointsy0[i], thick2);
+ glVertex3f (pointsx1[i], pointsy1[i], thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ /* inside edge */
+ glFrontFace(GL_CW);
+ glBegin (GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glNormal3f (-pointsx0[i], -pointsy0[i], 0);
+ glVertex3f ( pointsx0[i], pointsy0[i], thick2);
+ glVertex3f ( pointsx0[i], pointsy0[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ /* outside edge */
+ glFrontFace(GL_CCW);
+ glBegin (GL_QUADS);
+ {
+ for (i = 0; i < npoints-1; i++)
+ {
+ int ia = (i == 0 ? npoints-2 : i-1);
+ int iz = (i == npoints-2 ? 0 : i+1);
+ GLfloat x = pointsx1[i];
+ GLfloat y = pointsy1[i];
+ GLfloat xz = pointsx1[iz];
+ GLfloat yz = pointsy1[iz];
+
+ GLfloat nxa = normals[ia*2]; /* normal of [i-1 - i] face */
+ GLfloat nya = normals[ia*2+1];
+ GLfloat nx = normals[i*2]; /* normal of [i - i+1] face */
+ GLfloat ny = normals[i*2+1];
+ GLfloat nxz = normals[iz*2]; /* normal of [i+1 - i+2] face */
+ GLfloat nyz = normals[iz*2+1];
+
+ GLfloat anglea = vector_angle (nx, ny, 0, nxa, nya, 0);
+ GLfloat anglez = vector_angle (nx, ny, 0, nxz, nyz, 0);
+ GLfloat pointy = 0.6;
+
+ if (anglea > pointy)
+ {
+ glNormal3f (nx, ny, 0);
+ glVertex3f (x, y, thick2);
+ glVertex3f (x, y, -thick2);
+ }
+ else
+ {
+ glNormal3f ((nxa + nx) / 2, (nya + ny) / 2, 0);
+ glVertex3f (x, y, thick2);
+ glVertex3f (x, y, -thick2);
+ }
+
+ if (anglez > pointy)
+ {
+ glNormal3f (nx, ny, 0);
+ glVertex3f (xz, yz, -thick2);
+ glVertex3f (xz, yz, thick2);
+ }
+ else
+ {
+ glNormal3f ((nx + nxz) / 2, (ny + nyz) / 2, 0);
+ glVertex3f (xz, yz, -thick2);
+ glVertex3f (xz, yz, thick2);
+ }
+ }
+ polys += npoints;
+ }
+ glEnd();
+ }
+
+ /* Fill in the upper left hole...
+ */
+ {
+ GLfloat th;
+ npoints = 0;
+
+ th = 338.0 * d2r;
+ pointsx0[npoints] = r1c * cos(th) * dc->gasket_size;
+ pointsy0[npoints] = r1c * sin(th) * dc->gasket_size;
+ npoints++;
+ pointsx0[npoints] = r4 * cos(th) * dc->gasket_size;
+ pointsy0[npoints] = r4 * sin(th) * dc->gasket_size;
+ npoints++;
+
+ th = 344.0 * d2r;
+ pointsx0[npoints] = r1c * cos(th) * dc->gasket_size;
+ pointsy0[npoints] = r1c * sin(th) * dc->gasket_size;
+ npoints++;
+ pointsx0[npoints] = r4 * cos(th) * dc->gasket_size;
+ pointsy0[npoints] = r4 * sin(th) * dc->gasket_size;
+
+ if (! wire)
+ {
+ /* front wall */
+ glNormal3f (0, 0, -1);
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (pointsx0[0], pointsy0[0], -thick2);
+ glVertex3f (pointsx0[1], pointsy0[1], -thick2);
+ glVertex3f (pointsx0[3], pointsy0[3], -thick2);
+ glVertex3f (pointsx0[2], pointsy0[2], -thick2);
+ glEnd();
+ polys++;
+
+ /* back wall */
+ glNormal3f (0, 0, 1);
+ glFrontFace(GL_CCW);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (pointsx0[0], pointsy0[0], thick2);
+ glVertex3f (pointsx0[1], pointsy0[1], thick2);
+ glVertex3f (pointsx0[3], pointsy0[3], thick2);
+ glVertex3f (pointsx0[2], pointsy0[2], thick2);
+ glEnd();
+ polys++;
+ }
+
+ /* top wall */
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glNormal3f (pointsx0[1], pointsy0[1], 0);
+ glVertex3f (pointsx0[1], pointsy0[1], thick2);
+ glNormal3f (pointsx0[3], pointsy0[3], 0);
+ glVertex3f (pointsx0[3], pointsy0[3], thick2);
+ glVertex3f (pointsx0[3], pointsy0[3], -thick2);
+ glNormal3f (pointsx0[1], pointsy0[1], 0);
+ glVertex3f (pointsx0[1], pointsy0[1], -thick2);
+ glEnd();
+ polys++;
+
+
+ /* Now make a donut.
+ */
+ {
+ int nsteps = (wire ? 12 : 64);
+ GLfloat r0 = 0.04;
+ GLfloat r1 = 0.070;
+ GLfloat th, cth, sth;
+
+ glPushMatrix ();
+
+ th = ((339.0 + 343.0) / 2) * d2r;
+
+ glTranslatef (r1b * cos(th) * dc->gasket_size,
+ r1b * sin(th) * dc->gasket_size,
+ 0);
+
+ npoints = 0;
+ for (i = 0; i < nsteps; i++)
+ {
+ th = 2 * M_PI * i / nsteps;
+ cth = cos (th) * dc->gasket_size;
+ sth = sin (th) * dc->gasket_size;
+ pointsx0[npoints] = r0 * cth;
+ pointsy0[npoints] = r0 * sth;
+ pointsx1[npoints] = r1 * cth;
+ pointsy1[npoints] = r1 * sth;
+ npoints++;
+ polys++;
+ }
+
+ pointsx0[npoints] = pointsx0[0];
+ pointsy0[npoints] = pointsy0[0];
+ pointsx1[npoints] = pointsx1[0];
+ pointsy1[npoints] = pointsy1[0];
+ npoints++;
+
+ if (wire)
+ {
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], pointsy0[i], -thick2);
+ polys += npoints;
+ glEnd();
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], pointsy0[i], thick2);
+ polys += npoints;
+ glEnd();
+# if 0
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx1[i], pointsy1[i], -thick2);
+ polys += npoints;
+ glEnd();
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx1[i], pointsy1[i], thick2);
+ polys += npoints;
+ glEnd();
+# endif
+ }
+ else
+ {
+ /* top */
+ glFrontFace(GL_CW);
+ glNormal3f(0, 0, -1);
+ glBegin (GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glVertex3f (pointsx0[i], pointsy0[i], -thick2);
+ glVertex3f (pointsx1[i], pointsy1[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ /* bottom */
+ glFrontFace(GL_CCW);
+ glNormal3f(0, 0, 1);
+ glBegin (GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glVertex3f (pointsx0[i], pointsy0[i], thick2);
+ glVertex3f (pointsx1[i], pointsy1[i], thick2);
+ }
+ polys += npoints;
+ glEnd();
+ }
+
+ /* inside edge */
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glNormal3f (-pointsx0[i], -pointsy0[i], 0);
+ glVertex3f ( pointsx0[i], pointsy0[i], thick2);
+ glVertex3f ( pointsx0[i], pointsy0[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ glPopMatrix();
+ }
+ }
+
+
+ /* Attach the bottom-right dingus...
+ */
+ {
+ GLfloat w = 0.05;
+ GLfloat h = 0.19;
+ GLfloat th;
+
+ glRotatef (49.5, 0, 0, 1);
+ glScalef (dc->gasket_size, dc->gasket_size, 1);
+ glTranslatef (0, (r0+r1)/2, 0);
+
+ /* buried box */
+ if (! wire)
+ {
+ glFrontFace(GL_CCW);
+ glBegin (wire ? GL_LINE_STRIP : GL_QUADS);
+ glNormal3f (0, 0, -1);
+ glVertex3f (-w/2, -h/2, -thick2); glVertex3f (-w/2, h/2, -thick2);
+ glVertex3f ( w/2, h/2, -thick2); glVertex3f ( w/2, -h/2, -thick2);
+ glNormal3f (1, 0, 0);
+ glVertex3f ( w/2, -h/2, -thick2); glVertex3f ( w/2, h/2, -thick2);
+ glVertex3f ( w/2, h/2, thick2); glVertex3f ( w/2, -h/2, thick2);
+ glNormal3f (0, 0, 1);
+ glVertex3f ( w/2, -h/2, thick2); glVertex3f ( w/2, h/2, thick2);
+ glVertex3f (-w/2, h/2, thick2); glVertex3f (-w/2, -h/2, thick2);
+ glNormal3f (-1, 0, 0);
+ glVertex3f (-w/2, -h/2, thick2); glVertex3f (-w/2, h/2, thick2);
+ glVertex3f (-w/2, h/2, -thick2); glVertex3f (-w/2, -h/2, -thick2);
+ polys++;
+ glEnd();
+ }
+
+ npoints = 0;
+ for (th = (wire ? 0 : -0.1);
+ th <= M_PI + 0.1;
+ th += (M_PI / (wire ? 5 : 32)))
+ {
+ pointsx0[npoints] = w/2 * cos(th);
+ pointsy0[npoints] = w/2 * sin(th);
+ npoints++;
+ polys++;
+ }
+
+ /* front inside curve */
+ glNormal3f (0, 0, -1);
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN);
+ if (! wire) glVertex3f (0, h/2, -thick2);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], h/2 + pointsy0[i], -thick2);
+ polys += npoints;
+ glEnd();
+
+ /* front outside curve */
+ glFrontFace(GL_CCW);
+ glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN);
+ if (! wire) glVertex3f (0, -h/2, -thick2);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], -h/2 - pointsy0[i], -thick2);
+ polys += npoints;
+ glEnd();
+
+ /* back inside curve */
+ glNormal3f (0, 0, 1);
+ glFrontFace(GL_CCW);
+ glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN);
+ if (! wire) glVertex3f (0, h/2, thick2);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], h/2 + pointsy0[i], thick2);
+ polys += npoints;
+ glEnd();
+
+ /* back outside curve */
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINE_STRIP : GL_TRIANGLE_FAN);
+ if (! wire) glVertex3f (0, -h/2, thick2);
+ for (i = 0; i < npoints; i++)
+ glVertex3f (pointsx0[i], -h/2 - pointsy0[i], thick2);
+ polys += npoints;
+ glEnd();
+
+ /* inside curve */
+ glFrontFace(GL_CCW);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glNormal3f (pointsx0[i], pointsy0[i], 0);
+ glVertex3f (pointsx0[i], h/2 + pointsy0[i], thick2);
+ glVertex3f (pointsx0[i], h/2 + pointsy0[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+
+ /* outside curve */
+ glFrontFace(GL_CW);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < npoints; i++)
+ {
+ glNormal3f (pointsx0[i], -pointsy0[i], 0);
+ glVertex3f (pointsx0[i], -h/2 - pointsy0[i], thick2);
+ glVertex3f (pointsx0[i], -h/2 - pointsy0[i], -thick2);
+ }
+ polys += npoints;
+ glEnd();
+ }
+
+ free (pointsx0);
+ free (pointsy0);
+ free (pointsx1);
+ free (pointsy1);
+ free (normals);
+
+ glPopMatrix();
+ return polys;
+}
+
+static int
+make_frame (logo_configuration *dc, int wire)
+{
+ int polys = 0;
+ int i, j;
+ GLfloat x[20], y[20];
+ GLfloat corner_cut = 0.5;
+
+ glPushMatrix();
+ glRotatef (90, 0, 1, 0);
+ glScalef (4 * dc->frame_size,
+ 4 * dc->frame_size,
+ 4 * dc->frame_size);
+
+ x[0] = -dc->frame_thickness;
+ x[1] = -dc->frame_thickness * corner_cut;
+ x[2] = 0;
+ x[3] = 0.5 - dc->triangle_size;
+ x[4] = 0.5;
+ x[5] = 0.5 + dc->triangle_size;
+ x[6] = 1;
+ x[7] = 1 + dc->frame_thickness * corner_cut;
+ x[8] = 1 + dc->frame_thickness;
+
+ y[0] = -dc->frame_thickness;
+ y[1] = -dc->frame_thickness * corner_cut;
+ y[2] = 0;
+ y[3] = dc->triangle_size;
+
+ /* front and back
+ */
+ glTranslatef (-0.5, -0.5, dc->frame_depth / 4);
+ if (! wire)
+ for (j = 0; j <= 1; j++)
+ {
+ if (j) glTranslatef (0, 0, -dc->frame_depth / 2);
+ glFrontFace (j ? GL_CCW : GL_CW);
+ for (i = 0; i < 4; i++)
+ {
+ glNormal3f (0, 0, (j ? -1 : 1));
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ glVertex3f (x[0], y[1], 0); glVertex3f (x[0], y[2], 0);
+ glVertex3f (x[1], y[0], 0); glVertex3f (x[1], y[2], 0);
+ glVertex3f (x[3], y[0], 0); glVertex3f (x[3], y[2], 0);
+ glVertex3f (x[4], y[0], 0); glVertex3f (x[4], y[3], 0);
+ glVertex3f (x[5], y[0], 0); glVertex3f (x[5], y[2], 0);
+ glVertex3f (x[7], y[0], 0); glVertex3f (x[7], y[2], 0);
+ glVertex3f (x[8], y[1], 0); glVertex3f (x[8], y[2], 0);
+ polys += 6;
+ glEnd ();
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef (90, 0, 0, 1);
+ glTranslatef (-0.5, -0.5, 0);
+ }
+ }
+
+ /* ledges
+ */
+ glFrontFace (GL_CCW);
+ for (i = 0; i < 4; i++)
+ {
+ glNormal3f (0, 1, 0);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ glVertex3f (x[2], y[2], 0); glVertex3f (x[2], y[2], dc->frame_depth/2);
+ glVertex3f (x[3], y[2], 0); glVertex3f (x[3], y[2], dc->frame_depth/2);
+ glVertex3f (x[4], y[3], 0); glVertex3f (x[4], y[3], dc->frame_depth/2);
+ glVertex3f (x[5], y[2], 0); glVertex3f (x[5], y[2], dc->frame_depth/2);
+ glVertex3f (x[6], y[2], 0); glVertex3f (x[6], y[2], dc->frame_depth/2);
+ polys += 4;
+ glEnd ();
+
+ glNormal3f (0, -1, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (x[7], y[0], 0);
+ glVertex3f (x[7], y[0], dc->frame_depth/2);
+ glVertex3f (x[1], y[0], dc->frame_depth/2);
+ glVertex3f (x[1], y[0], 0);
+ polys++;
+ glEnd ();
+
+ glNormal3f (1, -1, 0);
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (x[8], y[1], 0);
+ glVertex3f (x[8], y[1], dc->frame_depth/2);
+ glVertex3f (x[7], y[0], dc->frame_depth/2);
+ glVertex3f (x[7], y[0], 0);
+ polys++;
+ glEnd ();
+
+ if (wire)
+ {
+ glNormal3f (0, 1, 0);
+ for (j = 0; j <= 1; j++)
+ {
+ glBegin (GL_LINE_STRIP);
+ glVertex3f (x[2], y[2], j*dc->frame_depth/2);
+ glVertex3f (x[3], y[2], j*dc->frame_depth/2);
+ glVertex3f (x[4], y[3], j*dc->frame_depth/2);
+ glVertex3f (x[5], y[2], j*dc->frame_depth/2);
+ glVertex3f (x[6], y[2], j*dc->frame_depth/2);
+ polys += 4;
+ glEnd ();
+ }
+ }
+
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef (90, 0, 0, 1);
+ glTranslatef (-0.5, -0.5, 0);
+ }
+
+ glPopMatrix();
+ return polys;
+}
+
+
+/* Make some pizza.
+ */
+
+#ifdef HAVE_TESS
+
+typedef struct {
+ GLdouble *points;
+ int i;
+} tess_out;
+
+
+static void
+tess_error_cb (GLenum errorCode)
+{
+ fprintf (stderr, "%s: tesselation error: %s\n",
+ progname, gluErrorString(errorCode));
+ exit (0);
+}
+
+static void
+tess_combine_cb (GLdouble coords[3], GLdouble *d[4], GLfloat w[4],
+ GLdouble **data_out)
+{
+ GLdouble *new = (GLdouble *) malloc (3 * sizeof(*new));
+ new[0] = coords[0];
+ new[1] = coords[1];
+ new[2] = coords[2];
+ *data_out = new;
+}
+
+
+#if 0
+static void
+tess_vertex_cb (void *vertex_data, void *closure)
+{
+ tess_out *to = (tess_out *) closure;
+ GLdouble *v = (GLdouble *) vertex_data;
+ to->points[to->i++] = v[0];
+ to->points[to->i++] = v[1];
+ to->points[to->i++] = v[2];
+}
+#endif
+
+static void
+tess_begin_cb (GLenum which)
+{
+ glBegin(which);
+}
+
+static void
+tess_end_cb (void)
+{
+ glEnd();
+}
+
+#endif /* HAVE_TESS */
+
+
+static int
+make_pizza (logo_configuration *dc, int facetted, int wire)
+{
+ int polys = 0;
+ int topfaces = (facetted ? 48 : 120);
+ int discfaces = (facetted ? 12 : 120);
+ int npoints = topfaces * 2 + 100;
+ GLdouble *points = (GLdouble *) calloc (npoints * 3, sizeof(GLdouble));
+ int nholes = 3;
+ GLdouble *holes = (GLdouble *) calloc (topfaces*nholes*3, sizeof(GLdouble));
+
+ GLfloat step = M_PI * 2 / 6 / topfaces;
+ GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4;
+ GLfloat th, x, y, s;
+ int i, j, k;
+ int endpoints;
+
+# ifdef HAVE_TESS
+ tess_out TO, *to = &TO;
+ GLUtesselator *tess = gluNewTess();
+
+ to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble));
+ to->i = 0;
+
+# ifndef _GLUfuncptr
+# define _GLUfuncptr void(*)(void)
+# endif
+
+ gluTessCallback(tess,GLU_TESS_BEGIN, (_GLUfuncptr)tess_begin_cb);
+ gluTessCallback(tess,GLU_TESS_VERTEX, (_GLUfuncptr)glVertex3dv);
+ gluTessCallback(tess,GLU_TESS_END, (_GLUfuncptr)tess_end_cb);
+ gluTessCallback(tess,GLU_TESS_COMBINE, (_GLUfuncptr)tess_combine_cb);
+ gluTessCallback(tess,GLU_TESS_ERROR, (_GLUfuncptr)tess_error_cb);
+
+ gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire);
+ gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
+
+# endif /* HAVE_TESS */
+
+ glPushMatrix();
+
+ s = 1.9;
+ glRotatef (180, 0, 0, 1);
+ glScalef (s, s, s);
+ glRotatef (90, 0, 1, 0);
+ glTranslatef (-0.53, 0, 0);
+ glRotatef (-30, 0, 0, 1);
+
+ /* Compute the wedge */
+ th = 0;
+ j = 0;
+
+ /* Edge 1 */
+ {
+ GLfloat edge[] = {
+ 0.000, 0.000,
+ 0.000, 0.210,
+ 0.042, 0.230,
+ 0.042, 0.616,
+ 0.000, 0.641,
+ };
+ for (i = 0; i < countof(edge)/2; i++)
+ {
+ points[j++] = edge[i*2+1];
+ points[j++] = edge[i*2];
+ points[j++] = 0;
+ }
+ }
+
+ s = 0.798; /* radius of end of slice, before crust gap */
+ for (i = 0; i < topfaces; i++)
+ {
+ points[j++] = cos(th) * s;
+ points[j++] = sin(th) * s;
+ points[j++] = 0;
+ th += step;
+ }
+
+ /* Edge 2 */
+ {
+ GLfloat edge[] = {
+ 0.613, 0.353,
+ 0.572, 0.376,
+ 0.455, 0.309,
+ 0.452, 0.260,
+ 0.332, 0.192,
+ 0.293, 0.216,
+ 0.178, 0.149,
+ 0.178, 0.102,
+ };
+ for (i = 0; i < countof(edge)/2; i++)
+ {
+ points[j++] = edge[i*2+1];
+ points[j++] = edge[i*2];
+ points[j++] = 0;
+ }
+ endpoints = j/3;
+ }
+
+
+ /* Draw the rim of the slice */
+ glBegin (wire ? GL_LINES : GL_QUADS);
+ x = points[0];
+ y = points[1];
+ for (i = (wire ? 0 : 1); i < endpoints; i++)
+ {
+ GLdouble *p = points + (i*3);
+
+ do_normal (p[0], p[1], -thick2,
+ p[0], p[1], thick2,
+ x, y, thick2);
+ if (!wire)
+ {
+ glVertex3f (x, y, -thick2);
+ glVertex3f (x, y, thick2);
+ }
+ glVertex3f (p[0], p[1], thick2);
+ glVertex3f (p[0], p[1], -thick2);
+ x = p[0];
+ y = p[1];
+ polys++;
+ }
+
+ do_normal (points[0], points[1], -thick2,
+ points[0], points[1], thick2,
+ x, y, thick2);
+ glVertex3f (x, y, -thick2);
+ glVertex3f (x, y, thick2);
+ glVertex3f (points[0], points[1], thick2);
+ glVertex3f (points[0], points[1], -thick2);
+ polys++;
+ glEnd();
+
+# ifndef HAVE_TESS
+ if (wire)
+ {
+ /* Outline of slice */
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < endpoints; i++)
+ glVertex3f (points[i*3], points[i*3+1], -thick2);
+ glEnd();
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < endpoints; i++)
+ glVertex3f (points[i*3], points[i*3+1], thick2);
+ glEnd();
+ }
+# endif /* HAVE_TESS */
+
+ /* Compute the holes */
+ step = M_PI * 2 / discfaces;
+ for (k = 0; k < nholes; k++)
+ {
+ GLdouble *p = holes + (discfaces * 3 * k);
+ th = 0;
+ j = 0;
+ switch (k) {
+ case 0: x = 0.34; y = 0.17; s = 0.05; break;
+ case 1: x = 0.54; y = 0.17; s = 0.06; break;
+ case 2: x = 0.55; y = 0.36; s = 0.06; break;
+ default: abort(); break;
+ }
+ for (i = 0; i < discfaces; i++)
+ {
+ p[j++] = x + cos(M_PI*2 - th) * s;
+ p[j++] = y + sin(M_PI*2 - th) * s;
+ p[j++] = 0;
+ th += step;
+ }
+ }
+
+
+ /* Draw the inside rim of the holes */
+ for (k = 0; k < nholes; k++)
+ {
+ GLdouble *p = holes + (discfaces * 3 * k);
+
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < discfaces; i++)
+ {
+ GLdouble *p2 = p + (i*3);
+ if (i > 0)
+ do_normal (p2[0], p2[1], -thick2,
+ p2[0], p2[1], thick2,
+ p2[-3], p2[-2], thick2);
+ glVertex3f (p2[0], p2[1], -thick2);
+ glVertex3f (p2[0], p2[1], thick2);
+ polys++;
+ }
+ glVertex3f (p[0], p[1], -thick2);
+ glVertex3f (p[0], p[1], thick2);
+ polys++;
+ glEnd();
+# ifndef HAVE_TESS
+ if (wire)
+ {
+ /* Outline of holes */
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < discfaces; i++)
+ glVertex3f (p[i*3], p[i*3+1], -thick2);
+ glEnd();
+ glBegin (GL_LINE_LOOP);
+ for (i = 0; i < discfaces; i++)
+ glVertex3f (p[i*3], p[i*3+1], thick2);
+ glEnd();
+ }
+# endif /* !HAVE_TESS */
+ }
+
+# ifdef HAVE_TESS
+ glTranslatef (0, 0, -thick2);
+ for (y = 0; y <= 1; y++)
+ {
+ if (y) glTranslatef (0, 0, thick2*2);
+
+ /* A non-convex polygon */
+ gluTessBeginPolygon (tess, to);
+
+ glNormal3f (0, 0, (y > 0 ? 1 : -1));
+ gluTessNormal (tess, 0, 0, (y > 0 ? 1 : -1));
+ glFrontFace (GL_CCW);
+
+ /* Tess the wedge */
+ gluTessBeginContour (tess);
+ for (i = 0; i < endpoints; i++)
+ {
+ GLdouble *p = points + (i*3);
+ gluTessVertex (tess, p, p);
+ polys++;
+ }
+ gluTessVertex (tess, points, points);
+ gluTessEndContour (tess);
+
+ /* Tess the holes */
+ for (k = 0; k < nholes; k++)
+ {
+ GLdouble *p = holes + (discfaces * 3 * k);
+ gluTessBeginContour (tess);
+ for (i = 0; i < discfaces; i++)
+ {
+ GLdouble *p2 = p + (i*3);
+ gluTessVertex (tess, p2, p2);
+ polys++;
+ }
+ gluTessEndContour (tess);
+ }
+
+ gluTessEndPolygon (tess);
+ }
+
+ glTranslatef (0, 0, -thick2);
+
+# else /* !HAVE_TESS */
+ if (! wire)
+ {
+ glTranslatef(0, 0, thick2);
+ glNormal3f (0, 0, 1);
+ glFrontFace (GL_CW);
+
+ /* Sadly, jwzgl's glVertexPointer seems not to be recordable inside
+ display lists. */
+# if 0
+ glDisableClientState (GL_COLOR_ARRAY);
+ glDisableClientState (GL_NORMAL_ARRAY);
+ glDisableClientState (GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState (GL_VERTEX_ARRAY);
+ glVertexPointer (3, GL_FLOAT, 0, dnapizza_triangles);
+ glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+# else
+ glBegin (GL_TRIANGLES);
+ for (i = 0; i < countof (dnapizza_triangles); i += 3)
+ glVertex3fv (dnapizza_triangles + i);
+ glEnd();
+# endif
+
+ glTranslatef(0, 0, -thick2*2);
+ glNormal3f (0, 0, -1);
+ glFrontFace (GL_CCW);
+
+# if 0
+ glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+# else
+ int i;
+ glBegin (GL_TRIANGLES);
+ for (i = 0; i < countof (dnapizza_triangles); i += 3)
+ glVertex3fv (dnapizza_triangles + i);
+ glEnd();
+# endif
+
+ glTranslatef(0, 0, thick2);
+ }
+# endif /* !HAVE_TESS */
+
+
+ /* Compute the crust */
+
+ s = 0.861; /* radius of inside of crust */
+ step = M_PI * 2 / 6 / topfaces;
+ th = 0;
+ j = 0;
+ for (i = 0; i < topfaces; i++)
+ {
+ points[j++] = cos(th) * s;
+ points[j++] = sin(th) * s;
+ points[j++] = 0;
+ th += step;
+ }
+
+ s = 1;
+ for (i = 0; i < topfaces; i++)
+ {
+ points[j++] = cos(th) * s;
+ points[j++] = sin(th) * s;
+ points[j++] = 0;
+ th -= step;
+ }
+
+ /* Draw the rim of the crust */
+ glFrontFace (GL_CCW);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < topfaces * 2; i++)
+ {
+ GLdouble *p = points + (i*3);
+ if (i == 0 || i == (topfaces*2)-1)
+ glNormal3f (0, -1, 0);
+ else if (i == topfaces-1 || i == topfaces)
+ glNormal3f (0, 1, 0);
+ else
+ do_normal (p[-3], p[-2], thick2,
+ p[0], p[1], thick2,
+ p[0], p[1], -thick2);
+ glVertex3f (p[0], p[1], -thick2);
+ glVertex3f (p[0], p[1], thick2);
+ polys++;
+ }
+ glVertex3f (points[0], points[1], -thick2);
+ glVertex3f (points[0], points[1], thick2);
+ polys++;
+ glEnd();
+
+ if (wire)
+ {
+ glBegin (GL_LINE_STRIP);
+ for (i = 0; i < topfaces * 2; i++)
+ {
+ GLdouble *p = points + (i*3);
+ glVertex3f (p[0], p[1], -thick2);
+ polys++;
+ }
+ glVertex3f (points[0], points[1], -thick2);
+ glEnd();
+
+ glBegin (GL_LINE_STRIP);
+ for (i = 0; i < topfaces * 2; i++)
+ {
+ GLdouble *p = points + (i*3);
+ glVertex3f (p[0], p[1], thick2);
+ polys++;
+ }
+ glVertex3f (points[0], points[1], thick2);
+ glEnd();
+ }
+
+ /* Draw the top of the crust */
+ if (! wire)
+ {
+ glFrontFace (GL_CW);
+ glBegin (wire ? GL_LINE_STRIP : GL_QUAD_STRIP);
+ glNormal3f (0, 0, -1);
+ if (!wire)
+ for (i = 0; i < topfaces; i++)
+ {
+ int ii = topfaces + (topfaces - i - 1);
+ GLdouble *p1 = points + (i*3);
+ GLdouble *p2 = points + (ii*3);
+ glVertex3f (p1[0], p1[1], -thick2);
+ glVertex3f (p2[0], p2[1], -thick2);
+ polys++;
+ }
+ polys++;
+ glEnd();
+
+ /* Draw the bottom of the crust */
+ glFrontFace (GL_CCW);
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ glNormal3f (0, 0, 1);
+ for (i = 0; i < topfaces; i++)
+ {
+ int ii = topfaces + (topfaces - i - 1);
+ GLdouble *p1 = points + (i*3);
+ GLdouble *p2 = points + (ii*3);
+ glVertex3f (p1[0], p1[1], thick2);
+ glVertex3f (p2[0], p2[1], thick2);
+ polys++;
+ }
+ polys++;
+ glEnd();
+ }
+
+# ifdef HAVE_TESS
+ gluDeleteTess (tess);
+ free (to->points);
+# endif /* HAVE_TESS */
+
+ free (points);
+ free (holes);
+
+ glPopMatrix();
+
+ return polys;
+}
+
+
+# ifdef CW
+
+/* Upcase string, convert Unicrud to ASCII, remove any non-letters.
+ */
+static char *
+codeword_simplify_text (const char *s0)
+{
+ char *s1 = utf8_to_latin1 ((s0 ? s0 : ""), True);
+ int L = strlen(s1);
+ char *s2 = (char *) malloc (L + 10);
+ char *s3 = s2;
+ int i;
+ for (i = 0; i < L; i++)
+ {
+ char c = s1[i];
+ if (c >= 'a' && c <= 'z')
+ c -= 'a'-'A';
+ if (c >= 'A' && c <= 'Z')
+ *s3++ = c;
+ }
+ *s3 = 0;
+ if (! *s2)
+ strcpy (s2, "CODEWORD");
+ return s2;
+}
+
+
+static void
+make_codeword_path (ModeInfo *mi)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ int letters = strlen (dc->codeword_text);
+
+ GLfloat rtick = dc->codeword_spread;
+ GLfloat iradius = rtick * dc->codeword_cap_size;
+
+ int dial = 0;
+ int letter;
+ GLfloat last_r = 0;
+
+ GLfloat inner_circum = M_PI * 2 * (iradius + rtick * 2);
+ GLfloat outer_circum = M_PI * 2 * (iradius + rtick * (letters + 1));
+ GLfloat facet_length = inner_circum / (26 * dc->codeword_facets);
+ int outer_facets = ceil (outer_circum / facet_length);
+
+ int *histo = (int *) calloc (letters * 26, sizeof(*histo));
+ XYZ *points = (XYZ *) calloc (letters * outer_facets, sizeof (*points));
+ int npoints = 0;
+
+ for (letter = -1; letter < letters; letter++)
+ {
+ if (letter == -1) /* Inner starting point */
+ {
+ points[npoints].x = iradius;
+ points[npoints].y = 0;
+ last_r = iradius;
+ npoints++;
+ }
+ else /* Add arc for this letter */
+ {
+ int direction = (letter & 1 ? -1 : 1);
+ int v = (dc->codeword_text[letter] - 'A' + 1);
+ int dial1 = dial + v * direction;
+
+ GLfloat th;
+ GLfloat th0 = M_PI * 2 / 26 * dial;
+ GLfloat th1 = M_PI * 2 / 26 * dial1;
+ GLfloat r = iradius + rtick * (letter + 2);
+ GLfloat circum = M_PI * 2 * r;
+ GLfloat arc_length = circum * v / 26;
+ int arc_facets = ceil (fabs (arc_length / facet_length));
+ GLfloat facet_th = (th1 - th0) / arc_facets;
+
+ if (arc_facets > outer_facets) abort();
+
+ /* Let's put some intermediate facets on the crossbars too,
+ so that the animation doesn't speed up on those. */
+ {
+ GLfloat rr;
+ for (rr = last_r + facet_length;
+ rr <= r - facet_length;
+ rr += facet_length)
+ {
+ points[npoints].x = rr * cos (th0);
+ points[npoints].y = rr * sin (th0);
+ npoints++;
+ }
+ last_r = r;
+ }
+
+
+ for (th = th0;
+ (th0 < th1
+ ? th <= th1 + facet_th
+ : th >= th1 + facet_th);
+ th += facet_th)
+ {
+ GLfloat th2 = th;
+ if (th0 < th1 && th > th1)
+ th2 = th1;
+ if (th0 > th1 && th < th1)
+ th2 = th1;
+ points[npoints].x = r * cos (th2);
+ points[npoints].y = r * sin (th2);
+
+ /* Ugh, add point only if it differs from prev.
+ Not sure how this happens. */
+ if (npoints == 0 ||
+ points[npoints-1].x != points[npoints].x ||
+ points[npoints-1].y != points[npoints].y)
+ npoints++;
+ }
+
+ /* Mark up the histo array to find the outer border. */
+ {
+ int i;
+ for (i = dial;
+ (direction > 0
+ ? i <= dial1
+ : i >= dial1);
+ i += direction)
+ {
+ int x = (i + 26) % 26;
+ int y;
+ for (y = 0; y <= letter; y++)
+ histo[y * 26 + x]++;
+ }
+ }
+
+ dc->codeword_text_points[letter] = npoints;
+
+ dial = dial1;
+ }
+ }
+
+ if (npoints >= letters * outer_facets) abort();
+
+# if 0
+ { /* Print histo */
+ int x, y;
+ for (y = 0; y < letters; y++)
+ {
+ fprintf (stderr, "%2d: ", y);
+ for (x = 0; x < 26; x++)
+ fprintf (stderr, "%x", histo[y * 26 + x]);
+ fprintf (stderr, "\n");
+ }
+ fprintf (stderr, "\n");
+ }
+# endif
+
+
+ /* Find a gap in the outer edge, to draw guide dots. */
+ {
+ int x, y;
+ int last_row = letters;
+ int start_dial = -1, end_dial = -1;
+
+ for (y = letters-1; y >= 0; y--)
+ {
+ for (x = 0; x < 26; x++)
+ {
+ if (histo[y * 26 + x] == 0)
+ {
+ if (last_row != y)
+ start_dial = end_dial = -1;
+ last_row = y;
+ if (start_dial == -1)
+ start_dial = x;
+ end_dial = x;
+ }
+ }
+ }
+
+ if (last_row < letters-1 && start_dial >= 0)
+ {
+ GLfloat r = iradius + rtick * (last_row + 2);
+ int i;
+
+ dc->codeword_nguides = 0;
+ dc->codeword_guides = (XYZ *)
+ calloc (end_dial - start_dial + 1, sizeof (*dc->codeword_guides));
+ for (i = start_dial; i <= end_dial; i++)
+ {
+ GLfloat th = i * M_PI * 2 / 26;
+ GLfloat x = r * cos (th);
+ GLfloat y = r * sin (th);
+ dc->codeword_guides[dc->codeword_nguides].x = x;
+ dc->codeword_guides[dc->codeword_nguides].y = y;
+ dc->codeword_nguides++;
+ }
+ }
+ free (histo);
+ histo = 0;
+ }
+
+ dc->codeword_path_npoints = npoints;
+ dc->codeword_path = points;
+}
+
+
+static int
+draw_codeword_cap (ModeInfo *mi)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+
+ int segments = dc->codeword_disc_facets;
+ GLfloat size = dc->codeword_spread * dc->codeword_cap_size;
+ GLfloat width = dc->codeword_line_width / 2;
+ GLfloat thick = dc->codeword_thickness / 2;
+ GLfloat r1 = size + width/2;
+ GLfloat r2 = size - width/2;
+ GLfloat facet, th, z;
+
+ if (wire) segments = 12;
+ facet = M_PI * 2 / segments;
+
+ glPushMatrix();
+
+ /* Top and bottom */
+
+ for (z = -thick; z <= thick; z += thick*2)
+ {
+ glNormal3f (0, 0, (z < 0 ? -1 : 1));
+ glFrontFace (z < 0 ? GL_CCW : GL_CW);
+
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (th = 0; th <= M_PI*2; th += facet)
+ {
+ GLfloat x = cos (th);
+ GLfloat y = sin (th);
+ glVertex3f (r1 * x, r1 * y, z);
+ glVertex3f (r2 * x, r2 * y, z);
+ }
+ glEnd();
+
+ if (wire)
+ {
+ glBegin (GL_LINE_LOOP);
+ for (th = 0; th <= M_PI*2; th += facet)
+ {
+ GLfloat x = cos (th);
+ GLfloat y = sin (th);
+ glVertex3f (r1 * x, r1 * y, z);
+ }
+ glEnd();
+ glBegin (GL_LINE_LOOP);
+ for (th = 0; th <= M_PI*2; th += facet)
+ {
+ GLfloat x = cos (th);
+ GLfloat y = sin (th);
+ glVertex3f (r2 * x, r2 * y, z);
+ }
+ glEnd();
+ }
+ }
+
+ /* Inside and outside */
+
+ for (z = -1; z <= 1; z += 2)
+ {
+ glFrontFace (z < 0 ? GL_CCW : GL_CW);
+
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (th = 0; th <= M_PI*2; th += facet)
+ {
+ GLfloat th1 = th + facet;
+ GLfloat x0 = cos (th);
+ GLfloat y0 = sin (th);
+ GLfloat x1 = cos (th1);
+ GLfloat y1 = sin (th1);
+ GLfloat r = z < 0 ? r1 : r2;
+
+ if (z < 0)
+ do_normal (r * x0, r * y0, thick,
+ r * x0, r * y0, -thick,
+ r * x1, r * y1, -thick);
+ else
+ do_normal (r * x1, r * y1, thick,
+ r * x1, r * y1, -thick,
+ r * x0, r * y0, -thick);
+
+ glVertex3f (r * x0, r * y0, thick);
+ glVertex3f (r * x0, r * y0, -thick);
+ }
+ glEnd();
+ }
+
+ glPopMatrix();
+
+ return polys;
+}
+
+
+static int
+draw_codeword_guides (ModeInfo *mi, GLfloat anim_ratio)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+
+ int segments = dc->codeword_disc_facets;
+ GLfloat s = dc->codeword_line_width / 2;
+ GLfloat each = 1.0 / dc->codeword_nguides;
+ int i;
+
+ if (wire) segments = 6;
+
+ for (i = 0; i < dc->codeword_nguides; i++)
+ {
+ GLfloat ratio;
+ if (anim_ratio < i*each) ratio = 0;
+ else if (anim_ratio >= (i+1)*each) ratio = 1;
+ else ratio = (anim_ratio - i*each) / each;
+
+ if (ratio <= 0) continue;
+ if (ratio == 0) ratio = 0.001;
+
+ glPushMatrix();
+ glTranslatef (dc->codeword_guides[i].x,
+ dc->codeword_guides[i].y,
+ dc->codeword_guides[i].z);
+
+ glScalef (ratio, ratio, ratio);
+
+ /* If the line width and thickness are pretty close to each other,
+ use spheres. Otherwise use tubes.
+ */
+ if (dc->codeword_thickness < dc->codeword_line_width * 1.3 &&
+ dc->codeword_thickness > dc->codeword_line_width / 1.3)
+ {
+ glScalef (s, s, s);
+ glFrontFace (GL_CCW);
+ polys += unit_sphere (segments, segments, wire);
+ }
+ else
+ {
+ polys += tube (0, 0, -dc->codeword_thickness / 2,
+ 0, 0, dc->codeword_thickness / 2,
+ s, 0, segments, True, True, wire);
+ }
+
+ glPopMatrix();
+ }
+
+ return polys;
+}
+
+
+/* Compute the characters at which the cursor is currently pointing,
+ and render it on the logo.
+ */
+static void
+codeword_text_output (ModeInfo *mi, GLfloat anim_ratio)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ int i;
+ int L = strlen (dc->codeword_text);
+ int point = dc->codeword_path_npoints * anim_ratio;
+ Bool hit = False;
+
+ if (dc->anim_state == CODEWORD_BLANK)
+ point = 0;
+
+ for (i = 0; i < L; i++)
+ {
+ if (point >= dc->codeword_text_points[i])
+ dc->codeword_text_out[i] = dc->codeword_text[i];
+ else if (hit)
+ dc->codeword_text_out[i] = 0;
+ else
+ {
+ int steps = dc->codeword_text[i] - 'A' + 1;
+ int last = (i > 0 ? dc->codeword_text_points[i-1] : 0);
+ double ratio = ((point - last) /
+ (double) (dc->codeword_text_points[i] - last));
+ char chr = 'A' + (ratio * steps);
+ if (ratio < 0.1) chr = 0;
+ dc->codeword_text_out[i] = chr;
+ hit = True;
+ }
+ }
+ dc->codeword_text_out[i] = 0;
+
+ if (*dc->codeword_text_out &&
+ !strcmp (dc->codeword_text, "CODEWORD"))
+ {
+ int i;
+ int L2 = strlen (dc->codeword_text_out);
+ GLfloat ss = 0.01;
+ int ascent, descent;
+
+ glPushMatrix();
+ glColor4fv (dc->codeword_color);
+ glRotatef (90, 0, 1, 0);
+ glRotatef (-90, 0, 0, 1);
+
+ for (i = 0; i < L2; i++)
+ {
+ XCharStruct e;
+ char buf[2];
+ glPushMatrix();
+ glRotatef ((i + 0.5) * 360 / 26.0, 0, 0, 1);
+
+# if 0
+ {
+ GLfloat th;
+ glDisable(GL_LIGHTING);
+ glBegin(GL_LINES);
+ glVertex3f(0,0,0);
+ glVertex3f(0,-4,0);
+ glEnd();
+ glBegin(GL_LINE_STRIP);
+ for (th = M_PI * 1.45; th < M_PI * 1.55; th += 0.1)
+ {
+ GLfloat r = 3.85;
+ glVertex3f (r * cos(th), r * sin(th), 0);
+ }
+ glEnd();
+ if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING);
+ }
+# endif
+
+ glTranslatef (0, -dc->codeword_spread * (L - 1), 0);
+ glScalef (ss, ss, ss);
+ buf[0] = dc->codeword_text_out[i] + ('a' - 'A');
+ buf[1] = 0;
+ texture_string_metrics (dc->font, buf, &e, &ascent, &descent);
+
+# ifdef HAVE_MOBILE
+ /* #### Magic magic magic WTF... */
+ glScalef (0.5, 0.5, 0.5);
+# endif
+
+ glTranslatef (-e.width * 1.0,
+ -(ascent + descent + e.descent * 2.4), /* #### WTF */
+ 0);
+
+ glScalef (2, 2, 2);
+
+# if 0
+ glDisable(GL_LIGHTING);
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(0, 0, 0);
+ glVertex3f(e.width, 0, 0);
+ glVertex3f(e.width, e.ascent + e.descent, 0);
+ glVertex3f(0, e.ascent + e.descent, 0);
+ glEnd();
+ if (!MI_IS_WIREFRAME(mi)) glEnable(GL_LIGHTING);
+# endif
+
+ glDisable(GL_CULL_FACE); /* tell texfont.c to draw both sides */
+ print_texture_string (dc->font, buf);
+ glEnable(GL_CULL_FACE);
+
+ glPopMatrix();
+ }
+ glPopMatrix();
+ }
+}
+
+
+/* Convert the precomputed path to a thick line of polygons.
+ We could actually precompute all of these polygons too,
+ but it's fast enough.
+ */
+static int
+draw_codeword_path (ModeInfo *mi)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int polys = 0;
+
+ GLfloat anim_ratio = (dc->anim_state == CODEWORD_IN ? dc->anim_ratio :
+ dc->anim_state == CODEWORD_OUT ? 1 - dc->anim_ratio :
+ dc->anim_state == CODEWORD_BLANK ? 0 :
+ 1);
+ int last_anim_point = 0;
+
+ GLfloat width = dc->codeword_line_width / 2;
+ GLfloat thick = dc->codeword_thickness / 2;
+ int i, k;
+ GLfloat j;
+
+ int quad_size = (dc->codeword_path_npoints + 1) * 2;
+ XYZ *quads = (XYZ *) calloc (quad_size, sizeof(*quads));
+ XYZ *norms = (XYZ *) calloc (quad_size, sizeof(*norms));
+ int nquads = 0;
+
+ for (i = 0; i < dc->codeword_path_npoints; i++)
+ {
+ XYZ p1 = dc->codeword_path[i];
+ XYZ p2 = (i < dc->codeword_path_npoints-1
+ ? dc->codeword_path[i+1]
+ : dc->codeword_path[i-1]);
+ XYZ p1a, p1b;
+
+ XYZ n; /* normal of the first line segment */
+ n.x = -(p2.y - p1.y);
+ n.y = (p2.x - p1.x);
+ n.z = 0;
+ normalize (&n);
+
+ if (i == 0)
+ {
+ p1a.x = p1.x - width / 2 * n.x;
+ p1a.y = p1.y - width / 2 * n.y;
+ p1a.z = 0;
+
+ p1b.x = p1.x + width / 2 * n.x;
+ p1b.y = p1.y + width / 2 * n.y;
+ p1b.z = 0;
+ }
+ else if (i == dc->codeword_path_npoints - 1)
+ {
+ p1b.x = p1.x - width / 2 * n.x;
+ p1b.y = p1.y - width / 2 * n.y;
+ p1b.z = 0;
+
+ p1a.x = p1.x + width / 2 * n.x;
+ p1a.y = p1.y + width / 2 * n.y;
+ p1a.z = 0;
+ }
+ else
+ {
+ XYZ p0 = dc->codeword_path[i-1];
+
+ XYZ t, t0, t1; /* tangent of corner between two line segments */
+ XYZ m; /* miter line: normal of tangent */
+ GLfloat d; /* length of miter */
+
+ t0.x = p2.x - p1.x;
+ t0.y = p2.y - p1.y;
+ t0.z = p2.z - p1.z;
+ normalize (&t0);
+
+ t1.x = p1.x - p0.x;
+ t1.y = p1.y - p0.y;
+ t1.z = p1.z - p0.z;
+ normalize (&t1);
+
+ t.x = t0.x + t1.x;
+ t.y = t0.y + t1.y;
+ t.z = t0.z + t1.z;
+ normalize (&t);
+
+ m.x = -t.y;
+ m.y = t.x;
+ m.z = 0;
+
+ /* find length of miter by projecting it on one of the normals */
+ d = width / 2 / dot (m, n);
+
+ p1a.x = p1.x - d * m.x;
+ p1a.y = p1.y - d * m.y;
+ p1a.z = 0;
+
+ p1b.x = p1.x + d * m.x;
+ p1b.y = p1.y + d * m.y;
+ p1b.z = 0;
+ }
+
+ quads[nquads++] = p1a;
+ quads[nquads++] = p1b;
+
+ if (nquads >= quad_size) abort();
+
+ if (i / (double) dc->codeword_path_npoints > anim_ratio)
+ break;
+
+ last_anim_point = i;
+ }
+
+
+ /* Compute normals for each point along the interior edge */
+ for (k = 0; k <= 1; k++)
+ {
+ for (i = k; i < nquads-2; i += 2)
+ {
+ XYZ p1a = quads[i];
+ XYZ p2a = quads[i+2];
+ XYZ p1b = p1a;
+ XYZ p2b = p2a;
+ p1a.z = thick; /* a: top */
+ p1b.z = -thick; /* b: bottom */
+ p2a.z = thick;
+ p2b.z = -thick;
+
+ norms[i] = (k == 0
+ ? calc_normal (p1a, p1b, p2b)
+ : calc_normal (p2a, p2b, p1a));
+ }
+ }
+
+ glPushMatrix();
+ glColor4fv (dc->codeword_color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, dc->codeword_color);
+
+# ifdef HAVE_MOBILE /* Make the whole thing fit on the phone screen */
+ {
+ GLfloat size = MI_WIDTH(mi) < MI_HEIGHT(mi) ? MI_WIDTH(mi) : MI_HEIGHT(mi);
+ glScalef (0.9, 0.9, 0.9);
+ if (size <= 768) /* iPad retina / iPhone 6 */
+ glScalef (0.7, 0.7, 0.7);
+ }
+# endif
+
+ codeword_text_output (mi, anim_ratio);
+
+ glRotatef (90, 1, 0, 0);
+ glRotatef (90, 0, 1, 0);
+ glRotatef (-90, 0, 0, 1);
+ glScalef (0.8, 0.8, 0.8);
+
+ glNormal3f (0, 0, -1);
+
+ if (anim_ratio <= 0)
+ {
+ polys += draw_codeword_cap (mi);
+ goto DONE;
+ }
+
+# if 0
+ glColor3f (1, 0, 0);
+ glBegin(GL_LINE_STRIP);
+ for (i = 0; i < dc->codeword_path_npoints; i++)
+ {
+ glVertex3f (dc->codeword_path[i].x,
+ dc->codeword_path[i].y,
+ dc->codeword_path[i].z);
+ polys++;
+ }
+ glEnd();
+ glColor4fv (dc->codeword_color);
+# endif
+
+ if (wire)
+ {
+ int k;
+ GLfloat j;
+ for (i = 0; i <= 1; i++)
+ for (j = -thick; j <= thick; j += thick*2)
+ {
+ glBegin (GL_LINE_STRIP);
+ for (k = i; k < nquads; k += 2)
+ {
+ glVertex3f (quads[k].x, quads[k].y, j);
+ polys++;
+ }
+ glEnd();
+ }
+ }
+
+ /* Top and bottom */
+
+ for (j = -thick; j <= thick; j += thick*2)
+ {
+ if (j < 0)
+ {
+ glNormal3f (0, 0, -1);
+ glFrontFace (GL_CW);
+ }
+ else
+ {
+ glNormal3f (0, 0, 1);
+ glFrontFace (GL_CCW);
+ }
+ glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < nquads; i += 2)
+ {
+ glVertex3f (quads[i+1].x, quads[i+1].y, j);
+ glVertex3f (quads[i].x, quads[i].y, j);
+ polys++;
+ }
+ glEnd();
+ }
+
+ /* Edges */
+
+ for (k = 0; k <= 1; k++)
+ {
+ if (k > 0)
+ {
+ glNormal3f (0, 0, -1);
+ glFrontFace (GL_CW);
+ }
+ else
+ {
+ glNormal3f (0, 0, 1);
+ glFrontFace (GL_CCW);
+ }
+
+ glBegin (wire ? GL_LINES : GL_QUADS);
+ for (i = k; i < nquads; i += 2)
+ {
+ XYZ p1a = quads[i];
+ XYZ p2a = (i < nquads-2) ? quads[i+2] : p1a;
+ XYZ p1b = p1a;
+ XYZ p2b = p2a;
+
+ XYZ n1 = norms[i];
+ XYZ n2 = (i < nquads-2) ? norms[i+2] : n1;
+
+ /* If the two normals are very similar, smooth the face.
+ If they are different, it's a sharp turn, and use the
+ same normal for both edges (not quite right, but close).
+ */
+ GLfloat angle = vector_angle (n1.x, n1.y, n1.z,
+ n2.x, n2.y, n2.z);
+ GLfloat pointy = 0.8;
+
+ p1a.z = thick;
+ p1b.z = -thick;
+ p2a.z = thick;
+ p2b.z = -thick;
+
+ glNormal3f (n1.x, n1.y, n1.z);
+ glVertex3f (p1a.x, p1a.y, p1a.z);
+ glVertex3f (p1b.x, p1b.y, p1b.z);
+
+ if (angle < pointy)
+ glNormal3f (n2.x, n2.y, n2.z);
+ glVertex3f (p2b.x, p2b.y, p2b.z);
+ glVertex3f (p2a.x, p2a.y, p2a.z);
+ polys++;
+ }
+ glEnd();
+ }
+
+
+ /* Only draw the guides when the path is almost complete;
+ fade them in and out based on completeness. */
+ {
+ GLfloat size = 0.95;
+ GLfloat r = (anim_ratio > size
+ ? (anim_ratio - size) / (1 - size)
+ : 0);
+ polys += draw_codeword_guides (mi, r);
+ }
+
+
+ /* Draw the start and end caps */
+ {
+ int i;
+ GLfloat x, y, z, x2, y2, z2, X, Y, Z;
+ GLfloat r = dc->codeword_spread * dc->codeword_cap_size;
+
+ i = 0;
+ x = dc->codeword_path[i].x;
+ y = dc->codeword_path[i].y;
+ z = dc->codeword_path[i].z;
+
+ x -= r;
+
+ glPushMatrix();
+ glTranslatef (x, y, z);
+ polys += draw_codeword_cap (mi);
+ glPopMatrix();
+
+ /* end cap */
+
+ i = last_anim_point + 1;
+ if (i > dc->codeword_path_npoints - 1)
+ i = dc->codeword_path_npoints - 1;
+
+ x = dc->codeword_path[i].x;
+ y = dc->codeword_path[i].y;
+ z = dc->codeword_path[i].z;
+
+ i--;
+ x2 = dc->codeword_path[i].x;
+ y2 = dc->codeword_path[i].y;
+ z2 = dc->codeword_path[i].z;
+
+ X = (x2 - x);
+ Y = (y2 - y);
+ Z = (z2 - z);
+
+ glPushMatrix();
+ glTranslatef (x, y, z);
+ glRotatef (-atan2 (X, Y) * (180 / M_PI), 0, 0, 1);
+ glRotatef ( atan2 (Z, sqrt(X*X + Y*Y)) * (180 / M_PI), 1, 0, 0);
+ glTranslatef (0, -r, 0);
+ polys += draw_codeword_cap (mi);
+ glPopMatrix();
+ }
+
+ DONE:
+
+ glPopMatrix();
+
+ free (quads);
+ free (norms);
+
+ return polys;
+}
+
+#endif /* CW */
+
+
+ENTRYPOINT void
+reshape_logo (ModeInfo *mi, int width, int height)
+{
+# ifdef DEBUG
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+# endif
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ GLfloat persp = 64; /* 30 */
+ GLfloat pos = 13; /* 30 */
+
+# ifdef DEBUG
+ persp += dc->persp_off;
+ pos += dc->pos_off;
+# endif
+
+ glViewport (0, 0, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (persp, 1/h, 1, 100);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0, 0, pos,
+ 0, 0, 0,
+ 0, 1, 0);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h); /* #### Why does this change the lighting? */
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+static void
+gl_init (ModeInfo *mi)
+{
+/* logo_configuration *dc = &dcs[MI_SCREEN(mi)]; */
+ int wire = MI_IS_WIREFRAME(mi);
+
+ GLfloat position[] = {0, 0, 0, 0};
+ GLfloat direction[] = {3, -1, -3};
+
+ position[0] = -direction[0];
+ position[1] = -direction[1];
+ position[2] = -direction[2];
+
+ if (!wire)
+ {
+ glLightfv(GL_LIGHT0, GL_POSITION, position);
+ glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction);
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ }
+}
+
+
+ENTRYPOINT void
+init_logo (ModeInfo *mi)
+{
+ logo_configuration *dc;
+ int do_gasket = get_boolean_resource(mi->dpy, "doGasket", "Boolean");
+ int do_helix = get_boolean_resource(mi->dpy, "doHelix", "Boolean");
+ int do_ladder = (do_helix &&
+ get_boolean_resource(mi->dpy, "doLadder", "Boolean"));
+ int do_frame = get_boolean_resource(mi->dpy, "doFrame", "Boolean");
+ GLfloat helix_rot = 147.0;
+
+ if (!do_gasket && !do_helix)
+ {
+ fprintf (stderr, "%s: no helix or gasket?\n", progname);
+ exit (1);
+ }
+
+ MI_INIT (mi, dcs);
+
+ dc = &dcs[MI_SCREEN(mi)];
+
+ if ((dc->glx_context = init_GL(mi)) != NULL) {
+ gl_init(mi);
+ reshape_logo (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ }
+
+ dc->wall_facets = get_integer_resource(mi->dpy, "wallFacets", "Integer");
+ dc->bar_facets = get_integer_resource(mi->dpy, "barFacets", "Integer");
+ dc->clockwise = get_boolean_resource(mi->dpy, "clockwise", "Boolean");
+ dc->turns = get_float_resource(mi->dpy, "turns", "Float");
+ dc->turn_spacing = get_float_resource(mi->dpy, "turnSpacing", "Float");
+ dc->bar_spacing = get_float_resource(mi->dpy, "barSpacing", "Float");
+ dc->wall_height = get_float_resource(mi->dpy, "wallHeight", "Float");
+ dc->wall_thickness = get_float_resource(mi->dpy, "wallThickness", "Float");
+ dc->bar_thickness = get_float_resource(mi->dpy, "barThickness", "Float");
+ dc->wall_taper = get_float_resource(mi->dpy, "wallTaper", "Float");
+
+ dc->gasket_size = get_float_resource(mi->dpy,"gasketSize", "Float");
+ dc->gasket_depth = get_float_resource(mi->dpy,"gasketDepth", "Float");
+ dc->gasket_thickness = get_float_resource(mi->dpy,"gasketThickness","Float");
+
+ dc->frame_size = get_float_resource(mi->dpy, "frameSize", "Float");
+ dc->frame_depth = get_float_resource(mi->dpy, "frameDepth", "Float");
+ dc->frame_thickness = get_float_resource(mi->dpy, "frameThickness", "Float");
+ dc->triangle_size = get_float_resource(mi->dpy, "triangleSize", "Float");
+
+ dc->speed = get_float_resource(mi->dpy, "speed", "Float");
+# ifdef CW
+ dc->codeword_text = get_string_resource(mi->dpy, "text", "String");
+ dc->codeword_text = codeword_simplify_text (dc->codeword_text);
+ dc->codeword_text_out =
+ calloc (strlen(dc->codeword_text) + 1, sizeof(*dc->codeword_text_out));
+ dc->codeword_text_points =
+ (int *) calloc (strlen(dc->codeword_text) + 1,
+ sizeof(*dc->codeword_text_points));
+
+ dc->codeword_facets = get_integer_resource(mi->dpy, "cwFacets", "Integer");
+ dc->codeword_disc_facets = get_integer_resource(mi->dpy,
+ "cwDiscFacets", "Integer");
+ dc->codeword_spread = get_float_resource(mi->dpy, "cwSpread", "Float");
+ dc->codeword_line_width = get_float_resource(mi->dpy, "cwLineWidth", "Float");
+ dc->codeword_thickness = get_float_resource(mi->dpy, "cwThickness", "Float");
+ dc->codeword_cap_size = get_float_resource(mi->dpy, "cwCapSize", "Float");
+# endif
+
+ {
+ char *s = get_string_resource (MI_DISPLAY (mi), "mode", "String");
+ if (!s || !*s || !strcasecmp (s, "helix"))
+ dc->mode = HELIX;
+ else if (!strcasecmp (s, "pizza"))
+ dc->mode = PIZZA;
+ else if (!strcasecmp (s, "both"))
+ dc->mode = HELIX_AND_PIZZA;
+# ifdef CW
+ else if (!strcasecmp (s, "codeword"))
+ dc->mode = CODEWORD_IN;
+# endif
+ else
+ {
+ fprintf (stderr,
+ "%s: mode must be helix, pizza or both, not \"%s\"\n",
+ progname, s);
+ exit (1);
+ }
+ if (s) free (s);
+
+ dc->anim_state = (dc->mode == HELIX_AND_PIZZA
+ ? ((random() & 1) ? HELIX : PIZZA)
+ : dc->mode);
+ dc->anim_ratio = 0;
+ }
+
+# ifdef CW
+ if (dc->mode == CODEWORD_IN)
+ dc->font = load_texture_font (MI_DISPLAY(mi), "cwFont");
+# endif
+
+# ifdef DEBUG
+ dc->label_font = load_texture_font (MI_DISPLAY(mi), "fpsFont");
+# endif
+
+ {
+ XColor xcolor;
+
+ char *color_name =
+ get_string_resource (mi->dpy, "foreground", "Foreground");
+ char *s2;
+ for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--)
+ if (*s2 == ' ' || *s2 == '\t')
+ *s2 = 0;
+ else
+ break;
+
+ if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor))
+ {
+ fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
+ exit (1);
+ }
+
+ dc->color[0] = xcolor.red / 65535.0;
+ dc->color[1] = xcolor.green / 65535.0;
+ dc->color[2] = xcolor.blue / 65535.0;
+ dc->color[3] = 1.0;
+
+ color_name = get_string_resource (mi->dpy, "cwForeground", "Foreground");
+ for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--)
+ if (*s2 == ' ' || *s2 == '\t')
+ *s2 = 0;
+ else
+ break;
+
+ if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor))
+ {
+ fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
+ exit (1);
+ }
+
+# ifdef CW
+ dc->codeword_color[0] = xcolor.red / 65535.0;
+ dc->codeword_color[1] = xcolor.green / 65535.0;
+ dc->codeword_color[2] = xcolor.blue / 65535.0;
+ dc->codeword_color[3] = 1.0;
+
+ color_name = get_string_resource (mi->dpy, "cwBackground", "Background");
+ for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--)
+ if (*s2 == ' ' || *s2 == '\t')
+ *s2 = 0;
+ else
+ break;
+
+ if (! XParseColor (MI_DISPLAY(mi), mi->xgwa.colormap, color_name, &xcolor))
+ {
+ fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
+ exit (1);
+ }
+
+ dc->codeword_bg[0] = xcolor.red / 65535.0;
+ dc->codeword_bg[1] = xcolor.green / 65535.0;
+ dc->codeword_bg[2] = xcolor.blue / 65535.0;
+ dc->codeword_bg[3] = 1.0;
+# endif /* CW */
+ }
+
+ dc->trackball = gltrackball_init (False);
+
+ dc->gasket_spinnerx.probability = 0.1;
+ dc->gasket_spinnery.probability = 0.1;
+ dc->gasket_spinnerz.probability = 1.0;
+ dc->gasket_spinnerx.easement = 0.08;
+ dc->gasket_spinnery.easement = 0.08;
+ dc->gasket_spinnerz.easement = 0.08;
+
+ dc->helix_spinnerz.probability = 0.6;
+ dc->helix_spinnerz.easement = 0.2;
+
+ dc->pizza_spinnerz.probability = 0.6;
+ dc->pizza_spinnery.probability = 0.6;
+ dc->pizza_spinnerz.easement = 0.2;
+ dc->pizza_spinnery.easement = 0.2;
+
+ dc->frame_spinner.probability = 5.0;
+ dc->frame_spinner.easement = 0.2;
+
+ dc->scene_spinnerx.probability = 0.1;
+ dc->scene_spinnery.probability = 0.0;
+ dc->scene_spinnerx.easement = 0.1;
+ dc->scene_spinnery.easement = 0.1;
+
+# ifdef CW
+ if (dc->mode == CODEWORD_IN)
+ {
+ double tilt_speed = 0.003;
+ dc->scene_rot = make_rotator (0, 0, 0, 0, tilt_speed, True);
+ }
+# endif
+
+ /* start the frame off-screen */
+ dc->frame_spinner.spinning_p = True;
+ dc->frame_spinner.position = 0.3;
+ dc->frame_spinner.speed = 0.001;
+
+ if (dc->speed > 0) /* start off with the gasket in motion */
+ {
+ dc->gasket_spinnerz.spinning_p = True;
+ dc->gasket_spinnerz.speed = (0.002
+ * ((random() & 1) ? 1 : -1)
+ * dc->speed);
+ }
+
+# ifdef DXF_OUTPUT_HACK
+ {
+# if 0
+ dc->frame_depth = dc->gasket_depth;
+ dxf_layer = 1;
+ dxf_color = 3;
+ dxf_start();
+ glPushMatrix();
+ glRotatef(90, 1, 0, 0);
+ glRotatef(90, 0, 0, 1);
+ make_pizza (dc, 0, 0);
+
+ glPushMatrix();
+ glRotatef(helix_rot, 0, 0, 1);
+ make_ladder (dc, 0, 0);
+ make_helix (dc, 0, 0);
+ glRotatef (180, 0, 0, 1);
+ make_helix (dc, 0, 0);
+ glPopMatrix();
+
+ dxf_layer++;
+ make_gasket (dc, 0);
+ dxf_layer++;
+ make_frame (dc, 0);
+ glPopMatrix();
+ dxf_end();
+# else
+ dxf_start();
+ glPushMatrix();
+ glRotatef(90, 1, 0, 0);
+ glRotatef(90, 0, 0, 1);
+ dc->anim_state = CODEWORD;
+ make_codeword_path (mi);
+ draw_codeword_path (mi);
+ glPopMatrix();
+ dxf_end();
+# endif
+ }
+# endif
+
+ glPushMatrix();
+ dc->helix_list = glGenLists (1);
+ glNewList (dc->helix_list, GL_COMPILE);
+ glRotatef(helix_rot, 0, 0, 1);
+ if (do_ladder) dc->polys[0] += make_ladder (dc, 0, 0);
+ if (do_helix) dc->polys[0] += make_helix (dc, 0, 0);
+ glRotatef(180, 0, 0, 1);
+ if (do_helix) dc->polys[0] += make_helix (dc, 0, 0);
+ glEndList ();
+ glPopMatrix();
+
+ glPushMatrix();
+ dc->helix_list_wire = glGenLists (1);
+ glNewList (dc->helix_list_wire, GL_COMPILE);
+/* glRotatef(helix_rot, 0, 0, 1); wtf? */
+ if (do_ladder) dc->polys[1] += make_ladder (dc, 1, 1);
+ if (do_helix) dc->polys[1] += make_helix (dc, 1, 1);
+ glRotatef(180, 0, 0, 1);
+ if (do_helix) dc->polys[1] += make_helix (dc, 1, 1);
+ glEndList ();
+ glPopMatrix();
+
+ glPushMatrix();
+ dc->helix_list_facetted = glGenLists (1);
+ glNewList (dc->helix_list_facetted, GL_COMPILE);
+ glRotatef(helix_rot, 0, 0, 1);
+ if (do_ladder) dc->polys[2] += make_ladder (dc, 1, 0);
+ if (do_helix) dc->polys[2] += make_helix (dc, 1, 0);
+ glRotatef(180, 0, 0, 1);
+ if (do_helix) dc->polys[2] += make_helix (dc, 1, 0);
+ glEndList ();
+ glPopMatrix();
+
+ dc->pizza_list = glGenLists (1);
+ glNewList (dc->pizza_list, GL_COMPILE);
+ if (do_frame) dc->polys[5] += make_pizza (dc, 0, 0);
+ glEndList ();
+
+ dc->pizza_list_wire = glGenLists (1);
+ glNewList (dc->pizza_list_wire, GL_COMPILE);
+ if (do_frame) dc->polys[6] += make_pizza (dc, 1, 1);
+ glEndList ();
+
+ dc->pizza_list_facetted = glGenLists (1);
+ glNewList (dc->pizza_list_facetted, GL_COMPILE);
+ if (do_frame) dc->polys[6] += make_pizza (dc, 1, 0);
+ glEndList ();
+
+ dc->gasket_list = glGenLists (1);
+ glNewList (dc->gasket_list, GL_COMPILE);
+ if (do_gasket) dc->polys[3] += make_gasket (dc, 0);
+ glEndList ();
+
+ dc->gasket_list_wire = glGenLists (1);
+ glNewList (dc->gasket_list_wire, GL_COMPILE);
+ if (do_gasket) dc->polys[4] += make_gasket (dc, 1);
+ glEndList ();
+
+ dc->frame_list = glGenLists (1);
+ glNewList (dc->frame_list, GL_COMPILE);
+ if (do_frame) dc->polys[5] += make_frame (dc, 0);
+ glEndList ();
+
+ dc->frame_list_wire = glGenLists (1);
+ glNewList (dc->frame_list_wire, GL_COMPILE);
+ if (do_frame) dc->polys[6] += make_frame (dc, 1);
+ glEndList ();
+
+# ifdef CW
+ make_codeword_path (mi);
+# endif
+
+ /* When drawing both solid and wireframe objects,
+ make sure the wireframe actually shows up! */
+ glEnable (GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset (1.0, 1.0);
+}
+
+
+ENTRYPOINT Bool
+logo_handle_event (ModeInfo *mi, XEvent *event)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, dc->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &dc->button_down_p))
+ return True;
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+
+# ifdef DEBUG
+ {
+ GLfloat step = 0.1;
+ if (c == 'a') dc->persp_off += step;
+ else if (c == 'z') dc->persp_off -= step;
+ else if (c == 's') dc->pos_off += step;
+ else if (c == 'x') dc->pos_off -= step;
+ else return False;
+
+ /* dc->pos_off = -dc->persp_off; */
+ reshape_logo (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ return True;
+ }
+# endif
+
+ if (c == ' ' || c == '\t')
+ {
+ switch (dc->anim_state) {
+ case HELIX:
+ dc->anim_state = HELIX_OUT;
+ dc->anim_ratio = 0.0;
+ return True;
+ case PIZZA:
+ dc->anim_state = PIZZA_OUT;
+ dc->anim_ratio = 0.0;
+ return True;
+# ifdef CW
+ case CODEWORD:
+ dc->anim_state = CODEWORD_OUT;
+ dc->anim_ratio = 0.0;
+ return True;
+# endif
+ default:
+ break;
+ }
+ }
+ }
+
+ return False;
+}
+
+
+static GLfloat
+spinner_ease (GLfloat x)
+{
+ /* Smooth curve up, ending at slope = 1. */
+ return cos ((x/2 + 1) * M_PI) + 1;
+}
+
+
+static void
+tick_spinner (ModeInfo *mi, spinner *s)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+
+ if (dc->speed == 0) return;
+ if (dc->button_down_p) return;
+
+ if (s->spinning_p)
+ {
+ s->position += s->speed;
+ if (s->position >= 1.0 || s->position <= 0.0)
+ {
+ s->position = 0;
+ s->position_eased = 0;
+ s->spinning_p = False;
+ }
+ else if (s->easement > 0 && s->position <= s->easement)
+ s->position_eased = (s->easement *
+ spinner_ease (s->position / s->easement));
+ else if (s->easement > 0 && s->position >= 1-s->easement)
+ s->position_eased = (1 - s->easement *
+ spinner_ease ((1 - s->position) / s->easement));
+ else
+ s->position_eased = s->position;
+ }
+ else if (s->probability &&
+ (random() % (int) (PROBABILITY_SCALE / s->probability)) == 0)
+ {
+ GLfloat ss = 0.004;
+ s->spinning_p = True;
+ s->position = 0;
+ do {
+ s->speed = dc->speed * (frand(ss/3) + frand(ss/3) + frand(ss/3));
+ } while (s->speed <= 0);
+ if (random() & 1)
+ {
+ s->speed = -s->speed;
+ s->position = 1.0;
+ }
+ }
+}
+
+
+static void
+link_spinners (ModeInfo *mi, spinner *s0, spinner *s1)
+{
+ if (s0->spinning_p && !s1->spinning_p)
+ {
+ GLfloat op = s1->probability;
+ s1->probability = PROBABILITY_SCALE;
+ tick_spinner (mi, s1);
+ s1->probability = op;
+ }
+}
+
+
+ENTRYPOINT void
+draw_logo (ModeInfo *mi)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat gcolor[4];
+ GLfloat specular[] = {0.8, 0.8, 0.8, 1.0};
+ GLfloat shininess = 50.0;
+ Bool pizza_p;
+# ifdef CW
+ Bool codeword_p;
+# endif
+
+ if (!dc->glx_context)
+ return;
+
+ mi->polygon_count = 0;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
+
+ if (!wire &&
+ dc->wire_overlay == 0 &&
+ (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
+ dc->wire_overlay = ((random() % 200) +
+ (random() % 200) +
+ (random() % 200));
+
+# ifndef DEBUG
+ tick_spinner (mi, &dc->gasket_spinnerx);
+ tick_spinner (mi, &dc->gasket_spinnery);
+ tick_spinner (mi, &dc->gasket_spinnerz);
+ tick_spinner (mi, &dc->helix_spinnerz);
+ tick_spinner (mi, &dc->pizza_spinnery);
+ tick_spinner (mi, &dc->pizza_spinnerz);
+ tick_spinner (mi, &dc->scene_spinnerx);
+ tick_spinner (mi, &dc->scene_spinnery);
+ tick_spinner (mi, &dc->frame_spinner);
+ link_spinners (mi, &dc->scene_spinnerx, &dc->scene_spinnery);
+# endif /* DEBUG */
+
+ switch (dc->anim_state)
+ {
+ case HELIX:
+ if (dc->mode == HELIX_AND_PIZZA &&
+ (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
+ dc->anim_state = HELIX_OUT;
+ break;
+
+ case HELIX_OUT:
+ dc->anim_ratio += 0.1 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = PIZZA_IN;
+ }
+ break;
+
+ case PIZZA_IN:
+ dc->anim_ratio += 0.1 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = PIZZA;
+ }
+ break;
+
+ case PIZZA:
+ if (dc->mode == HELIX_AND_PIZZA &&
+ (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
+ dc->anim_state = PIZZA_OUT;
+ break;
+
+ case PIZZA_OUT:
+ dc->anim_ratio += 0.1 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = HELIX_IN;
+ }
+ break;
+
+ case HELIX_IN:
+ dc->anim_ratio += 0.1 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = HELIX;
+ }
+ break;
+
+
+# ifdef CW
+ case CODEWORD_IN:
+ dc->scene_spinnerx.probability = 0.2;
+ dc->scene_spinnery.probability = 0.05;
+ if (! dc->button_down_p)
+ dc->anim_ratio += 0.004 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_state = CODEWORD;
+ dc->anim_ratio = frand (0.5);
+ }
+ break;
+
+ case CODEWORD:
+ dc->scene_spinnerx.probability = 0.5;
+ dc->scene_spinnery.probability = 0.2;
+ if (! dc->button_down_p)
+ dc->anim_ratio += (0.0005 + frand(0.002)) * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = CODEWORD_OUT;
+ }
+ break;
+
+ case CODEWORD_OUT:
+ dc->scene_spinnerx.probability = 0;
+ dc->scene_spinnery.probability = 0;
+ if (! dc->button_down_p)
+ dc->anim_ratio += 0.02 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = CODEWORD_BLANK;
+ }
+ break;
+
+ case CODEWORD_BLANK:
+ dc->scene_spinnerx.probability = 0;
+ dc->scene_spinnery.probability = 0;
+ if (! dc->button_down_p)
+ dc->anim_ratio += 0.01 * dc->speed;
+ if (dc->anim_ratio >= 1.0)
+ {
+ dc->anim_ratio = 0.0;
+ dc->anim_state = CODEWORD_IN;
+ }
+ break;
+# endif /* CW */
+
+ default:
+ abort();
+ break;
+ }
+
+# ifdef DEBUG
+ dc->anim_state = HELIX;
+ dc->wire_overlay = 0;
+# endif
+
+ pizza_p = (dc->anim_state == PIZZA ||
+ dc->anim_state == PIZZA_IN ||
+ dc->anim_state == PIZZA_OUT);
+
+# ifdef CW
+ codeword_p = (dc->anim_state == CODEWORD ||
+ dc->anim_state == CODEWORD_IN ||
+ dc->anim_state == CODEWORD_OUT ||
+ dc->anim_state == CODEWORD_BLANK);
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ {
+ GLfloat scale = 1.8;
+ glScalef(scale, scale, scale);
+
+ glColor3f(dc->color[0], dc->color[1], dc->color[2]);
+
+
+ /* Draw frame before trackball rotation */
+# ifdef CW
+ if (! codeword_p)
+# endif
+ {
+ GLfloat p = (dc->frame_spinner.position_eased >= 0
+ ? dc->frame_spinner.position_eased
+ : -dc->frame_spinner.position_eased);
+ GLfloat size = (p > 0.5 ? 1-p : p);
+ scale = 1 + (size * 10);
+ glPushMatrix();
+ /* gltrackball_rotate (dc->trackball); */
+ glRotatef(90, 1, 0, 0);
+ glRotatef(90, 0, 0, 1);
+
+ glScalef (1, scale, scale);
+ if (wire)
+ {
+ glDisable (GL_LIGHTING);
+ glCallList (dc->frame_list_wire);
+ mi->polygon_count += dc->polys[6];
+ }
+ else if (dc->wire_overlay != 0)
+ {
+ glCallList (dc->frame_list);
+ glDisable (GL_LIGHTING);
+ glColor3fv (dc->color);
+ glCallList (dc->frame_list_wire);
+ mi->polygon_count += dc->polys[6];
+ if (!wire) glEnable (GL_LIGHTING);
+ }
+ else
+ {
+ glCallList (dc->frame_list);
+ mi->polygon_count += dc->polys[5];
+ }
+ glPopMatrix();
+ }
+
+ gltrackball_rotate (dc->trackball);
+
+ glRotatef(90, 1, 0, 0);
+ glRotatef(90, 0, 0, 1);
+
+# ifdef CW
+ if (! codeword_p)
+# endif
+ {
+ glRotatef (360 * dc->scene_spinnerx.position_eased, 0, 1, 0);
+ glRotatef (360 * dc->scene_spinnery.position_eased, 0, 0, 1);
+
+ glPushMatrix();
+
+ glRotatef (360 * dc->gasket_spinnerx.position_eased, 0, 1, 0);
+ glRotatef (360 * dc->gasket_spinnery.position_eased, 0, 0, 1);
+ glRotatef (360 * dc->gasket_spinnerz.position_eased, 1, 0, 0);
+
+ memcpy (gcolor, dc->color, sizeof (dc->color));
+ if (dc->wire_overlay != 0)
+ {
+ gcolor[0] = gcolor[1] = gcolor[2] = 0;
+ specular[0] = specular[1] = specular[2] = 0;
+ shininess = 0;
+ }
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, specular);
+ glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, shininess);
+
+ if (wire)
+ {
+ glDisable (GL_LIGHTING);
+ glCallList (dc->gasket_list_wire);
+ mi->polygon_count += dc->polys[4];
+ }
+ else if (dc->wire_overlay != 0)
+ {
+ glCallList (dc->gasket_list);
+ glDisable (GL_LIGHTING);
+ glColor3fv (dc->color);
+ glCallList (dc->gasket_list_wire);
+ mi->polygon_count += dc->polys[4];
+ if (!wire) glEnable (GL_LIGHTING);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor);
+ }
+ else
+ {
+ glCallList (dc->gasket_list);
+ mi->polygon_count += dc->polys[3];
+ }
+ glPopMatrix();
+
+ if (pizza_p)
+ {
+ glRotatef (360 * dc->pizza_spinnery.position_eased, 1, 0, 0);
+ glRotatef (360 * dc->pizza_spinnerz.position_eased, 0, 0, 1);
+ }
+ else
+ {
+ glRotatef (360 * dc->helix_spinnerz.position_eased, 0, 0, 1);
+ }
+
+ scale = ((dc->anim_state == PIZZA_IN || dc->anim_state == HELIX_IN)
+ ? dc->anim_ratio
+ : ((dc->anim_state == PIZZA_OUT || dc->anim_state == HELIX_OUT)
+ ? 1.0 - dc->anim_ratio
+ : 1.0));
+ if (scale <= 0) scale = 0.001;
+ glScalef (scale, scale, scale);
+
+ if (wire)
+ {
+ glDisable (GL_LIGHTING);
+ if (pizza_p)
+ glCallList (dc->pizza_list_wire);
+ else
+ glCallList (dc->helix_list_wire);
+ mi->polygon_count += dc->polys[1];
+ }
+ else if (dc->wire_overlay != 0)
+ {
+ if (pizza_p)
+ glCallList (dc->pizza_list_facetted);
+ else
+ glCallList (dc->helix_list_facetted);
+
+ glDisable (GL_LIGHTING);
+ glColor3fv (dc->color);
+
+ if (pizza_p)
+ glCallList (dc->pizza_list_wire);
+ else
+ glCallList (dc->helix_list_wire);
+
+ mi->polygon_count += dc->polys[2];
+ if (!wire) glEnable (GL_LIGHTING);
+ }
+ else
+ {
+ if (pizza_p)
+ glCallList (dc->pizza_list);
+ else
+ glCallList (dc->helix_list);
+ mi->polygon_count += dc->polys[0];
+ }
+ }
+# ifdef CW
+ else /* codeword_p */
+ {
+# if 0
+ double max = 70; /* face front */
+ double x, y, z;
+ get_position (dc->scene_rot, &x, &y, &z, !dc->button_down_p);
+ glRotatef (max/2 - x*max, 0, 0, 1);
+ glRotatef (max/2 - y*max, 0, 1, 0);
+ /* glRotatef (max/2 - z*max, 1, 0, 0); */
+# else
+ glRotatef (360 * dc->scene_spinnerx.position_eased, 0, 1, 0);
+ glRotatef (360 * dc->scene_spinnery.position_eased, 0, 0, 1);
+# endif
+
+ glClearColor (dc->codeword_bg[0],
+ dc->codeword_bg[1],
+ dc->codeword_bg[2],
+ dc->codeword_bg[3]);
+ mi->polygon_count += draw_codeword_path (mi);
+ }
+# endif /* CW */
+ }
+ glPopMatrix();
+
+ if (dc->wire_overlay > 0)
+ dc->wire_overlay--;
+
+# ifdef DEBUG
+ {
+ char s[1024];
+ sprintf (s, "a/z, s/x; per = %0.2f pos = %0.2f",
+ dc->persp_off, dc->pos_off);
+ glColor3f (1,1,1);
+ print_texture_label (dpy, dc->label_font, MI_WIDTH(mi), MI_HEIGHT(mi),
+ 1, s);
+ }
+# endif
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/dnapizza.h b/hacks/glx/dnapizza.h
new file mode 100644
index 0000000..6dd48b9
--- /dev/null
+++ b/hacks/glx/dnapizza.h
@@ -0,0 +1,122 @@
+/* DNA Pizza Logo, Copyright (c) 2011-2012 Jamie Zawinski
+
+ Since GLUtesselator doesn't exist in the iOS build, the slice shape
+ of the DNA Pizza logo is hardcoded there, instead of being generated.
+ (These vertexes were generated by GLUtesselator and saved.)
+ */
+
+static const GLfloat dnapizza_triangles[]={
+ 0.315,0.213301,0, 0.296699,0.195,0, 0.309,0.455,0,
+ 0.296699,0.195,0, 0.29,0.17,0, 0.309,0.455,0,
+ 0.309,0.455,0, 0.29,0.17,0, 0.26,0.452,0,
+ 0.29,0.17,0, 0.23,0.042,0, 0.26,0.452,0,
+ 0.26,0.452,0, 0.23,0.042,0, 0.216,0.293,0,
+ 0.23,0.042,0, 0.21,0,0, 0.216,0.293,0,
+ 0.216,0.293,0, 0.21,0,0, 0.149,0.178,0,
+ 0.21,0,0, 0.102,0.178,0, 0.149,0.178,0,
+ 0.376,0.572,0, 0.353,0.613,0, 0.411,0.68402,0,
+ 0.376,0.572,0, 0.411,0.68402,0, 0.383301,0.195,0,
+ 0.376,0.572,0, 0.383301,0.195,0, 0.365,0.213301,0,
+ 0.376,0.572,0, 0.365,0.213301,0, 0.34,0.22,0,
+ 0.376,0.572,0, 0.34,0.22,0, 0.315,0.213301,0,
+ 0.376,0.572,0, 0.315,0.213301,0, 0.309,0.455,0,
+ 0.39,0.17,0, 0.383301,0.195,0, 0.411,0.68402,0,
+ 0.39,0.17,0, 0.411,0.68402,0, 0.48,0.17,0,
+ 0.39,0.17,0, 0.48,0.17,0, 0.488039,0.14,0,
+ 0.39,0.17,0, 0.488039,0.14,0, 0.51,0.118038,0,
+ 0.39,0.17,0, 0.51,0.118038,0, 0.616,0.042,0,
+ 0.39,0.17,0, 0.616,0.042,0, 0.383301,0.145,0,
+ 0.798,0,0, 0.641,0,0, 0.645595,0.469053,0,
+ 0.798,0,0, 0.645595,0.469053,0, 0.653683,0.457714,0,
+ 0.798,0,0, 0.653683,0.457714,0, 0.661572,0.446236,0,
+ 0.798,0,0, 0.661572,0.446236,0, 0.669259,0.434622,0,
+ 0.798,0,0, 0.669259,0.434622,0, 0.676742,0.422876,0,
+ 0.798,0,0, 0.676742,0.422876,0, 0.68402,0.411,0,
+ 0.798,0,0, 0.68402,0.411,0, 0.691088,0.399,0,
+ 0.798,0,0, 0.691088,0.399,0, 0.697947,0.386878,0,
+ 0.798,0,0, 0.697947,0.386878,0, 0.704592,0.374638,0,
+ 0.798,0,0, 0.704592,0.374638,0, 0.711023,0.362284,0,
+ 0.798,0,0, 0.711023,0.362284,0, 0.717238,0.34982,0,
+ 0.798,0,0, 0.717238,0.34982,0, 0.723234,0.337249,0,
+ 0.798,0,0, 0.723234,0.337249,0, 0.729009,0.324576,0,
+ 0.798,0,0, 0.729009,0.324576,0, 0.734563,0.311803,0,
+ 0.798,0,0, 0.734563,0.311803,0, 0.739893,0.298936,0,
+ 0.798,0,0, 0.739893,0.298936,0, 0.744997,0.285978,0,
+ 0.798,0,0, 0.744997,0.285978,0, 0.749875,0.272932,0,
+ 0.798,0,0, 0.749875,0.272932,0, 0.754524,0.259803,0,
+ 0.798,0,0, 0.754524,0.259803,0, 0.758943,0.246596,0,
+ 0.798,0,0, 0.758943,0.246596,0, 0.763131,0.233313,0,
+ 0.798,0,0, 0.763131,0.233313,0, 0.767087,0.219959,0,
+ 0.798,0,0, 0.767087,0.219959,0, 0.770809,0.206538,0,
+ 0.798,0,0, 0.770809,0.206538,0, 0.774296,0.193054,0,
+ 0.798,0,0, 0.774296,0.193054,0, 0.777547,0.179511,0,
+ 0.798,0,0, 0.777547,0.179511,0, 0.780562,0.165914,0,
+ 0.798,0,0, 0.780562,0.165914,0, 0.783338,0.152266,0,
+ 0.798,0,0, 0.783338,0.152266,0, 0.785877,0.138571,0,
+ 0.798,0,0, 0.785877,0.138571,0, 0.788175,0.124835,0,
+ 0.798,0,0, 0.788175,0.124835,0, 0.790234,0.11106,0,
+ 0.798,0,0, 0.790234,0.11106,0, 0.792052,0.097252,0,
+ 0.798,0,0, 0.792052,0.097252,0, 0.793628,0.083414,0,
+ 0.798,0,0, 0.793628,0.083414,0, 0.794963,0.06955,0,
+ 0.798,0,0, 0.794963,0.06955,0, 0.796056,0.055666,0,
+ 0.798,0,0, 0.796056,0.055666,0, 0.796906,0.041764,0,
+ 0.798,0,0, 0.796906,0.041764,0, 0.797514,0.02785,0,
+ 0.798,0,0, 0.797514,0.02785,0, 0.797878,0.013927,0,
+ 0.641,0,0, 0.616,0.042,0, 0.620162,0.502198,0,
+ 0.641,0,0, 0.620162,0.502198,0, 0.628833,0.491298,0,
+ 0.641,0,0, 0.628833,0.491298,0, 0.637311,0.480248,0,
+ 0.641,0,0, 0.637311,0.480248,0, 0.645595,0.469053,0,
+ 0.616,0.042,0, 0.51,0.118038,0, 0.54,0.11,0,
+ 0.616,0.042,0, 0.54,0.11,0, 0.57,0.118038,0,
+ 0.616,0.042,0, 0.57,0.118038,0, 0.591962,0.14,0,
+ 0.616,0.042,0, 0.591962,0.14,0, 0.6,0.17,0,
+ 0.616,0.042,0, 0.6,0.17,0, 0.601962,0.33,0,
+ 0.616,0.042,0, 0.601962,0.33,0, 0.61,0.36,0,
+ 0.616,0.042,0, 0.61,0.36,0, 0.611303,0.512945,0,
+ 0.616,0.042,0, 0.611303,0.512945,0, 0.620162,0.502198,0,
+ 0.48,0.17,0, 0.411,0.68402,0, 0.422875,0.676743,0,
+ 0.48,0.17,0, 0.422875,0.676743,0, 0.434622,0.669259,0,
+ 0.48,0.17,0, 0.434622,0.669259,0, 0.446236,0.661572,0,
+ 0.48,0.17,0, 0.446236,0.661572,0, 0.457714,0.653684,0,
+ 0.48,0.17,0, 0.457714,0.653684,0, 0.469052,0.645596,0,
+ 0.48,0.17,0, 0.469052,0.645596,0, 0.480248,0.637311,0,
+ 0.48,0.17,0, 0.480248,0.637311,0, 0.488038,0.2,0,
+ 0.616,0.042,0, 0.23,0.042,0, 0.315,0.126699,0,
+ 0.616,0.042,0, 0.315,0.126699,0, 0.34,0.12,0,
+ 0.616,0.042,0, 0.34,0.12,0, 0.365,0.126699,0,
+ 0.616,0.042,0, 0.365,0.126699,0, 0.383301,0.145,0,
+ 0.23,0.042,0, 0.29,0.17,0, 0.296699,0.145,0,
+ 0.23,0.042,0, 0.296699,0.145,0, 0.315,0.126699,0,
+ 0.58362,0.544235,0, 0.593029,0.533966,0, 0.601961,0.39,0,
+ 0.593029,0.533966,0, 0.602258,0.523535,0, 0.601961,0.39,0,
+ 0.601961,0.39,0, 0.602258,0.523535,0, 0.61,0.36,0,
+ 0.602258,0.523535,0, 0.611303,0.512945,0, 0.61,0.36,0,
+ 0.58,0.411962,0, 0.55,0.42,0, 0.554337,0.574033,0,
+ 0.58,0.411962,0, 0.554337,0.574033,0, 0.564271,0.564271,0,
+ 0.58,0.411962,0, 0.564271,0.564271,0, 0.574033,0.554338,0,
+ 0.58,0.411962,0, 0.574033,0.554338,0, 0.58362,0.544235,0,
+ 0.58,0.411962,0, 0.58362,0.544235,0, 0.601961,0.39,0,
+ 0.55,0.42,0, 0.52,0.411962,0, 0.523535,0.602258,0,
+ 0.55,0.42,0, 0.523535,0.602258,0, 0.533966,0.59303,0,
+ 0.55,0.42,0, 0.533966,0.59303,0, 0.544235,0.58362,0,
+ 0.55,0.42,0, 0.544235,0.58362,0, 0.554337,0.574033,0,
+ 0.51,0.221962,0, 0.488038,0.2,0, 0.49,0.36,0,
+ 0.488038,0.2,0, 0.491298,0.628833,0, 0.49,0.36,0,
+ 0.49,0.36,0, 0.491298,0.628833,0, 0.498038,0.39,0,
+ 0.491298,0.628833,0, 0.502197,0.620163,0, 0.498038,0.39,0,
+ 0.498038,0.39,0, 0.502197,0.620163,0, 0.52,0.411962,0,
+ 0.502197,0.620163,0, 0.512944,0.611304,0, 0.52,0.411962,0,
+ 0.52,0.411962,0, 0.512944,0.611304,0, 0.523535,0.602258,0,
+ 0.49,0.36,0, 0.498039,0.33,0, 0.51,0.221962,0,
+ 0.498039,0.33,0, 0.52,0.308039,0, 0.51,0.221962,0,
+ 0.51,0.221962,0, 0.52,0.308039,0, 0.54,0.23,0,
+ 0.52,0.308039,0, 0.55,0.3,0, 0.54,0.23,0,
+ 0.54,0.23,0, 0.55,0.3,0, 0.57,0.221962,0,
+ 0.55,0.3,0, 0.58,0.308039,0, 0.57,0.221962,0,
+ 0.57,0.221962,0, 0.58,0.308039,0, 0.591962,0.2,0,
+ 0.58,0.308039,0, 0.601962,0.33,0, 0.591962,0.2,0,
+ 0.591962,0.2,0, 0.601962,0.33,0, 0.6,0.17,0,
+ 0.488038,0.2,0, 0.480248,0.637311,0, 0.491298,0.628833,0,
+ 0.26,0.452,0, 0.216,0.293,0, 0.192,0.332,0,
+ 0.102,0.178,0, 0.21,0,0, 0,0,0,
+};
diff --git a/hacks/glx/dolphin.c b/hacks/glx/dolphin.c
new file mode 100644
index 0000000..2ef4e33
--- /dev/null
+++ b/hacks/glx/dolphin.c
@@ -0,0 +1,2061 @@
+/* atlantis --- Shows moving 3D sea animals */
+
+#if 0
+static const char sccsid[] = "@(#)dolphin.c 1.2 98/06/16 xlockmore";
+#endif
+
+/* Copyright (c) E. Lassauge, 1998. */
+
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The original code for this mode was written by Mark J. Kilgard
+ * as a demo for openGL programming.
+ *
+ * Porting it to xlock was possible by comparing the original Mesa's morph3d
+ * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna
+ * (look at morph3d.c) for his indirect help.
+ *
+ * Thanks goes also to Brian Paul for making it possible and inexpensive
+ * to use OpenGL at home.
+ *
+ * My e-mail address is lassauge@sagem.fr
+ *
+ * Eric Lassauge (May-13-1998)
+ *
+ */
+
+/**
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States. Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+#ifdef USE_GL
+
+#include "atlantis.h"
+
+/* *INDENT-OFF* */
+static const float N001[3] = {-0.005937, -0.101998, -0.994767};
+static const float N002[3] = {0.93678, -0.200803, 0.286569};
+static const float N003[3] = {-0.233062, 0.972058, 0.028007};
+#if 0
+static const float N004[3] = {0, 1, 0};
+#endif
+static const float N005[3] = {0.898117, 0.360171, 0.252315};
+static const float N006[3] = {-0.915437, 0.348456, 0.201378};
+static const float N007[3] = {0.602263, -0.777527, 0.18092};
+static const float N008[3] = {-0.906912, -0.412015, 0.088061};
+#if 0
+static const float N009[3] = {-0.015623, 0.999878, 0};
+static const float N010[3] = {0, -0.992278, 0.124035};
+static const float N011[3] = {0, -0.936329, -0.351123};
+#endif
+static const float N012[3] = {0.884408, -0.429417, -0.182821};
+static const float N013[3] = {0.921121, 0.311084, -0.234016};
+static const float N014[3] = {0.382635, 0.877882, -0.287948};
+static const float N015[3] = {-0.380046, 0.888166, -0.258316};
+static const float N016[3] = {-0.891515, 0.392238, -0.226607};
+static const float N017[3] = {-0.901419, -0.382002, -0.203763};
+static const float N018[3] = {-0.367225, -0.911091, -0.187243};
+static const float N019[3] = {0.339539, -0.924846, -0.171388};
+static const float N020[3] = {0.914706, -0.378617, -0.14129};
+static const float N021[3] = {0.950662, 0.262713, -0.164994};
+static const float N022[3] = {0.546359, 0.80146, -0.243218};
+static const float N023[3] = {-0.315796, 0.917068, -0.243431};
+static const float N024[3] = {-0.825687, 0.532277, -0.186875};
+static const float N025[3] = {-0.974763, -0.155232, -0.160435};
+static const float N026[3] = {-0.560596, -0.816658, -0.137119};
+static const float N027[3] = {0.38021, -0.910817, -0.160786};
+static const float N028[3] = {0.923772, -0.358322, -0.135093};
+static const float N029[3] = {0.951202, 0.275053, -0.139859};
+static const float N030[3] = {0.686099, 0.702548, -0.188932};
+static const float N031[3] = {-0.521865, 0.826719, -0.21022};
+static const float N032[3] = {-0.92382, 0.346739, -0.162258};
+static const float N033[3] = {-0.902095, -0.409995, -0.134646};
+static const float N034[3] = {-0.509115, -0.848498, -0.144404};
+static const float N035[3] = {0.456469, -0.880293, -0.129305};
+static const float N036[3] = {0.873401, -0.475489, -0.105266};
+static const float N037[3] = {0.970825, 0.179861, -0.158584};
+static const float N038[3] = {0.675609, 0.714187, -0.183004};
+static const float N039[3] = {-0.523574, 0.830212, -0.19136};
+static const float N040[3] = {-0.958895, 0.230808, -0.165071};
+static const float N041[3] = {-0.918285, -0.376803, -0.121542};
+static const float N042[3] = {-0.622467, -0.774167, -0.114888};
+static const float N043[3] = {0.404497, -0.908807, -0.102231};
+static const float N044[3] = {0.930538, -0.365155, -0.027588};
+static const float N045[3] = {0.92192, 0.374157, -0.100345};
+static const float N046[3] = {0.507346, 0.860739, 0.041562};
+static const float N047[3] = {-0.394646, 0.918815, -0.00573};
+static const float N048[3] = {-0.925411, 0.373024, -0.066837};
+static const float N049[3] = {-0.945337, -0.322309, -0.049551};
+static const float N050[3] = {-0.660437, -0.750557, -0.022072};
+static const float N051[3] = {0.488835, -0.87195, -0.027261};
+static const float N052[3] = {0.902599, -0.421397, 0.087969};
+static const float N053[3] = {0.938636, 0.322606, 0.12202};
+static const float N054[3] = {0.484605, 0.871078, 0.079878};
+static const float N055[3] = {-0.353607, 0.931559, 0.084619};
+static const float N056[3] = {-0.867759, 0.478564, 0.134054};
+static const float N057[3] = {-0.951583, -0.29603, 0.082794};
+static const float N058[3] = {-0.672355, -0.730209, 0.121384};
+static const float N059[3] = {0.528336, -0.842452, 0.105525};
+static const float N060[3] = {0.786913, -0.56476, 0.248627};
+#if 0
+static const float N061[3] = {0, 1, 0};
+#endif
+static const float N062[3] = {0.622098, 0.76523, 0.165584};
+static const float N063[3] = {-0.631711, 0.767816, 0.106773};
+static const float N064[3] = {-0.687886, 0.606351, 0.398938};
+static const float N065[3] = {-0.946327, -0.281623, 0.158598};
+static const float N066[3] = {-0.509549, -0.860437, 0.002776};
+static const float N067[3] = {0.462594, -0.876692, 0.131977};
+#if 0
+static const float N068[3] = {0, -0.992278, 0.124035};
+static const float N069[3] = {0, -0.970143, -0.242536};
+static const float N070[3] = {0.015502, 0.992159, -0.12402};
+#endif
+static const float N071[3] = {0, 1, 0};
+#if 0
+static const float N072[3] = {0, 1, 0};
+static const float N073[3] = {0, 1, 0};
+static const float N074[3] = {0, -1, 0};
+static const float N075[3] = {-0.242536, 0, -0.970143};
+static const float N076[3] = {-0.010336, -0.992225, -0.124028};
+#endif
+static const float N077[3] = {-0.88077, 0.461448, 0.106351};
+static const float N078[3] = {-0.88077, 0.461448, 0.106351};
+static const float N079[3] = {-0.88077, 0.461448, 0.106351};
+static const float N080[3] = {-0.88077, 0.461448, 0.106351};
+static const float N081[3] = {-0.571197, 0.816173, 0.087152};
+static const float N082[3] = {-0.88077, 0.461448, 0.106351};
+static const float N083[3] = {-0.571197, 0.816173, 0.087152};
+static const float N084[3] = {-0.571197, 0.816173, 0.087152};
+static const float N085[3] = {-0.88077, 0.461448, 0.106351};
+static const float N086[3] = {-0.571197, 0.816173, 0.087152};
+static const float N087[3] = {-0.88077, 0.461448, 0.106351};
+static const float N088[3] = {-0.88077, 0.461448, 0.106351};
+static const float N089[3] = {-0.88077, 0.461448, 0.106351};
+static const float N090[3] = {-0.88077, 0.461448, 0.106351};
+static const float N091[3] = {0, 1, 0};
+static const float N092[3] = {0, 1, 0};
+static const float N093[3] = {0, 1, 0};
+static const float N094[3] = {1, 0, 0};
+static const float N095[3] = {-1, 0, 0};
+#if 0
+static const float N096[3] = {0, 1, 0};
+#endif
+static const float N097[3] = {-0.697296, 0.702881, 0.140491};
+static const float N098[3] = {0.918864, 0.340821, 0.198819};
+static const float N099[3] = {-0.932737, 0.201195, 0.299202};
+static const float N100[3] = {0.029517, 0.981679, 0.188244};
+#if 0
+static const float N101[3] = {0, 1, 0};
+#endif
+static const float N102[3] = {0.813521, -0.204936, 0.544229};
+#if 0
+static const float N103[3] = {0, 1, 0};
+static const float N104[3] = {0, 1, 0};
+static const float N105[3] = {0, 1, 0};
+static const float N106[3] = {0, 1, 0};
+static const float N107[3] = {0, 1, 0};
+static const float N108[3] = {0, 1, 0};
+static const float N109[3] = {0, 1, 0};
+#endif
+static const float N110[3] = {-0.78148, -0.384779, 0.491155};
+static const float N111[3] = {-0.722243, 0.384927, 0.574627};
+static const float N112[3] = {-0.752278, 0.502679, 0.425901};
+static const float N113[3] = {0.547257, 0.36791, 0.751766};
+static const float N114[3] = {0.725949, -0.232568, 0.647233};
+static const float N115[3] = {-0.747182, -0.660786, 0.07128};
+static const float N116[3] = {0.931519, 0.200748, 0.30327};
+static const float N117[3] = {-0.828928, 0.313757, 0.463071};
+static const float N118[3] = {0.902554, -0.370967, 0.218587};
+static const float N119[3] = {-0.879257, -0.441851, 0.177973};
+static const float N120[3] = {0.642327, 0.611901, 0.461512};
+static const float N121[3] = {0.964817, -0.202322, 0.16791};
+static const float N122[3] = {0, 1, 0};
+#if 0
+static const float N123[3] = {-0.980734, 0.041447, 0.1909};
+static const float N124[3] = {-0.980734, 0.041447, 0.1909};
+static const float N125[3] = {-0.980734, 0.041447, 0.1909};
+static const float N126[3] = {0, 1, 0};
+static const float N127[3] = {0, 1, 0};
+static const float N128[3] = {0, 1, 0};
+static const float N129[3] = {0.96325, 0.004839, 0.268565};
+static const float N130[3] = {0.96325, 0.004839, 0.268565};
+static const float N131[3] = {0.96325, 0.004839, 0.268565};
+static const float N132[3] = {0, 1, 0};
+static const float N133[3] = {0, 1, 0};
+static const float N134[3] = {0, 1, 0};
+#endif
+static float P001[3] = {5.68, -300.95, 1324.7};
+static const float P002[3] = {338.69, -219.63, 9677.03};
+static const float P003[3] = {12.18, 474.59, 9138.14};
+#if 0
+static const float P004[3] = {-7.49, -388.91, 10896.74};
+#endif
+static const float P005[3] = {487.51, 198.05, 9350.78};
+static const float P006[3] = {-457.61, 68.74, 9427.85};
+static const float P007[3] = {156.52, -266.72, 10311.68};
+static const float P008[3] = {-185.56, -266.51, 10310.47};
+static float P009[3] = {124.39, -261.46, 1942.34};
+static float P010[3] = {-130.05, -261.46, 1946.03};
+static float P011[3] = {141.07, -320.11, 1239.38};
+static float P012[3] = {156.48, -360.12, 2073.41};
+static float P013[3] = {162, -175.88, 2064.44};
+static float P014[3] = {88.16, -87.72, 2064.02};
+static float P015[3] = {-65.21, -96.13, 2064.02};
+static float P016[3] = {-156.48, -180.96, 2064.44};
+static float P017[3] = {-162, -368.93, 2082.39};
+static float P018[3] = {-88.16, -439.22, 2082.39};
+static float P019[3] = {65.21, -440.32, 2083.39};
+static float P020[3] = {246.87, -356.02, 2576.95};
+static float P021[3] = {253.17, -111.15, 2567.15};
+static float P022[3] = {132.34, 51.41, 2559.84};
+static float P023[3] = {-97.88, 40.44, 2567.15};
+static float P024[3] = {-222.97, -117.49, 2567.15};
+static float P025[3] = {-252.22, -371.53, 2569.92};
+static float P026[3] = {-108.44, -518.19, 2586.75};
+static float P027[3] = {97.88, -524.79, 2586.75};
+static float P028[3] = {370.03, -421.19, 3419.7};
+static float P029[3] = {351.15, -16.98, 3423.17};
+static float P030[3] = {200.66, 248.46, 3430.37};
+static float P031[3] = {-148.42, 235.02, 3417.91};
+static float P032[3] = {-360.21, -30.27, 3416.84};
+static float P033[3] = {-357.9, -414.89, 3407.04};
+static float P034[3] = {-148.88, -631.35, 3409.9};
+static float P035[3] = {156.38, -632.59, 3419.7};
+static float P036[3] = {462.61, -469.21, 4431.51};
+static float P037[3] = {466.6, 102.25, 4434.98};
+static float P038[3] = {243.05, 474.34, 4562.02};
+static float P039[3] = {-191.23, 474.4, 4554.42};
+static float P040[3] = {-476.12, 111.05, 4451.11};
+static float P041[3] = {-473.36, -470.74, 4444.78};
+static float P042[3] = {-266.95, -748.41, 4447.78};
+static float P043[3] = {211.14, -749.91, 4429.73};
+static float P044[3] = {680.57, -370.27, 5943.46};
+static float P045[3] = {834.01, 363.09, 6360.63};
+static float P046[3] = {371.29, 804.51, 6486.26};
+static float P047[3] = {-291.43, 797.22, 6494.28};
+static float P048[3] = {-784.13, 370.75, 6378.01};
+static float P049[3] = {-743.29, -325.82, 5943.46};
+static float P050[3] = {-383.24, -804.77, 5943.46};
+static float P051[3] = {283.47, -846.09, 5943.46};
+static const float iP001[3] = {5.68, -300.95, 1324.7};
+#if 0
+static const float iP002[3] = {338.69, -219.63, 9677.03};
+static const float iP003[3] = {12.18, 624.93, 8956.39};
+static const float iP004[3] = {-7.49, -388.91, 10896.74};
+static const float iP005[3] = {487.51, 198.05, 9350.78};
+static const float iP006[3] = {-457.61, 199.04, 9353.01};
+static const float iP007[3] = {156.52, -266.72, 10311.68};
+static const float iP008[3] = {-185.56, -266.51, 10310.47};
+#endif
+static const float iP009[3] = {124.39, -261.46, 1942.34};
+static const float iP010[3] = {-130.05, -261.46, 1946.03};
+static const float iP011[3] = {141.07, -320.11, 1239.38};
+static const float iP012[3] = {156.48, -360.12, 2073.41};
+static const float iP013[3] = {162, -175.88, 2064.44};
+static const float iP014[3] = {88.16, -87.72, 2064.02};
+static const float iP015[3] = {-65.21, -96.13, 2064.02};
+static const float iP016[3] = {-156.48, -180.96, 2064.44};
+static const float iP017[3] = {-162, -368.93, 2082.39};
+static const float iP018[3] = {-88.16, -439.22, 2082.39};
+static const float iP019[3] = {65.21, -440.32, 2083.39};
+static const float iP020[3] = {246.87, -356.02, 2576.95};
+static const float iP021[3] = {253.17, -111.15, 2567.15};
+static const float iP022[3] = {132.34, 51.41, 2559.84};
+static const float iP023[3] = {-97.88, 40.44, 2567.15};
+static const float iP024[3] = {-222.97, -117.49, 2567.15};
+static const float iP025[3] = {-252.22, -371.53, 2569.92};
+static const float iP026[3] = {-108.44, -518.19, 2586.75};
+static const float iP027[3] = {97.88, -524.79, 2586.75};
+static const float iP028[3] = {370.03, -421.19, 3419.7};
+static const float iP029[3] = {351.15, -16.98, 3423.17};
+static const float iP030[3] = {200.66, 248.46, 3430.37};
+static const float iP031[3] = {-148.42, 235.02, 3417.91};
+static const float iP032[3] = {-360.21, -30.27, 3416.84};
+static const float iP033[3] = {-357.9, -414.89, 3407.04};
+static const float iP034[3] = {-148.88, -631.35, 3409.9};
+static const float iP035[3] = {156.38, -632.59, 3419.7};
+static const float iP036[3] = {462.61, -469.21, 4431.51};
+static const float iP037[3] = {466.6, 102.25, 4434.98};
+static const float iP038[3] = {243.05, 474.34, 4562.02};
+static const float iP039[3] = {-191.23, 474.4, 4554.42};
+static const float iP040[3] = {-476.12, 111.05, 4451.11};
+static const float iP041[3] = {-473.36, -470.74, 4444.78};
+static const float iP042[3] = {-266.95, -748.41, 4447.78};
+static const float iP043[3] = {211.14, -749.91, 4429.73};
+static const float iP044[3] = {680.57, -370.27, 5943.46};
+static const float iP045[3] = {834.01, 363.09, 6360.63};
+static const float iP046[3] = {371.29, 804.51, 6486.26};
+static const float iP047[3] = {-291.43, 797.22, 6494.28};
+static const float iP048[3] = {-784.13, 370.75, 6378.01};
+static const float iP049[3] = {-743.29, -325.82, 5943.46};
+static const float iP050[3] = {-383.24, -804.77, 5943.46};
+static const float iP051[3] = {283.47, -846.09, 5943.46};
+static const float P052[3] = {599.09, -300.15, 7894.03};
+static const float P053[3] = {735.48, 306.26, 7911.92};
+static const float P054[3] = {246.22, 558.53, 8460.5};
+static const float P055[3] = {-230.41, 559.84, 8473.23};
+static const float P056[3] = {-698.66, 320.83, 7902.59};
+static const float P057[3] = {-643.29, -299.16, 7902.59};
+static const float P058[3] = {-341.47, -719.3, 7902.59};
+static const float P059[3] = {252.57, -756.12, 7902.59};
+static const float P060[3] = {458.39, -265.31, 9355.44};
+#if 0
+static const float P061[3] = {433.38, -161.9, 9503.03};
+#endif
+static const float P062[3] = {224.04, 338.75, 9450.3};
+static const float P063[3] = {-165.71, 341.04, 9462.35};
+static const float P064[3] = {-298.11, 110.13, 10180.37};
+static const float P065[3] = {-473.99, -219.71, 9355.44};
+static const float P066[3] = {-211.97, -479.87, 9355.44};
+static const float P067[3] = {192.86, -491.45, 9348.73};
+static float P068[3] = {-136.29, -319.84, 1228.73};
+static float P069[3] = {1111.17, -314.14, 1314.19};
+static float P070[3] = {-1167.34, -321.61, 1319.45};
+static float P071[3] = {1404.86, -306.66, 1235.45};
+static float P072[3] = {-1409.73, -314.14, 1247.66};
+static float P073[3] = {1254.01, -296.87, 1544.58};
+static float P074[3] = {-1262.09, -291.7, 1504.26};
+static float P075[3] = {965.71, -269.26, 1742.65};
+static float P076[3] = {-900.97, -276.74, 1726.07};
+static const float iP068[3] = {-136.29, -319.84, 1228.73};
+static const float iP069[3] = {1111.17, -314.14, 1314.19};
+static const float iP070[3] = {-1167.34, -321.61, 1319.45};
+static const float iP071[3] = {1404.86, -306.66, 1235.45};
+static const float iP072[3] = {-1409.73, -314.14, 1247.66};
+static const float iP073[3] = {1254.01, -296.87, 1544.58};
+static const float iP074[3] = {-1262.09, -291.7, 1504.26};
+static const float iP075[3] = {965.71, -269.26, 1742.65};
+static const float iP076[3] = {-900.97, -276.74, 1726.07};
+static const float P077[3] = {1058, -448.81, 8194.66};
+static const float P078[3] = {-1016.51, -456.43, 8190.62};
+static const float P079[3] = {-1515.96, -676.45, 7754.93};
+static const float P080[3] = {1856.75, -830.34, 7296.56};
+static const float P081[3] = {1472.16, -497.38, 7399.68};
+static const float P082[3] = {-1775.26, -829.51, 7298.46};
+static const float P083[3] = {911.09, -252.51, 7510.99};
+static const float P084[3] = {-1451.94, -495.62, 7384.3};
+static const float P085[3] = {1598.75, -669.26, 7769.9};
+static const float P086[3] = {-836.53, -250.08, 7463.25};
+static const float P087[3] = {722.87, -158.18, 8006.41};
+static const float P088[3] = {-688.86, -162.28, 7993.89};
+static const float P089[3] = {-626.92, -185.3, 8364.98};
+static const float P090[3] = {647.72, -189.46, 8354.99};
+static float P091[3] = {0, 835.01, 5555.62};
+static float P092[3] = {0, 1350.18, 5220.86};
+static float P093[3] = {0, 1422.94, 5285.27};
+static float P094[3] = {0, 1296.75, 5650.19};
+static float P095[3] = {0, 795.63, 6493.88};
+static const float iP091[3] = {0, 835.01, 5555.62};
+static const float iP092[3] = {0, 1350.18, 5220.86};
+static const float iP093[3] = {0, 1422.94, 5285.27};
+static const float iP094[3] = {0, 1296.75, 5650.19};
+static const float iP095[3] = {0, 795.63, 6493.88};
+#if 0
+static const float P096[3] = {-447.38, -165.99, 9499.6};
+#endif
+static float P097[3] = {-194.91, -357.14, 10313.32};
+static float P098[3] = {135.35, -357.66, 10307.94};
+static const float iP097[3] = {-194.91, -357.14, 10313.32};
+static const float iP098[3] = {135.35, -357.66, 10307.94};
+static const float P099[3] = {-380.53, -221.14, 9677.98};
+static const float P100[3] = {0, 412.99, 9629.33};
+#if 0
+static const float P101[3] = {5.7, 567, 7862.98};
+#endif
+static float P102[3] = {59.51, -412.55, 10677.58};
+static const float iP102[3] = {59.51, -412.55, 10677.58};
+static const float P103[3] = {6.5, 484.74, 9009.94};
+#if 0
+static const float P104[3] = {-9.86, 567.62, 7858.65};
+#endif
+static const float P105[3] = {-41.86, 476.51, 9078.17};
+#if 0
+static const float P106[3] = {22.75, 568.13, 7782.83};
+static const float P107[3] = {58.93, 568.42, 7775.94};
+#endif
+static const float P108[3] = {49.2, 476.83, 9078.24};
+#if 0
+static const float P109[3] = {99.21, 566, 7858.65};
+#endif
+static float P110[3] = {-187.62, -410.04, 10674.12};
+static const float iP110[3] = {-187.62, -410.04, 10674.12};
+static float P111[3] = {-184.25, -318.7, 10723.88};
+static const float iP111[3] = {-184.25, -318.7, 10723.88};
+static const float P112[3] = {-179.61, -142.81, 10670.26};
+static const float P113[3] = {57.43, -147.94, 10675.26};
+static const float P114[3] = {54.06, -218.9, 10712.44};
+static const float P115[3] = {-186.35, -212.09, 10713.76};
+static const float P116[3] = {205.9, -84.61, 10275.97};
+static const float P117[3] = {-230.96, -83.26, 10280.09};
+static const float iP118[3] = {216.78, -509.17, 10098.94};
+static const float iP119[3] = {-313.21, -510.79, 10102.62};
+static float P118[3] = {216.78, -509.17, 10098.94};
+static float P119[3] = {-313.21, -510.79, 10102.62};
+static const float P120[3] = {217.95, 96.34, 10161.62};
+static float P121[3] = {71.99, -319.74, 10717.7};
+static const float iP121[3] = {71.99, -319.74, 10717.7};
+static float P122[3] = {0, 602.74, 5375.84};
+static const float iP122[3] = {0, 602.74, 5375.84};
+static const float P123[3] = {-448.94, -203.14, 9499.6};
+static const float P124[3] = {-442.64, -185.2, 9528.07};
+static const float P125[3] = {-441.07, -148.05, 9528.07};
+static const float P126[3] = {-443.43, -128.84, 9499.6};
+static const float P127[3] = {-456.87, -146.78, 9466.67};
+static const float P128[3] = {-453.68, -183.93, 9466.67};
+static const float P129[3] = {428.43, -124.08, 9503.03};
+static const float P130[3] = {419.73, -142.14, 9534.56};
+static const float P131[3] = {419.92, -179.96, 9534.56};
+static const float P132[3] = {431.2, -199.73, 9505.26};
+static const float P133[3] = {442.28, -181.67, 9475.96};
+static const float P134[3] = {442.08, -143.84, 9475.96};
+/* *INDENT-ON* */
+
+
+
+static void
+Dolphin001(GLenum cap)
+{
+ glNormal3fv(N071);
+ glBegin(cap);
+ glVertex3fv(P001);
+ glVertex3fv(P068);
+ glVertex3fv(P010);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P068);
+ glVertex3fv(P076);
+ glVertex3fv(P010);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P068);
+ glVertex3fv(P070);
+ glVertex3fv(P076);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P076);
+ glVertex3fv(P070);
+ glVertex3fv(P074);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P070);
+ glVertex3fv(P072);
+ glVertex3fv(P074);
+ glEnd();
+ glNormal3fv(N119);
+ glBegin(cap);
+ glVertex3fv(P072);
+ glVertex3fv(P070);
+ glVertex3fv(P074);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P074);
+ glVertex3fv(P070);
+ glVertex3fv(P076);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P070);
+ glVertex3fv(P068);
+ glVertex3fv(P076);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P076);
+ glVertex3fv(P068);
+ glVertex3fv(P010);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P068);
+ glVertex3fv(P001);
+ glVertex3fv(P010);
+ glEnd();
+}
+
+static void
+Dolphin002(GLenum cap)
+{
+ glNormal3fv(N071);
+ glBegin(cap);
+ glVertex3fv(P011);
+ glVertex3fv(P001);
+ glVertex3fv(P009);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P075);
+ glVertex3fv(P011);
+ glVertex3fv(P009);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P069);
+ glVertex3fv(P011);
+ glVertex3fv(P075);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P069);
+ glVertex3fv(P075);
+ glVertex3fv(P073);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P071);
+ glVertex3fv(P069);
+ glVertex3fv(P073);
+ glEnd();
+ glNormal3fv(N119);
+ glBegin(cap);
+ glVertex3fv(P001);
+ glVertex3fv(P011);
+ glVertex3fv(P009);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P009);
+ glVertex3fv(P011);
+ glVertex3fv(P075);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P011);
+ glVertex3fv(P069);
+ glVertex3fv(P075);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P069);
+ glVertex3fv(P073);
+ glVertex3fv(P075);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P069);
+ glVertex3fv(P071);
+ glVertex3fv(P073);
+ glEnd();
+}
+
+static void
+Dolphin003(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N018);
+ glVertex3fv(P018);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N019);
+ glVertex3fv(P019);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N019);
+ glVertex3fv(P019);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N012);
+ glVertex3fv(P012);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N017);
+ glVertex3fv(P017);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N018);
+ glVertex3fv(P018);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N017);
+ glVertex3fv(P017);
+ glNormal3fv(N016);
+ glVertex3fv(P016);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N013);
+ glVertex3fv(P013);
+ glNormal3fv(N012);
+ glVertex3fv(P012);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N016);
+ glVertex3fv(P016);
+ glNormal3fv(N015);
+ glVertex3fv(P015);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N014);
+ glVertex3fv(P014);
+ glNormal3fv(N013);
+ glVertex3fv(P013);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N001);
+ glVertex3fv(P001);
+ glNormal3fv(N015);
+ glVertex3fv(P015);
+ glNormal3fv(N014);
+ glVertex3fv(P014);
+ glEnd();
+}
+
+static void
+Dolphin004(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N014);
+ glVertex3fv(P014);
+ glNormal3fv(N015);
+ glVertex3fv(P015);
+ glNormal3fv(N023);
+ glVertex3fv(P023);
+ glNormal3fv(N022);
+ glVertex3fv(P022);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N015);
+ glVertex3fv(P015);
+ glNormal3fv(N016);
+ glVertex3fv(P016);
+ glNormal3fv(N024);
+ glVertex3fv(P024);
+ glNormal3fv(N023);
+ glVertex3fv(P023);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N016);
+ glVertex3fv(P016);
+ glNormal3fv(N017);
+ glVertex3fv(P017);
+ glNormal3fv(N025);
+ glVertex3fv(P025);
+ glNormal3fv(N024);
+ glVertex3fv(P024);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N017);
+ glVertex3fv(P017);
+ glNormal3fv(N018);
+ glVertex3fv(P018);
+ glNormal3fv(N026);
+ glVertex3fv(P026);
+ glNormal3fv(N025);
+ glVertex3fv(P025);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N013);
+ glVertex3fv(P013);
+ glNormal3fv(N014);
+ glVertex3fv(P014);
+ glNormal3fv(N022);
+ glVertex3fv(P022);
+ glNormal3fv(N021);
+ glVertex3fv(P021);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N012);
+ glVertex3fv(P012);
+ glNormal3fv(N013);
+ glVertex3fv(P013);
+ glNormal3fv(N021);
+ glVertex3fv(P021);
+ glNormal3fv(N020);
+ glVertex3fv(P020);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N018);
+ glVertex3fv(P018);
+ glNormal3fv(N019);
+ glVertex3fv(P019);
+ glNormal3fv(N027);
+ glVertex3fv(P027);
+ glNormal3fv(N026);
+ glVertex3fv(P026);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N019);
+ glVertex3fv(P019);
+ glNormal3fv(N012);
+ glVertex3fv(P012);
+ glNormal3fv(N020);
+ glVertex3fv(P020);
+ glNormal3fv(N027);
+ glVertex3fv(P027);
+ glEnd();
+}
+
+static void
+Dolphin005(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N022);
+ glVertex3fv(P022);
+ glNormal3fv(N023);
+ glVertex3fv(P023);
+ glNormal3fv(N031);
+ glVertex3fv(P031);
+ glNormal3fv(N030);
+ glVertex3fv(P030);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N021);
+ glVertex3fv(P021);
+ glNormal3fv(N022);
+ glVertex3fv(P022);
+ glNormal3fv(N030);
+ glVertex3fv(P030);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N021);
+ glVertex3fv(P021);
+ glNormal3fv(N030);
+ glVertex3fv(P030);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N023);
+ glVertex3fv(P023);
+ glNormal3fv(N024);
+ glVertex3fv(P024);
+ glNormal3fv(N031);
+ glVertex3fv(P031);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N024);
+ glVertex3fv(P024);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glNormal3fv(N031);
+ glVertex3fv(P031);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N024);
+ glVertex3fv(P024);
+ glNormal3fv(N025);
+ glVertex3fv(P025);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N025);
+ glVertex3fv(P025);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N020);
+ glVertex3fv(P020);
+ glNormal3fv(N021);
+ glVertex3fv(P021);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N020);
+ glVertex3fv(P020);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N027);
+ glVertex3fv(P027);
+ glNormal3fv(N020);
+ glVertex3fv(P020);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N027);
+ glVertex3fv(P027);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glNormal3fv(N035);
+ glVertex3fv(P035);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N025);
+ glVertex3fv(P025);
+ glNormal3fv(N026);
+ glVertex3fv(P026);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N026);
+ glVertex3fv(P026);
+ glNormal3fv(N034);
+ glVertex3fv(P034);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N026);
+ glVertex3fv(P026);
+ glNormal3fv(N027);
+ glVertex3fv(P027);
+ glNormal3fv(N035);
+ glVertex3fv(P035);
+ glNormal3fv(N034);
+ glVertex3fv(P034);
+ glEnd();
+}
+
+static void
+Dolphin006(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N092);
+ glVertex3fv(P092);
+ glNormal3fv(N093);
+ glVertex3fv(P093);
+ glNormal3fv(N094);
+ glVertex3fv(P094);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N093);
+ glVertex3fv(P093);
+ glNormal3fv(N092);
+ glVertex3fv(P092);
+ glNormal3fv(N094);
+ glVertex3fv(P094);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N092);
+ glVertex3fv(P092);
+ glNormal3fv(N091);
+ glVertex3fv(P091);
+ glNormal3fv(N095);
+ glVertex3fv(P095);
+ glNormal3fv(N094);
+ glVertex3fv(P094);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N091);
+ glVertex3fv(P091);
+ glNormal3fv(N092);
+ glVertex3fv(P092);
+ glNormal3fv(N094);
+ glVertex3fv(P094);
+ glNormal3fv(N095);
+ glVertex3fv(P095);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N122);
+ glVertex3fv(P122);
+ glNormal3fv(N095);
+ glVertex3fv(P095);
+ glNormal3fv(N091);
+ glVertex3fv(P091);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N122);
+ glVertex3fv(P122);
+ glNormal3fv(N091);
+ glVertex3fv(P091);
+ glNormal3fv(N095);
+ glVertex3fv(P095);
+ glEnd();
+}
+
+static void
+Dolphin007(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N030);
+ glVertex3fv(P030);
+ glNormal3fv(N031);
+ glVertex3fv(P031);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glNormal3fv(N030);
+ glVertex3fv(P030);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glNormal3fv(N029);
+ glVertex3fv(P029);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N035);
+ glVertex3fv(P035);
+ glNormal3fv(N028);
+ glVertex3fv(P028);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N035);
+ glVertex3fv(P035);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glNormal3fv(N043);
+ glVertex3fv(P043);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N034);
+ glVertex3fv(P034);
+ glNormal3fv(N035);
+ glVertex3fv(P035);
+ glNormal3fv(N043);
+ glVertex3fv(P043);
+ glNormal3fv(N042);
+ glVertex3fv(P042);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N034);
+ glVertex3fv(P034);
+ glNormal3fv(N042);
+ glVertex3fv(P042);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N042);
+ glVertex3fv(P042);
+ glNormal3fv(N041);
+ glVertex3fv(P041);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N031);
+ glVertex3fv(P031);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N032);
+ glVertex3fv(P032);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glNormal3fv(N033);
+ glVertex3fv(P033);
+ glNormal3fv(N041);
+ glVertex3fv(P041);
+ glEnd();
+}
+
+static void
+Dolphin008(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N042);
+ glVertex3fv(P042);
+ glNormal3fv(N043);
+ glVertex3fv(P043);
+ glNormal3fv(N051);
+ glVertex3fv(P051);
+ glNormal3fv(N050);
+ glVertex3fv(P050);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N043);
+ glVertex3fv(P043);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glNormal3fv(N051);
+ glVertex3fv(P051);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N051);
+ glVertex3fv(P051);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N041);
+ glVertex3fv(P041);
+ glNormal3fv(N042);
+ glVertex3fv(P042);
+ glNormal3fv(N050);
+ glVertex3fv(P050);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N041);
+ glVertex3fv(P041);
+ glNormal3fv(N050);
+ glVertex3fv(P050);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N036);
+ glVertex3fv(P036);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glNormal3fv(N045);
+ glVertex3fv(P045);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glNormal3fv(N041);
+ glVertex3fv(P041);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glNormal3fv(N040);
+ glVertex3fv(P040);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glNormal3fv(N047);
+ glVertex3fv(P047);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N037);
+ glVertex3fv(P037);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glNormal3fv(N045);
+ glVertex3fv(P045);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glNormal3fv(N046);
+ glVertex3fv(P046);
+ glNormal3fv(N045);
+ glVertex3fv(P045);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N038);
+ glVertex3fv(P038);
+ glNormal3fv(N039);
+ glVertex3fv(P039);
+ glNormal3fv(N047);
+ glVertex3fv(P047);
+ glNormal3fv(N046);
+ glVertex3fv(P046);
+ glEnd();
+}
+
+static void
+Dolphin009(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N050);
+ glVertex3fv(P050);
+ glNormal3fv(N051);
+ glVertex3fv(P051);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N051);
+ glVertex3fv(P051);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glNormal3fv(N052);
+ glVertex3fv(P052);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glNormal3fv(N045);
+ glVertex3fv(P045);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N044);
+ glVertex3fv(P044);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glNormal3fv(N052);
+ glVertex3fv(P052);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glNormal3fv(N050);
+ glVertex3fv(P050);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glNormal3fv(N057);
+ glVertex3fv(P057);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glNormal3fv(N049);
+ glVertex3fv(P049);
+ glNormal3fv(N057);
+ glVertex3fv(P057);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glNormal3fv(N057);
+ glVertex3fv(P057);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N047);
+ glVertex3fv(P047);
+ glNormal3fv(N048);
+ glVertex3fv(P048);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N047);
+ glVertex3fv(P047);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glNormal3fv(N055);
+ glVertex3fv(P055);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N045);
+ glVertex3fv(P045);
+ glNormal3fv(N046);
+ glVertex3fv(P046);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N046);
+ glVertex3fv(P046);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N046);
+ glVertex3fv(P046);
+ glNormal3fv(N047);
+ glVertex3fv(P047);
+ glNormal3fv(N055);
+ glVertex3fv(P055);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glEnd();
+}
+
+static void
+Dolphin010(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N080);
+ glVertex3fv(P080);
+ glNormal3fv(N081);
+ glVertex3fv(P081);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N081);
+ glVertex3fv(P081);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N087);
+ glVertex3fv(P087);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glNormal3fv(N087);
+ glVertex3fv(P087);
+ glNormal3fv(N090);
+ glVertex3fv(P090);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N081);
+ glVertex3fv(P081);
+ glNormal3fv(N080);
+ glVertex3fv(P080);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N081);
+ glVertex3fv(P081);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N085);
+ glVertex3fv(P085);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N087);
+ glVertex3fv(P087);
+ glNormal3fv(N083);
+ glVertex3fv(P083);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N087);
+ glVertex3fv(P087);
+ glNormal3fv(N077);
+ glVertex3fv(P077);
+ glNormal3fv(N090);
+ glVertex3fv(P090);
+ glEnd();
+}
+
+static void
+Dolphin011(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N082);
+ glVertex3fv(P082);
+ glNormal3fv(N084);
+ glVertex3fv(P084);
+ glNormal3fv(N079);
+ glVertex3fv(P079);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N084);
+ glVertex3fv(P084);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N079);
+ glVertex3fv(P079);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N079);
+ glVertex3fv(P079);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N088);
+ glVertex3fv(P088);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glNormal3fv(N088);
+ glVertex3fv(P088);
+ glNormal3fv(N089);
+ glVertex3fv(P089);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N088);
+ glVertex3fv(P088);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N089);
+ glVertex3fv(P089);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N089);
+ glVertex3fv(P089);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N086);
+ glVertex3fv(P086);
+ glNormal3fv(N084);
+ glVertex3fv(P084);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N078);
+ glVertex3fv(P078);
+ glNormal3fv(N084);
+ glVertex3fv(P084);
+ glNormal3fv(N079);
+ glVertex3fv(P079);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N084);
+ glVertex3fv(P084);
+ glNormal3fv(N082);
+ glVertex3fv(P082);
+ glNormal3fv(N079);
+ glVertex3fv(P079);
+ glEnd();
+}
+
+static void
+Dolphin012(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glNormal3fv(N067);
+ glVertex3fv(P067);
+ glNormal3fv(N066);
+ glVertex3fv(P066);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glNormal3fv(N052);
+ glVertex3fv(P052);
+ glNormal3fv(N060);
+ glVertex3fv(P060);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N059);
+ glVertex3fv(P059);
+ glNormal3fv(N060);
+ glVertex3fv(P060);
+ glNormal3fv(N067);
+ glVertex3fv(P067);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glNormal3fv(N066);
+ glVertex3fv(P066);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N058);
+ glVertex3fv(P058);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glNormal3fv(N057);
+ glVertex3fv(P057);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glNormal3fv(N057);
+ glVertex3fv(P057);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glNormal3fv(N006);
+ glVertex3fv(P006);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glNormal3fv(N006);
+ glVertex3fv(P006);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N056);
+ glVertex3fv(P056);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glNormal3fv(N055);
+ glVertex3fv(P055);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glNormal3fv(N062);
+ glVertex3fv(P062);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N052);
+ glVertex3fv(P052);
+ glNormal3fv(N053);
+ glVertex3fv(P053);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glNormal3fv(N060);
+ glVertex3fv(P060);
+ glEnd();
+}
+
+static void
+Dolphin013(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glNormal3fv(N117);
+ glVertex3fv(P117);
+ glNormal3fv(N112);
+ glVertex3fv(P112);
+ glNormal3fv(N113);
+ glVertex3fv(P113);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N114);
+ glVertex3fv(P114);
+ glNormal3fv(N113);
+ glVertex3fv(P113);
+ glNormal3fv(N112);
+ glVertex3fv(P112);
+ glNormal3fv(N115);
+ glVertex3fv(P115);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N114);
+ glVertex3fv(P114);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glNormal3fv(N113);
+ glVertex3fv(P113);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N114);
+ glVertex3fv(P114);
+ glNormal3fv(N007);
+ glVertex3fv(P007);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N007);
+ glVertex3fv(P007);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P002);
+ glVertex3fv(P007);
+ glVertex3fv(P008);
+ glVertex3fv(P099);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P007);
+ glVertex3fv(P114);
+ glVertex3fv(P115);
+ glVertex3fv(P008);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N117);
+ glVertex3fv(P117);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glNormal3fv(N008);
+ glVertex3fv(P008);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N117);
+ glVertex3fv(P117);
+ glNormal3fv(N008);
+ glVertex3fv(P008);
+ glNormal3fv(N112);
+ glVertex3fv(P112);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N112);
+ glVertex3fv(P112);
+ glNormal3fv(N008);
+ glVertex3fv(P008);
+ glNormal3fv(N115);
+ glVertex3fv(P115);
+ glEnd();
+}
+
+static void
+Dolphin014(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N111);
+ glVertex3fv(P111);
+ glNormal3fv(N110);
+ glVertex3fv(P110);
+ glNormal3fv(N102);
+ glVertex3fv(P102);
+ glNormal3fv(N121);
+ glVertex3fv(P121);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N111);
+ glVertex3fv(P111);
+ glNormal3fv(N097);
+ glVertex3fv(P097);
+ glNormal3fv(N110);
+ glVertex3fv(P110);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N097);
+ glVertex3fv(P097);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glNormal3fv(N110);
+ glVertex3fv(P110);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N097);
+ glVertex3fv(P097);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glNormal3fv(N066);
+ glVertex3fv(P066);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P098);
+ glVertex3fv(P097);
+ glVertex3fv(P111);
+ glVertex3fv(P121);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P002);
+ glVertex3fv(P099);
+ glVertex3fv(P097);
+ glVertex3fv(P098);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N110);
+ glVertex3fv(P110);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glNormal3fv(N118);
+ glVertex3fv(P118);
+ glNormal3fv(N102);
+ glVertex3fv(P102);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N119);
+ glVertex3fv(P119);
+ glNormal3fv(N066);
+ glVertex3fv(P066);
+ glNormal3fv(N067);
+ glVertex3fv(P067);
+ glNormal3fv(N118);
+ glVertex3fv(P118);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N067);
+ glVertex3fv(P067);
+ glNormal3fv(N060);
+ glVertex3fv(P060);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N067);
+ glVertex3fv(P067);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glNormal3fv(N118);
+ glVertex3fv(P118);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N118);
+ glVertex3fv(P118);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glNormal3fv(N098);
+ glVertex3fv(P098);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N118);
+ glVertex3fv(P118);
+ glNormal3fv(N098);
+ glVertex3fv(P098);
+ glNormal3fv(N102);
+ glVertex3fv(P102);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N102);
+ glVertex3fv(P102);
+ glNormal3fv(N098);
+ glVertex3fv(P098);
+ glNormal3fv(N121);
+ glVertex3fv(P121);
+ glEnd();
+}
+
+static void
+Dolphin015(GLenum cap)
+{
+ glBegin(cap);
+ glNormal3fv(N055);
+ glVertex3fv(P055);
+ glNormal3fv(N003);
+ glVertex3fv(P003);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N003);
+ glVertex3fv(P003);
+ glNormal3fv(N055);
+ glVertex3fv(P055);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N003);
+ glVertex3fv(P003);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N003);
+ glVertex3fv(P003);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N054);
+ glVertex3fv(P054);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glNormal3fv(N062);
+ glVertex3fv(P062);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N063);
+ glVertex3fv(P063);
+ glNormal3fv(N006);
+ glVertex3fv(P006);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glNormal3fv(N006);
+ glVertex3fv(P006);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glNormal3fv(N117);
+ glVertex3fv(P117);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glNormal3fv(N064);
+ glVertex3fv(P064);
+ glNormal3fv(N117);
+ glVertex3fv(P117);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N006);
+ glVertex3fv(P006);
+ glNormal3fv(N065);
+ glVertex3fv(P065);
+ glNormal3fv(N099);
+ glVertex3fv(P099);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N062);
+ glVertex3fv(P062);
+ glNormal3fv(N100);
+ glVertex3fv(P100);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glNormal3fv(N062);
+ glVertex3fv(P062);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glNormal3fv(N120);
+ glVertex3fv(P120);
+ glNormal3fv(N116);
+ glVertex3fv(P116);
+ glEnd();
+ glBegin(cap);
+ glNormal3fv(N060);
+ glVertex3fv(P060);
+ glNormal3fv(N005);
+ glVertex3fv(P005);
+ glNormal3fv(N002);
+ glVertex3fv(P002);
+ glEnd();
+}
+
+static void
+Dolphin016(GLenum cap)
+{
+
+ glDisable(GL_DEPTH_TEST);
+ glBegin(cap);
+ glVertex3fv(P123);
+ glVertex3fv(P124);
+ glVertex3fv(P125);
+ glVertex3fv(P126);
+ glVertex3fv(P127);
+ glVertex3fv(P128);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P129);
+ glVertex3fv(P130);
+ glVertex3fv(P131);
+ glVertex3fv(P132);
+ glVertex3fv(P133);
+ glVertex3fv(P134);
+ glEnd();
+ glBegin(cap);
+ glVertex3fv(P103);
+ glVertex3fv(P105);
+ glVertex3fv(P108);
+ glEnd();
+ glEnable(GL_DEPTH_TEST);
+}
+
+void
+DrawDolphin(fishRec * fish, int wire)
+{
+ float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
+ float pitch, thrash, chomp;
+ GLenum cap;
+
+ fish->htail = (int) (fish->htail - (int) (10 * fish->v)) % 360;
+
+ thrash = 70 * fish->v;
+
+ seg0 = 1 * thrash * sin((fish->htail) * RRAD);
+ seg3 = 1 * thrash * sin((fish->htail) * RRAD);
+ seg1 = 2 * thrash * sin((fish->htail + 4) * RRAD);
+ seg2 = 3 * thrash * sin((fish->htail + 6) * RRAD);
+ seg4 = 4 * thrash * sin((fish->htail + 10) * RRAD);
+ seg5 = 4.5 * thrash * sin((fish->htail + 15) * RRAD);
+ seg6 = 5 * thrash * sin((fish->htail + 20) * RRAD);
+ seg7 = 6 * thrash * sin((fish->htail + 30) * RRAD);
+
+ pitch = fish->v * sin((fish->htail + 180) * RRAD);
+
+/* if (fish->v > 2) {
+ chomp = -(fish->v - 2) * 200;
+ }*/
+ chomp = 100;
+
+ P012[1] = iP012[1] + seg5;
+ P013[1] = iP013[1] + seg5;
+ P014[1] = iP014[1] + seg5;
+ P015[1] = iP015[1] + seg5;
+ P016[1] = iP016[1] + seg5;
+ P017[1] = iP017[1] + seg5;
+ P018[1] = iP018[1] + seg5;
+ P019[1] = iP019[1] + seg5;
+
+ P020[1] = iP020[1] + seg4;
+ P021[1] = iP021[1] + seg4;
+ P022[1] = iP022[1] + seg4;
+ P023[1] = iP023[1] + seg4;
+ P024[1] = iP024[1] + seg4;
+ P025[1] = iP025[1] + seg4;
+ P026[1] = iP026[1] + seg4;
+ P027[1] = iP027[1] + seg4;
+
+ P028[1] = iP028[1] + seg2;
+ P029[1] = iP029[1] + seg2;
+ P030[1] = iP030[1] + seg2;
+ P031[1] = iP031[1] + seg2;
+ P032[1] = iP032[1] + seg2;
+ P033[1] = iP033[1] + seg2;
+ P034[1] = iP034[1] + seg2;
+ P035[1] = iP035[1] + seg2;
+
+ P036[1] = iP036[1] + seg1;
+ P037[1] = iP037[1] + seg1;
+ P038[1] = iP038[1] + seg1;
+ P039[1] = iP039[1] + seg1;
+ P040[1] = iP040[1] + seg1;
+ P041[1] = iP041[1] + seg1;
+ P042[1] = iP042[1] + seg1;
+ P043[1] = iP043[1] + seg1;
+
+ P044[1] = iP044[1] + seg0;
+ P045[1] = iP045[1] + seg0;
+ P046[1] = iP046[1] + seg0;
+ P047[1] = iP047[1] + seg0;
+ P048[1] = iP048[1] + seg0;
+ P049[1] = iP049[1] + seg0;
+ P050[1] = iP050[1] + seg0;
+ P051[1] = iP051[1] + seg0;
+
+ P009[1] = iP009[1] + seg6;
+ P010[1] = iP010[1] + seg6;
+ P075[1] = iP075[1] + seg6;
+ P076[1] = iP076[1] + seg6;
+
+ P001[1] = iP001[1] + seg7;
+ P011[1] = iP011[1] + seg7;
+ P068[1] = iP068[1] + seg7;
+ P069[1] = iP069[1] + seg7;
+ P070[1] = iP070[1] + seg7;
+ P071[1] = iP071[1] + seg7;
+ P072[1] = iP072[1] + seg7;
+ P073[1] = iP073[1] + seg7;
+ P074[1] = iP074[1] + seg7;
+
+ P091[1] = iP091[1] + seg3;
+ P092[1] = iP092[1] + seg3;
+ P093[1] = iP093[1] + seg3;
+ P094[1] = iP094[1] + seg3;
+ P095[1] = iP095[1] + seg3;
+ P122[1] = iP122[1] + seg3 * 1.5;
+
+ P097[1] = iP097[1] + chomp;
+ P098[1] = iP098[1] + chomp;
+ P102[1] = iP102[1] + chomp;
+ P110[1] = iP110[1] + chomp;
+ P111[1] = iP111[1] + chomp;
+ P121[1] = iP121[1] + chomp;
+ P118[1] = iP118[1] + chomp;
+ P119[1] = iP119[1] + chomp;
+
+ glPushMatrix();
+
+ glRotatef(pitch, 1, 0, 0);
+
+ glTranslatef(0, 0, 7000);
+
+ glRotatef(180, 0, 1, 0);
+
+ glEnable(GL_CULL_FACE);
+ cap = wire ? GL_LINE_LOOP : GL_POLYGON;
+ Dolphin014(cap);
+ Dolphin010(cap);
+ Dolphin009(cap);
+ Dolphin012(cap);
+ Dolphin013(cap);
+ Dolphin006(cap);
+ Dolphin002(cap);
+ Dolphin001(cap);
+ Dolphin003(cap);
+ Dolphin015(cap);
+ Dolphin004(cap);
+ Dolphin005(cap);
+ Dolphin007(cap);
+ Dolphin008(cap);
+ Dolphin011(cap);
+ Dolphin016(cap);
+ glDisable(GL_CULL_FACE);
+
+ glPopMatrix();
+}
+#endif
diff --git a/hacks/glx/dropshadow.c b/hacks/glx/dropshadow.c
new file mode 100644
index 0000000..0a5855c
--- /dev/null
+++ b/hacks/glx/dropshadow.c
@@ -0,0 +1,181 @@
+/* dropshadow.c, Copyright (c) 2009 Jens Kilian
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include
+
+#include "dropshadow.h"
+
+/* (Alpha) texture data for drop shadow.
+ */
+static int drop_shadow_width = 32;
+static int drop_shadow_height = 32;
+static unsigned char drop_shadow_data[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 3, 4, 6, 7, 9, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 9, 7, 6, 4, 3, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 3, 5, 9, 13, 16, 19, 19, 21, 21, 22, 22,
+ 22, 22, 21, 21, 19, 19, 16, 13, 9, 5, 3, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 3, 5, 10, 16, 22, 28, 32, 35, 37, 37, 38, 38,
+ 38, 38, 37, 37, 35, 32, 28, 22, 16, 10, 5, 3, 1, 1, 0, 0,
+ 0, 0, 1, 1, 4, 9, 16, 25, 34, 43, 50, 55, 58, 59, 60, 60,
+ 60, 60, 59, 58, 55, 50, 43, 34, 25, 16, 9, 4, 1, 1, 0, 0,
+ 0, 0, 1, 3, 6, 13, 22, 34, 48, 61, 70, 77, 80, 82, 83, 84,
+ 84, 83, 82, 80, 77, 70, 61, 48, 34, 22, 13, 6, 3, 1, 0, 0,
+ 0, 0, 1, 3, 7, 16, 28, 43, 61, 76, 88, 97, 102, 103, 104, 104,
+ 104, 104, 103, 102, 97, 88, 76, 61, 43, 28, 16, 7, 3, 1, 0, 0,
+ 0, 1, 1, 4, 9, 19, 32, 51, 70, 88, 103, 112, 117, 120, 121, 121,
+ 121, 121, 120, 117, 112, 103, 88, 70, 51, 32, 19, 9, 4, 1, 1, 0,
+ 0, 1, 1, 4, 10, 20, 35, 55, 77, 97, 112, 122, 128, 130, 132, 133,
+ 133, 132, 130, 128, 122, 112, 97, 77, 55, 35, 20, 10, 4, 1, 1, 0,
+ 0, 1, 1, 4, 10, 21, 37, 58, 80, 101, 117, 128, 134, 137, 138, 139,
+ 139, 138, 137, 134, 128, 117, 101, 80, 58, 37, 21, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 21, 38, 59, 82, 103, 119, 130, 137, 139, 141, 142,
+ 142, 141, 139, 137, 130, 119, 103, 82, 59, 38, 21, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 22, 38, 59, 83, 104, 121, 132, 139, 141, 142, 142,
+ 142, 142, 141, 139, 132, 121, 104, 83, 59, 38, 22, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 22, 38, 60, 84, 104, 121, 133, 139, 142, 142, 142,
+ 142, 142, 142, 139, 133, 121, 104, 84, 60, 38, 22, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 22, 38, 60, 84, 104, 121, 133, 139, 142, 142, 142,
+ 142, 142, 142, 139, 133, 121, 104, 84, 60, 38, 22, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 22, 38, 59, 83, 104, 121, 132, 139, 141, 142, 142,
+ 142, 142, 141, 139, 132, 121, 104, 83, 59, 38, 22, 10, 4, 1, 0, 0,
+ 0, 0, 1, 4, 10, 21, 38, 59, 82, 103, 119, 130, 137, 139, 141, 142,
+ 142, 141, 139, 137, 130, 119, 103, 82, 59, 38, 21, 10, 4, 1, 0, 0,
+ 0, 1, 1, 4, 10, 21, 37, 58, 80, 101, 118, 128, 134, 137, 139, 139,
+ 139, 139, 137, 134, 128, 117, 102, 80, 58, 37, 21, 10, 4, 1, 0, 0,
+ 0, 1, 1, 4, 10, 20, 35, 55, 77, 97, 112, 122, 128, 130, 132, 133,
+ 133, 132, 130, 128, 122, 112, 97, 77, 55, 35, 20, 10, 4, 1, 1, 0,
+ 0, 1, 1, 4, 9, 19, 32, 51, 70, 88, 103, 112, 117, 120, 121, 121,
+ 121, 121, 120, 117, 112, 103, 88, 70, 51, 32, 19, 9, 4, 1, 1, 0,
+ 0, 0, 1, 3, 7, 16, 28, 43, 61, 76, 88, 97, 102, 103, 104, 104,
+ 104, 104, 103, 102, 97, 88, 76, 61, 43, 28, 16, 7, 3, 1, 0, 0,
+ 0, 0, 1, 3, 6, 13, 22, 34, 48, 61, 70, 77, 80, 82, 83, 84,
+ 84, 83, 82, 80, 77, 70, 61, 48, 34, 22, 13, 6, 3, 1, 0, 0,
+ 0, 0, 1, 1, 4, 9, 16, 25, 34, 43, 50, 55, 58, 59, 60, 60,
+ 60, 60, 59, 58, 55, 50, 43, 34, 25, 16, 9, 4, 1, 1, 0, 0,
+ 0, 0, 1, 1, 3, 5, 10, 16, 22, 28, 32, 35, 37, 37, 38, 38,
+ 38, 38, 37, 37, 35, 32, 28, 22, 16, 10, 5, 3, 1, 1, 0, 0,
+ 0, 0, 0, 1, 1, 3, 5, 9, 13, 16, 19, 19, 21, 21, 22, 22,
+ 22, 22, 21, 21, 19, 19, 16, 13, 9, 5, 3, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 3, 4, 6, 7, 9, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 9, 7, 6, 4, 3, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+GLuint
+init_drop_shadow(void)
+{
+ GLuint t;
+
+ glGenTextures (1, &t);
+ if (t <= 0) abort();
+
+ glBindTexture (GL_TEXTURE_2D, t);
+#if 0
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+ gluBuild2DMipmaps (GL_TEXTURE_2D, GL_ALPHA,
+ drop_shadow_width, drop_shadow_height,
+ GL_ALPHA, GL_UNSIGNED_BYTE,
+ drop_shadow_data);
+#else
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA,
+ drop_shadow_width, drop_shadow_height, 0,
+ GL_ALPHA, GL_UNSIGNED_BYTE,
+ drop_shadow_data);
+#endif
+
+ return t;
+}
+
+void
+draw_drop_shadow (GLuint t,
+ GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h,
+ GLfloat r)
+{
+ /* Inner and outer boundaries of shadow. */
+ const GLfloat li = x, lo = li - r;
+ const GLfloat ri = x + w, ro = ri + r;
+ const GLfloat bi = y, bo = bi - r;
+ const GLfloat ti = y + h, to = ti + r;
+
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glEnable (GL_TEXTURE_2D);
+ glBindTexture (GL_TEXTURE_2D, t);
+
+ glBegin (GL_QUADS);
+
+ /* There's likely a better way to do this... */
+ glTexCoord2f (0.0, 0.0); glVertex3f (lo, bo, z);
+ glTexCoord2f (0.5, 0.0); glVertex3f (li, bo, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z);
+ glTexCoord2f (0.0, 0.5); glVertex3f (lo, bi, z);
+
+ glTexCoord2f (0.5, 0.0); glVertex3f (li, bo, z);
+ glTexCoord2f (0.5, 0.0); glVertex3f (ri, bo, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z);
+
+ glTexCoord2f (0.5, 0.0); glVertex3f (ri, bo, z);
+ glTexCoord2f (1.0, 0.0); glVertex3f (ro, bo, z);
+ glTexCoord2f (1.0, 0.5); glVertex3f (ro, bi, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z);
+
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, bi, z);
+ glTexCoord2f (1.0, 0.5); glVertex3f (ro, bi, z);
+ glTexCoord2f (1.0, 0.5); glVertex3f (ro, ti, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z);
+
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z);
+ glTexCoord2f (1.0, 0.5); glVertex3f (ro, ti, z);
+ glTexCoord2f (1.0, 1.0); glVertex3f (ro, to, z);
+ glTexCoord2f (0.5, 1.0); glVertex3f (ri, to, z);
+
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (ri, ti, z);
+ glTexCoord2f (0.5, 1.0); glVertex3f (ri, to, z);
+ glTexCoord2f (0.5, 1.0); glVertex3f (li, to, z);
+
+ glTexCoord2f (0.0, 0.5); glVertex3f (lo, ti, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z);
+ glTexCoord2f (0.5, 1.0); glVertex3f (li, to, z);
+ glTexCoord2f (0.0, 1.0); glVertex3f (lo, to, z);
+
+ glTexCoord2f (0.0, 0.5); glVertex3f (lo, bi, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, bi, z);
+ glTexCoord2f (0.5, 0.5); glVertex3f (li, ti, z);
+ glTexCoord2f (0.0, 0.5); glVertex3f (lo, ti, z);
+
+ glEnd();
+}
diff --git a/hacks/glx/dropshadow.h b/hacks/glx/dropshadow.h
new file mode 100644
index 0000000..09af0c8
--- /dev/null
+++ b/hacks/glx/dropshadow.h
@@ -0,0 +1,40 @@
+/* dropshadow.h, Copyright (c) 2009 Jens Kilian
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifndef __DROPSHADOW_H__
+#define __DROPSHADOW_H__
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include "xlockmoreI.h"
+
+/* Initialize drop shadow texture, return a texture ID.
+ */
+GLuint
+init_drop_shadow(void);
+
+/* Draw a drop shadow around a rectangle.
+
+ t Texture ID (as returned by init_drop_shadow()).
+ x, y, z; w, h Position (left bottom), depth and size of rectangle.
+ r Radius of drop shadow.
+
+ The shadow will be drawn using the current color.
+ */
+
+void
+draw_drop_shadow (GLuint t,
+ GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h,
+ GLfloat r);
+
+#endif /* __DROPSHADOW_H__ */
diff --git a/hacks/glx/dxf2gl.pl b/hacks/glx/dxf2gl.pl
new file mode 100755
index 0000000..9ed470c
--- /dev/null
+++ b/hacks/glx/dxf2gl.pl
@@ -0,0 +1,729 @@
+#!/usr/bin/perl -w
+# Copyright © 2003-2014 Jamie Zawinski
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation. No representations are made about the suitability of this
+# software for any purpose. It is provided "as is" without express or
+# implied warranty.
+#
+# Reads a DXF file, and emits C data suitable for use with OpenGL's
+# glInterleavedArrays() and glDrawArrays() routines.
+#
+# Options:
+#
+# --normalize Compute the bounding box of the object, and scale all
+# coordinates so that the object fits inside a unit cube.
+#
+# --smooth When computing normals for the vertexes, average the
+# normals at any edge which is less than 90 degrees.
+# If this option is not specified, planar normals will be
+# used, resulting in a "faceted" object.
+#
+# --wireframe Emit lines instead of faces.
+#
+# --layers Emit a separate set of polygons for each layer in the
+# input file, instead of emitting the whole file as a
+# single unit.
+#
+# Created: 8-Mar-2003.
+
+require 5;
+use diagnostics;
+use strict;
+
+use POSIX qw(mktime strftime);
+use Math::Trig qw(acos);
+use Text::Wrap;
+
+my $progname = $0; $progname =~ s@.*/@@g;
+my ($version) = ('$Revision: 1.11 $' =~ m/\s(\d[.\d]+)\s/s);
+
+my $verbose = 0;
+
+
+# convert a vector to a unit vector
+sub normalize($$$) {
+ my ($x, $y, $z) = @_;
+ my $L = sqrt (($x * $x) + ($y * $y) + ($z * $z));
+ if ($L != 0) {
+ $x /= $L;
+ $y /= $L;
+ $z /= $L;
+ } else {
+ $x = $y = $z = 0;
+ }
+ return ($x, $y, $z);
+}
+
+
+# Calculate the unit normal at p0 given two other points p1,p2 on the
+# surface. The normal points in the direction of p1 crossproduct p2.
+#
+sub face_normal($$$$$$$$$) {
+ my ($p0x, $p0y, $p0z,
+ $p1x, $p1y, $p1z,
+ $p2x, $p2y, $p2z) = @_;
+
+ my ($nx, $ny, $nz);
+ my ($pax, $pay, $paz);
+ my ($pbx, $pby, $pbz);
+
+ $pax = $p1x - $p0x;
+ $pay = $p1y - $p0y;
+ $paz = $p1z - $p0z;
+ $pbx = $p2x - $p0x;
+ $pby = $p2y - $p0y;
+ $pbz = $p2z - $p0z;
+ $nx = $pay * $pbz - $paz * $pby;
+ $ny = $paz * $pbx - $pax * $pbz;
+ $nz = $pax * $pby - $pay * $pbx;
+
+ return (normalize ($nx, $ny, $nz));
+}
+
+
+my $pi = 3.141592653589793;
+my $radians_to_degrees = 180.0 / $pi;
+
+# Calculate the angle (in degrees) between two vectors.
+#
+sub vector_angle($$$$$$) {
+ my ($x1, $y1, $z1,
+ $x2, $y2, $z2) = @_;
+
+ my $L1 = sqrt ($x1*$x1 + $y1*$y1 + $z1*$z1);
+ my $L2 = sqrt ($x2*$x2 + $y2*$y2 + $z2*$z2);
+
+ return 0 if ($L1 == 0 || $L2 == 0);
+ return 0 if ($x1 == $x2 && $y1 == $y2 && $z1 == $z2);
+
+ # dot product of two vectors is defined as:
+ # $L1 * $L1 * cos(angle between vectors)
+ # and is also defined as:
+ # $x1*$x2 + $y1*$y2 + $z1*$z2
+ # so:
+ # $L1 * $L1 * cos($angle) = $x1*$x2 + $y1*$y2 + $z1*$z2
+ # cos($angle) = ($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2)
+ # $angle = acos (($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2));
+ #
+ my $cos = ($x1*$x2 + $y1*$y2 + $z1*$z2) / ($L1 * $L2);
+ $cos = 1 if ($cos > 1); # avoid fp rounding error (1.000001 => sqrt error)
+ my $angle = acos ($cos);
+
+ return ($angle * $radians_to_degrees);
+}
+
+
+# given a list of triangles ( [ X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, ]+ )
+# returns a list of the normals for each vertex. These are the smoothed
+# normals: the average of the normals of the participating faces.
+#
+sub compute_vertex_normals(@) {
+ my (@points) = @_;
+ my $npoints = ($#points+1) / 3;
+ my $nfaces = $npoints / 3;
+
+ my @face_normals = ();
+ my %point_faces;
+
+ for (my $i = 0; $i < $nfaces; $i++) {
+ my ($ax, $ay, $az, $bx, $by, $bz, $cx, $cy, $cz) =
+ @points[($i*9) .. ($i*9)+8];
+
+ # store the normal for each face in the $face_normals array
+ # indexed by face number.
+ #
+ my @norm = face_normal ($ax, $ay, $az,
+ $bx, $by, $bz,
+ $cx, $cy, $cz);
+ $face_normals[$i] = \@norm;
+
+ # store in the %point_faces hash table a list of every face number
+ # in which a point participates
+
+ foreach my $p ("$ax $ay $az", "$bx $by $bz", "$cx $cy $cz") {
+ my @flist = (defined($point_faces{$p}) ? @{$point_faces{$p}} : ());
+ push @flist, $i;
+ $point_faces{$p} = \@flist;
+ }
+ }
+
+
+ # compute the normal for each vertex of each face.
+ # (these points are not unique -- because there might be multiple
+ # normals associated with the same vertex for different faces,
+ # in the case where it's a sharp angle.)
+ #
+ my @normals = ();
+ for (my $i = 0; $i < $nfaces; $i++) {
+ my @verts = @points[($i*9) .. ($i*9)+8];
+ error ("overshot in points?") unless defined($verts[8]);
+
+ my @norm = @{$face_normals[$i]};
+ error ("no normal $i?") unless defined($norm[2]);
+
+ # iterate over the (three) vertexes in this face.
+ #
+ for (my $j = 0; $j < 3; $j++) {
+ my ($x, $y, $z) = @verts[($j*3) .. ($j*3)+2];
+ error ("overshot in verts?") unless defined($z);
+
+ # Iterate over the faces in which this point participates.
+ # But ignore any other faces that are at more than an N degree
+ # angle from this point's face. Those are sharp edges.
+ #
+ my ($nx, $ny, $nz) = (0, 0, 0);
+ my @faces = @{$point_faces{"$x $y $z"}};
+ foreach my $fn (@faces) {
+ my ($ax, $ay, $az, $bx, $by, $bz, $cx, $cy, $cz) =
+ @points[($fn*9) .. ($fn*9)+8];
+ my @fnorm = @{$face_normals[$fn]};
+
+ # ignore any adjascent faces that are more than N degrees off.
+ my $angle = vector_angle ($norm[0], $norm[1], $norm[2],
+ $fnorm[0], $fnorm[1], $fnorm[2]);
+ next if ($angle >= 30);
+
+ $nx += $fnorm[0];
+ $ny += $fnorm[1];
+ $nz += $fnorm[2];
+ }
+
+ push @normals, normalize ($nx, $ny, $nz);
+ }
+ }
+
+ return @normals;
+}
+
+
+sub parse_dxf($$$$$) {
+ my ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p) = @_;
+
+ $dxf =~ s/\r\n/\n/gs; # CRLF
+ $dxf =~ s/^[ \t\n]+|[ \t\n]+$//s; # leading/trailing whitespace
+
+ # Convert whitespace within a line to _, e.g., "ObjectDBX Classes".
+ # What the hell is up with this file format!
+ 1 while ($dxf =~ s/([^ \t\n])[ \t]+([^ \t\n])/$1_$2/gs);
+
+ $dxf =~ s/\r/\n/gs;
+
+ # Turn blank lines into "", e.g., "$DIMBLK \n 1 \n \n 9 \n"
+ $dxf =~ s/\n\n/\n""\n/gs;
+
+ my @tokens = split (/[ \t\n]+/, $dxf); # tokenize
+
+ my @entities = (); # parse
+ while (@tokens) {
+ my @elts = ();
+ my $key = shift @tokens; # sectionize at "0 WORD"
+ do {
+ my $val = shift @tokens;
+ push @elts, [ $key, $val ]; # contents are [CODE VAL]
+ $key = shift @tokens;
+ } while ($key && $key ne 0);
+ unshift @tokens, $key if defined($key);
+ push @entities, \@elts;
+ }
+ my %triangles; # list of points, indexed by layer name
+ my %lines;
+ my $error_count = 0;
+
+ foreach my $entity (@entities) {
+ my $header = shift @$entity;
+ my ($code, $name) = @$header;
+
+ if ($name eq 'SECTION' ||
+ $name eq 'HEADER' ||
+ $name eq 'ENDSEC' ||
+ $name eq 'EOF') {
+ print STDERR "$progname: $filename: ignoring \"$code $name\"\n"
+ if ($verbose > 1);
+
+ } elsif ($name eq '3DFACE') {
+
+ my @points = ();
+ my $pc = 0;
+ my $layer = '';
+
+ foreach my $entry (@$entity) {
+ my ($key, $val) = @$entry;
+ if ($key eq 8) { $layer = $val; # layer name
+
+ } elsif ($key eq 10) { $pc++; $points[0] = $val; # X1
+ } elsif ($key eq 20) { $pc++; $points[1] = $val; # Y1
+ } elsif ($key eq 30) { $pc++; $points[2] = $val; # Z1
+
+ } elsif ($key eq 11) { $pc++; $points[3] = $val; # X2
+ } elsif ($key eq 21) { $pc++; $points[4] = $val; # Y2
+ } elsif ($key eq 31) { $pc++; $points[5] = $val; # Z2
+
+ } elsif ($key eq 12) { $pc++; $points[6] = $val; # X3
+ } elsif ($key eq 22) { $pc++; $points[7] = $val; # Y3
+ } elsif ($key eq 32) { $pc++; $points[8] = $val; # Z3
+
+ } elsif ($key eq 13) { $pc++; $points[9] = $val; # X4
+ } elsif ($key eq 23) { $pc++; $points[10] = $val; # Y4
+ } elsif ($key eq 33) { $pc++; $points[11] = $val; # Z4
+
+ } elsif ($key eq 62) { # color number
+ } elsif ($key eq 70) { # invisible edge flag
+ } else {
+ print STDERR "$progname: $filename: WARNING:" .
+ " unknown $name: \"$key $val\"\n";
+ $error_count++;
+ }
+ }
+
+ error ("got $pc points in $name") unless ($pc == 12);
+
+ if ($points[6] != $points[9] ||
+ $points[7] != $points[10] ||
+ $points[8] != $points[11]) {
+ error ("$filename: got a quad, not a triangle\n");
+ } else {
+ @points = @points[0 .. 8];
+ }
+
+ foreach (@points) { $_ += 0; } # convert strings to numbers
+
+ $layer = '' unless $layers_p;
+
+ $triangles{$layer} = [] unless defined ($triangles{$layer});
+ push @{$triangles{$layer}}, @points;
+
+ } elsif ($name eq 'LINE') {
+
+ my @points = ();
+ my $pc = 0;
+ my $layer = '';
+
+ foreach my $entry (@$entity) {
+ my ($key, $val) = @$entry;
+ if ($key eq 8) { $layer = $val; # layer name
+
+ } elsif ($key eq 10) { $pc++; $points[0] = $val; # X1
+ } elsif ($key eq 20) { $pc++; $points[1] = $val; # Y1
+ } elsif ($key eq 30) { $pc++; $points[2] = $val; # Z1
+
+ } elsif ($key eq 11) { $pc++; $points[3] = $val; # X2
+ } elsif ($key eq 21) { $pc++; $points[4] = $val; # Y2
+ } elsif ($key eq 31) { $pc++; $points[5] = $val; # Z2
+
+ } elsif ($key eq 39) { # thickness
+ } elsif ($key eq 62) { # color number
+ } else {
+ print STDERR "$progname: $filename: WARNING:" .
+ " unknown $name: \"$key $val\"\n";
+ $error_count++;
+ }
+ }
+
+ error ("got $pc points in $name") unless ($pc == 6);
+
+ foreach (@points) { $_ += 0; } # convert strings to numbers
+
+ $layer = '' unless $layers_p;
+
+ $lines{$layer} = [] unless defined ($lines{$layer});
+ push @{$lines{$layer}}, @points;
+
+ } elsif ($name =~ m/^\d+$/s) {
+ error ("sequence lost: \"$code $name\"");
+
+ } else {
+ print STDERR "$progname: $filename: WARNING: unknown: \"$code $name\"\n";
+ $error_count++;
+ }
+
+ error ("too many errors: bailing!") if ($error_count > 50);
+ }
+
+ if ($wireframe_p) {
+
+ # Convert faces to lines.
+ # Don't duplicate shared edges.
+
+ foreach my $layer (keys %triangles) {
+ my %dups;
+ my @triangles = @{$triangles{$layer}};
+ while (@triangles) {
+ my $x1 = shift @triangles; # 0
+ my $y1 = shift @triangles; # 1
+ my $z1 = shift @triangles; # 2
+ my $x2 = shift @triangles; # 3
+ my $y2 = shift @triangles; # 4
+ my $z2 = shift @triangles; # 5
+ my $x3 = shift @triangles; # 6
+ my $y3 = shift @triangles; # 7
+ my $z3 = shift @triangles; # 8
+
+ my $p = sub(@) {
+ my ($x1, $y1, $z1, $x2, $y2, $z2) = @_;
+ my $key1 = "$x1, $y1, $z1, $x2, $y2, $z2";
+ my $key2 = "$x2, $y2, $z2, $x1, $y1, $z1";
+ my $dup = $dups{$key1} || $dups{$key2};
+ $dups{$key1} = 1;
+ $dups{$key2} = 1;
+ push @{$lines{$layer}}, @_ unless $dup;
+ }
+ ;
+ $p->($x1, $y1, $z1, $x2, $y2, $z2);
+ $p->($x2, $y2, $z2, $x3, $y3, $z3);
+ $p->($x3, $y3, $z3, $x1, $y1, $z1);
+ }
+
+ @{$triangles{$layer}} = ();
+ }
+
+ } else {
+ foreach my $layer (keys %lines) {
+ my $n = @{$lines{$layer}};
+ @{$lines{$layer}} = ();
+ print STDERR "$progname: $filename: $layer: WARNING:" .
+ " ignored $n stray LINE" . ($n == 1 ? "" : "s") . ".\n"
+ if ($n);
+ }
+ }
+
+
+ # find bounding box, and normalize
+ #
+ if ($normalize_p || $verbose) {
+ my $minx = 999999999;
+ my $miny = 999999999;
+ my $minz = 999999999;
+ my $maxx = -999999999;
+ my $maxy = -999999999;
+ my $maxz = -999999999;
+ my $i = 0;
+
+ foreach my $layer (keys %triangles) {
+ my %dups;
+ my @triangles = @{$triangles{$layer}};
+
+ foreach my $n (@{$lines{$layer}}, @{$triangles{$layer}}) {
+ if ($i == 0) { $minx = $n if ($n < $minx);
+ $maxx = $n if ($n > $maxx); }
+ elsif ($i == 1) { $miny = $n if ($n < $miny);
+ $maxy = $n if ($n > $maxy); }
+ else { $minz = $n if ($n < $minz);
+ $maxz = $n if ($n > $maxz); }
+ $i = 0 if (++$i == 3);
+ }
+ }
+
+ my $w = ($maxx - $minx);
+ my $h = ($maxy - $miny);
+ my $d = ($maxz - $minz);
+ my $sizea = ($w > $h ? $w : $h);
+ my $sizeb = ($w > $d ? $w : $d);
+ my $size = ($sizea > $sizeb ? $sizea : $sizeb);
+
+ print STDERR "$progname: $filename: bbox is " .
+ sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d)
+ if ($verbose);
+ print STDERR "$progname: $filename: center is " .
+ sprintf("%.2f, %.2f, %.2f\n",
+ $minx + $w / 2,
+ $miny + $h / 2,
+ $minz + $d / 2)
+ if ($verbose);
+
+ if ($normalize_p) {
+ $w /= $size;
+ $h /= $size;
+ $d /= $size;
+
+ print STDERR "$progname: $filename: dividing by " .
+ sprintf("%.2f", $size) . " for bbox of " .
+ sprintf("%.2f x %.2f x %.2f\n", $w, $h, $d)
+ if ($verbose);
+ foreach my $layer (keys %triangles) {
+ foreach my $n (@{$triangles{$layer}}) { $n /= $size; }
+ foreach my $n (@{$lines{$layer}}) { $n /= $size; }
+ }
+ }
+ }
+
+ return ($wireframe_p ? \%lines : \%triangles);
+}
+
+
+sub generate_c_1($$$$$@) {
+ my ($name, $outfile, $smooth_p, $wireframe_p, $normalize_p, @points) = @_;
+
+ my $ccw_p = 1; # counter-clockwise winding rule for computing normals
+
+ my $npoints = ($#points + 1) / 3;
+ my $nfaces = ($wireframe_p ? $npoints/2 : $npoints/3);
+
+ my @normals;
+ if ($smooth_p && !$wireframe_p) {
+ @normals = compute_vertex_normals (@points);
+
+ if ($#normals != $#points) {
+ error ("computed " . (($#normals+1)/3) . " normals for " .
+ (($#points+1)/3) . " points?");
+ }
+ }
+
+ my $code .= "\nstatic const float ${name}_data[] = {\n";
+
+ if ($wireframe_p) {
+ my %dups;
+ for (my $i = 0; $i < $nfaces; $i++) {
+ my $ax = $points[$i*6];
+ my $ay = $points[$i*6+1];
+ my $az = $points[$i*6+2];
+
+ my $bx = $points[$i*6+3];
+ my $by = $points[$i*6+4];
+ my $bz = $points[$i*6+5];
+
+ my $lines = sprintf("\t" . "%.6f,%.6f,%.6f,\n" .
+ "\t" . "%.6f,%.6f,%.6f,\n",
+ $ax, $ay, $az,
+ $bx, $by, $bz);
+ $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes
+ $lines =~ s/\.,/,/g;
+ $lines =~ s/-0,/0,/g;
+
+ $code .= $lines;
+ }
+
+ } else {
+ for (my $i = 0; $i < $nfaces; $i++) {
+ my $ax = $points[$i*9];
+ my $ay = $points[$i*9+1];
+ my $az = $points[$i*9+2];
+
+ my $bx = $points[$i*9+3];
+ my $by = $points[$i*9+4];
+ my $bz = $points[$i*9+5];
+
+ my $cx = $points[$i*9+6];
+ my $cy = $points[$i*9+7];
+ my $cz = $points[$i*9+8];
+
+ my ($nax, $nay, $naz,
+ $nbx, $nby, $nbz,
+ $ncx, $ncy, $ncz);
+
+ if ($smooth_p) {
+ $nax = $normals[$i*9];
+ $nay = $normals[$i*9+1];
+ $naz = $normals[$i*9+2];
+
+ $nbx = $normals[$i*9+3];
+ $nby = $normals[$i*9+4];
+ $nbz = $normals[$i*9+5];
+
+ $ncx = $normals[$i*9+6];
+ $ncy = $normals[$i*9+7];
+ $ncz = $normals[$i*9+8];
+
+ } else {
+ if ($ccw_p) {
+ ($nax, $nay, $naz) = face_normal ($ax, $ay, $az,
+ $bx, $by, $bz,
+ $cx, $cy, $cz);
+ } else {
+ ($nax, $nay, $naz) = face_normal ($ax, $ay, $az,
+ $cx, $cy, $cz,
+ $bx, $by, $bz);
+ }
+ ($nbx, $nby, $nbz) = ($nax, $nay, $naz);
+ ($ncx, $ncy, $ncz) = ($nax, $nay, $naz);
+ }
+
+ my $lines = sprintf("\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" .
+ "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n" .
+ "\t" . "%.6f,%.6f,%.6f," . "%.6f,%.6f,%.6f,\n",
+ $nax, $nay, $naz, $ax, $ay, $az,
+ $nbx, $nby, $nbz, $bx, $by, $bz,
+ $ncx, $ncy, $ncz, $cx, $cy, $cz);
+ $lines =~ s/([.\d])0+,/$1,/g; # lose trailing insignificant zeroes
+ $lines =~ s/\.,/,/g;
+ $lines =~ s/-0,/0,/g;
+
+ $code .= $lines;
+ }
+ }
+
+ my $format = ($wireframe_p ? 'GL_V3F' : 'GL_N3F_V3F');
+ my $primitive = ($wireframe_p ? 'GL_LINES' : 'GL_TRIANGLES');
+
+ $code =~ s/,\n$//s;
+ $code .= "\n};\n";
+ $code .= "static const struct gllist ${name}_frame = {\n";
+ $code .= " $format, $primitive, $npoints, ${name}_data, 0\n};\n";
+ $code .= "const struct gllist *$name = &${name}_frame;\n";
+
+ print STDERR "$progname: $outfile: $name: $npoints points, $nfaces faces.\n"
+ if ($verbose);
+
+ return ($code, $npoints, $nfaces);
+}
+
+
+sub generate_c($$$$$$) {
+ my ($infile, $outfile, $smooth_p, $wireframe_p, $normalize_p, $layers) = @_;
+
+ my $code = '';
+
+ my $token = $outfile; # guess at a C token from the filename
+ $token =~ s/\<[^<>]*\>//;
+ $token =~ s@^.*/@@;
+ $token =~ s/\.[^.]*$//;
+ $token =~ s/[^a-z\d]/_/gi;
+ $token =~ s/__+/_/g;
+ $token =~ s/^_//g;
+ $token =~ s/_$//g;
+ $token =~ tr [A-Z] [a-z];
+ $token = 'foo' if ($token eq '');
+
+ my @layers = sort (keys %$layers);
+
+ $infile =~ s@^.*/@@s;
+ $code .= ("/* Generated from \"$infile\" on " .
+ strftime ("%d-%b-%Y", localtime ()) . ".\n" .
+ " " . ($wireframe_p
+ ? "Wireframe."
+ : ($smooth_p ?
+ "Smoothed vertex normals." :
+ "Faceted face normals.")) .
+ ($normalize_p ? " Normalized to unit bounding box." : "") .
+ "\n" .
+ (@layers > 1
+ ? wrap (" ", " ", "Components: " . join (", ", @layers)) . ".\n"
+ : "") .
+ " */\n\n");
+
+ $code .= "#include \"gllist.h\"\n";
+
+ my $npoints = 0;
+ my $nfaces = 0;
+
+ foreach my $layer (@layers) {
+ my $name = $layer ? "${token}_${layer}" : $token;
+ my ($c, $np, $nf) =
+ generate_c_1 ($name, $outfile,
+ $smooth_p, $wireframe_p, $normalize_p,
+ @{$layers->{$layer}});
+ $code .= $c;
+ $npoints += $np;
+ $nfaces += $nf;
+ }
+
+ print STDERR "$progname: $outfile: total: $npoints points, $nfaces faces.\n"
+ if ($verbose && @layers > 1);
+
+ return $code;
+}
+
+
+# Returns true if the two files differ (by running "cmp")
+#
+sub cmp_files($$) {
+ my ($file1, $file2) = @_;
+
+ my @cmd = ("cmp", "-s", "$file1", "$file2");
+ print STDERR "$progname: executing \"" . join(" ", @cmd) . "\"\n"
+ if ($verbose > 3);
+
+ system (@cmd);
+ my $exit_value = $? >> 8;
+ my $signal_num = $? & 127;
+ my $dumped_core = $? & 128;
+
+ error ("$cmd[0]: core dumped!") if ($dumped_core);
+ error ("$cmd[0]: signal $signal_num!") if ($signal_num);
+ return $exit_value;
+}
+
+
+sub dxf_to_gl($$$$$$) {
+ my ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p) = @_;
+
+ open (my $in, "<$infile") || error ("$infile: $!");
+ my $filename = ($infile eq '-' ? "" : $infile);
+ print STDERR "$progname: reading $filename...\n"
+ if ($verbose);
+
+ local $/ = undef; # read entire file
+ my $dxf = <$in>;
+ close $in;
+
+ my $data = parse_dxf ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p);
+
+ $filename = ($outfile eq '-' ? "" : $outfile);
+ my $code = generate_c ($infile, $filename, $smooth_p, $wireframe_p,
+ $normalize_p, $data);
+
+ if ($outfile eq '-') {
+ print STDOUT $code;
+ } else {
+ my $tmp = "$outfile.tmp";
+ open (my $out, '>', $tmp) || error ("$tmp: $!");
+ print $out $code || error ("$filename: $!");
+ close $out || error ("$filename: $!");
+ if (cmp_files ($filename, $tmp)) {
+ if (!rename ($tmp, $filename)) {
+ unlink $tmp;
+ error ("mv $tmp $filename: $!");
+ }
+ print STDERR "$progname: wrote $filename\n";
+ } else {
+ unlink "$tmp" || error ("rm $tmp: $!\n");
+ print STDERR "$progname: $filename unchanged\n" if ($verbose);
+ }
+ }
+}
+
+
+sub error() {
+ ($_) = @_;
+ print STDERR "$progname: $_\n";
+ exit 1;
+}
+
+sub usage() {
+ print STDERR "usage: $progname " .
+ "[--verbose] [--normalize] [--smooth] [--wireframe] [--layers]\n" .
+ "[infile [outfile]]\n";
+ exit 1;
+}
+
+sub main() {
+ my ($infile, $outfile);
+ my $normalize_p = 0;
+ my $smooth_p = 0;
+ my $wireframe_p = 0;
+ my $layers_p = 0;
+ while ($_ = $ARGV[0]) {
+ shift @ARGV;
+ if ($_ eq "--verbose") { $verbose++; }
+ elsif (m/^-v+$/) { $verbose += length($_)-1; }
+ elsif ($_ eq "--normalize") { $normalize_p = 1; }
+ elsif ($_ eq "--smooth") { $smooth_p = 1; }
+ elsif ($_ eq "--wireframe") { $wireframe_p = 1; }
+ elsif ($_ eq "--layers") { $layers_p = 1; }
+ elsif (m/^-./) { usage; }
+ elsif (!defined($infile)) { $infile = $_; }
+ elsif (!defined($outfile)) { $outfile = $_; }
+ else { usage; }
+ }
+
+ $infile = "-" unless defined ($infile);
+ $outfile = "-" unless defined ($outfile);
+
+ dxf_to_gl ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p);
+}
+
+main;
+exit 0;
diff --git a/hacks/glx/dymaxionmap-coords.c b/hacks/glx/dymaxionmap-coords.c
new file mode 100644
index 0000000..1eb064d
--- /dev/null
+++ b/hacks/glx/dymaxionmap-coords.c
@@ -0,0 +1,685 @@
+/* http://www.rwgrayprojects.com/rbfnotes/maps/graymap6.html
+ Slightly modified by jwz for xscreensaver
+ */
+
+
+/**************************************************************/
+/* */
+/* This C program is copyrighted by Robert W. Gray and may */
+/* not be used in ANY for-profit project without written */
+/* permission. */
+/* */
+/**************************************************************/
+
+/* (Note: Robert Gray has kindly given me his permission to include
+ this code in xscreensaver. -- Jamie Zawinski, Apr 2018.)
+ */
+
+
+/**************************************************************/
+/* */
+/* This C program contains the Dymaxion map coordinate */
+/* transformation routines for converting longitude/latitude */
+/* points to (X, Y) points on the Dymaxion map. */
+/* */
+/* This version uses the exact transformation equations. */
+/**************************************************************/
+
+#include
+#include
+#include
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "dymaxionmap-coords.h"
+
+/************************************************************************/
+/* NOTE: in C, array indexing starts with element zero (0). I choose */
+/* to start my array indexing with elemennt one (1) so all arrays */
+/* are defined one element longer than they need to be. */
+/************************************************************************/
+
+/************************************************************************/
+/* global variables accessable to all procedures */
+/************************************************************************/
+
+static double v_x[13], v_y[13], v_z[13];
+static double center_x[21], center_y[21], center_z[21];
+static double garc, gt, gdve, gel;
+
+/********************************************/
+/* function pre-definitions */
+/********************************************/
+
+static double radians(double degrees);
+static void rotate(double angle, double *x, double *y);
+static void r2(int axis, double alpha, double *x, double *y, double *z);
+static void init_stuff(void);
+/*static void convert_s_t_p(double lng, double lat, double *x, double *y);*/
+static void s_to_c(double theta, double phi, double *x, double *y, double *z);
+static void c_to_s(double *theta, double *phi, double x, double y, double z);
+static void s_tri_info(double x, double y, double z,
+ int *tri, int *lcd);
+static void dymax_point(int tri, int lcd,
+ double x, double y, double z,
+ double *dx, double *dy);
+static void conv_ll_t_sc(double lng, double lat, double *theta, double *phi);
+
+
+/****************************************/
+/* function definitions */
+/****************************************/
+
+
+void
+/* convert_s_t_p */
+dymaxion_convert
+(double lng, double lat, double *x, double *y)
+{
+ /***********************************************************/
+ /* This is the main control procedure. */
+ /***********************************************************/
+
+ double theta, phi;
+ double hx, hy, hz;
+ double px = 0, py = 0;
+ int tri, hlcd;
+
+ static int initted = 0;
+ if (! initted) {
+ init_stuff();
+ initted = 1;
+ }
+
+ /* Convert the given (long.,lat.) coordinate into spherical */
+ /* polar coordinates (r, theta, phi) with radius=1. */
+ /* Angles are given in radians, NOT degrees. */
+
+ conv_ll_t_sc(lng, lat, &theta, &phi);
+
+ /* convert the spherical polar coordinates into cartesian */
+ /* (x, y, z) coordinates. */
+
+ s_to_c(theta, phi, &hx, &hy, &hz);
+
+ /* determine which of the 20 spherical icosahedron triangles */
+ /* the given point is in and the LCD triangle. */
+
+ s_tri_info(hx, hy, hz, &tri, &hlcd);
+
+ /* Determine the corresponding Fuller map plane (x, y) point */
+
+ dymax_point(tri, hlcd, hx, hy, hz, &px, &py);
+ *x = px;
+ *y = py;
+
+} /* end convert_s_t_p */
+
+
+static void conv_ll_t_sc(double lng, double lat, double *theta, double *phi)
+{
+ /* convert (long., lat.) point into spherical polar coordinates */
+ /* with r=radius=1. Angles are given in radians. */
+
+ double h_theta, h_phi;
+
+ h_theta = 90.0 - lat ;
+ h_phi = lng;
+ if (lng < 0.0) {h_phi = lng + 360.0;}
+ *theta = radians(h_theta);
+ *phi = radians(h_phi);
+
+} /* end conv_ll_t_sc */
+
+
+static double radians(double degrees)
+{
+ /* convert angles in degrees into angles in radians */
+
+ double pi2, c1;
+
+ pi2 = 2 * 3.14159265358979323846;
+ c1 = pi2 / 360;
+ return(c1 * degrees);
+
+} /* end of radians function */
+
+
+static void init_stuff()
+{
+ /* initializes the global variables which includes the */
+ /* vertix coordinates and mid-face coordinates. */
+
+ double /* i, */ hold_x, hold_y, hold_z, magn;
+ /* double theta, phi; */
+
+ /* Cartesian coordinates for the 12 vertices of icosahedron */
+
+ v_x[1] = 0.420152426708710003;
+ v_y[1] = 0.078145249402782959;
+ v_z[1] = 0.904082550615019298;
+ v_x[2] = 0.995009439436241649 ;
+ v_y[2] = -0.091347795276427931 ;
+ v_z[2] = 0.040147175877166645 ;
+ v_x[3] = 0.518836730327364437 ;
+ v_y[3] = 0.835420380378235850 ;
+ v_z[3] = 0.181331837557262454 ;
+ v_x[4] = -0.414682225320335218 ;
+ v_y[4] = 0.655962405434800777 ;
+ v_z[4] = 0.630675807891475371 ;
+ v_x[5] = -0.515455959944041808 ;
+ v_y[5] = -0.381716898287133011 ;
+ v_z[5] = 0.767200992517747538 ;
+ v_x[6] = 0.355781402532944713 ;
+ v_y[6] = -0.843580002466178147 ;
+ v_z[6] = 0.402234226602925571 ;
+ v_x[7] = 0.414682225320335218 ;
+ v_y[7] = -0.655962405434800777 ;
+ v_z[7] = -0.630675807891475371 ;
+ v_x[8] = 0.515455959944041808 ;
+ v_y[8] = 0.381716898287133011 ;
+ v_z[8] = -0.767200992517747538 ;
+ v_x[9] = -0.355781402532944713 ;
+ v_y[9] = 0.843580002466178147 ;
+ v_z[9] = -0.402234226602925571 ;
+ v_x[10] = -0.995009439436241649 ;
+ v_y[10] = 0.091347795276427931 ;
+ v_z[10] = -0.040147175877166645 ;
+ v_x[11] = -0.518836730327364437 ;
+ v_y[11] = -0.835420380378235850 ;
+ v_z[11] = -0.181331837557262454 ;
+ v_x[12] = -0.420152426708710003 ;
+ v_y[12] = -0.078145249402782959 ;
+ v_z[12] = -0.904082550615019298 ;
+
+ /* now calculate mid face coordinates */
+
+ hold_x = (v_x[1] + v_x[2] + v_x[3]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[2] + v_y[3]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[2] + v_z[3]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[1] = hold_x / magn;
+ center_y[1] = hold_y / magn;
+ center_z[1] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[3] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[3] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[3] + v_z[4]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[2] = hold_x / magn;
+ center_y[2] = hold_y / magn;
+ center_z[2] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[4] + v_x[5]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[4] + v_y[5]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[4] + v_z[5]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[3] = hold_x / magn;
+ center_y[3] = hold_y / magn;
+ center_z[3] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[5] + v_x[6]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[5] + v_y[6]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[5] + v_z[6]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[4] = hold_x / magn;
+ center_y[4] = hold_y / magn;
+ center_z[4] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[2] + v_x[6]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[2] + v_y[6]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[2] + v_z[6]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[5] = hold_x / magn;
+ center_y[5] = hold_y / magn;
+ center_z[5] = hold_z / magn;
+
+ hold_x = (v_x[2] + v_x[3] + v_x[8]) / 3.0 ;
+ hold_y = (v_y[2] + v_y[3] + v_y[8]) / 3.0 ;
+ hold_z = (v_z[2] + v_z[3] + v_z[8]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[6] = hold_x / magn;
+ center_y[6] = hold_y / magn;
+ center_z[6] = hold_z / magn;
+
+ hold_x = (v_x[8] + v_x[3] + v_x[9]) / 3.0 ;
+ hold_y = (v_y[8] + v_y[3] + v_y[9]) / 3.0 ;
+ hold_z = (v_z[8] + v_z[3] + v_z[9]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[7] = hold_x / magn;
+ center_y[7] = hold_y / magn;
+ center_z[7] = hold_z / magn;
+
+ hold_x = (v_x[9] + v_x[3] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[9] + v_y[3] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[9] + v_z[3] + v_z[4]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[8] = hold_x / magn;
+ center_y[8] = hold_y / magn;
+ center_z[8] = hold_z / magn;
+
+ hold_x = (v_x[10] + v_x[9] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[10] + v_y[9] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[10] + v_z[9] + v_z[4]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[9] = hold_x / magn;
+ center_y[9] = hold_y / magn;
+ center_z[9] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[10] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[10] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[10] + v_z[4]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[10] = hold_x / magn;
+ center_y[10] = hold_y / magn;
+ center_z[10] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[11] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[11] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[11] + v_z[10]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[11] = hold_x / magn;
+ center_y[11] = hold_y / magn;
+ center_z[11] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[6] + v_x[11]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[6] + v_y[11]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[6] + v_z[11]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[12] = hold_x / magn;
+ center_y[12] = hold_y / magn;
+ center_z[12] = hold_z / magn;
+
+ hold_x = (v_x[11] + v_x[6] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[11] + v_y[6] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[11] + v_z[6] + v_z[7]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[13] = hold_x / magn;
+ center_y[13] = hold_y / magn;
+ center_z[13] = hold_z / magn;
+
+ hold_x = (v_x[7] + v_x[6] + v_x[2]) / 3.0 ;
+ hold_y = (v_y[7] + v_y[6] + v_y[2]) / 3.0 ;
+ hold_z = (v_z[7] + v_z[6] + v_z[2]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[14] = hold_x / magn;
+ center_y[14] = hold_y / magn;
+ center_z[14] = hold_z / magn;
+
+ hold_x = (v_x[8] + v_x[7] + v_x[2]) / 3.0 ;
+ hold_y = (v_y[8] + v_y[7] + v_y[2]) / 3.0 ;
+ hold_z = (v_z[8] + v_z[7] + v_z[2]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[15] = hold_x / magn;
+ center_y[15] = hold_y / magn;
+ center_z[15] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[9] + v_x[8]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[9] + v_y[8]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[9] + v_z[8]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[16] = hold_x / magn;
+ center_y[16] = hold_y / magn;
+ center_z[16] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[9] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[9] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[9] + v_z[10]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[17] = hold_x / magn;
+ center_y[17] = hold_y / magn;
+ center_z[17] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[11] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[11] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[11] + v_z[10]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[18] = hold_x / magn;
+ center_y[18] = hold_y / magn;
+ center_z[18] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[11] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[11] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[11] + v_z[7]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[19] = hold_x / magn;
+ center_y[19] = hold_y / magn;
+ center_z[19] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[8] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[8] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[8] + v_z[7]) / 3.0 ;
+ magn = sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[20] = hold_x / magn;
+ center_y[20] = hold_y / magn;
+ center_z[20] = hold_z / magn;
+
+ garc = 2.0 * asin( sqrt( 5 - sqrt(5)) / sqrt(10) );
+ gt = garc / 2.0;
+
+ gdve = sqrt( 3 + sqrt(5) ) / sqrt( 5 + sqrt(5) );
+ gel = sqrt(8) / sqrt(5 + sqrt(5));
+
+} /* end of int_stuff procedure */
+
+
+static void s_to_c(double theta, double phi, double *x, double *y, double *z)
+{
+ /* Covert spherical polar coordinates to cartesian coordinates. */
+ /* The angles are given in radians. */
+
+ *x = sin(theta) * cos(phi);
+ *y = sin(theta) * sin(phi);
+ *z = cos(theta);
+
+ } /* end s_to_c */
+
+
+static void c_to_s(double *lng, double *lat, double x, double y, double z)
+ {
+ /* convert cartesian coordinates into spherical polar coordinates. */
+ /* The angles are given in radians. */
+
+ double a;
+
+ if (x>0.0 && y>0.0){a = radians(0.0);}
+ if (x<0.0 && y>0.0){a = radians(180.0);}
+ if (x<0.0 && y<0.0){a = radians(180.0);}
+ if (x>0.0 && y<0.0){a = radians(360.0);}
+ *lat = acos(z);
+ if (x==0.0 && y>0.0){*lng = radians(90.0);}
+ if (x==0.0 && y<0.0){*lng = radians(270.0);}
+ if (x>0.0 && y==0.0){*lng = radians(0.0);}
+ if (x<0.0 && y==0.0){*lng = radians(180.0);}
+ if (x!=0.0 && y!=0.0){*lng = atan(y/x) + a;}
+
+} /* end c_to_s */
+
+
+void s_tri_info(double x, double y, double z,
+ int *tri, int *lcd)
+{
+ /* Determine which triangle and LCD triangle the point is in. */
+
+ double h_dist1, h_dist2, h_dist3, h1, h2, h3;
+ int i, h_tri, h_lcd ;
+ int v1 = 0, v2 = 0, v3 = 0;
+
+ h_tri = 0;
+ h_dist1 = 9999.0;
+
+ /* Which triangle face center is the closest to the given point */
+ /* is the triangle in which the given point is in. */
+
+ for (i = 1; i <=20; i = i + 1)
+ {
+ h1 = center_x[i] - x;
+ h2 = center_y[i] - y;
+ h3 = center_z[i] - z;
+ h_dist2 = sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+ if (h_dist2 < h_dist1)
+ {
+ h_tri = i;
+ h_dist1 = h_dist2;
+ } /* end the if statement */
+ } /* end the for statement */
+
+ *tri = h_tri;
+
+ /* Now the LCD triangle is determined. */
+
+ switch (h_tri)
+ {
+ case 1: v1 = 1; v2 = 3; v3 = 2; break;
+ case 2: v1 = 1; v2 = 4; v3 = 3; break;
+ case 3: v1 = 1; v2 = 5; v3 = 4; break;
+ case 4: v1 = 1; v2 = 6; v3 = 5; break;
+ case 5: v1 = 1; v2 = 2; v3 = 6; break;
+ case 6: v1 = 2; v2 = 3; v3 = 8; break;
+ case 7: v1 = 3; v2 = 9; v3 = 8; break;
+ case 8: v1 = 3; v2 = 4; v3 = 9; break;
+ case 9: v1 = 4; v2 = 10; v3 = 9; break;
+ case 10: v1 = 4; v2 = 5; v3 = 10; break;
+ case 11: v1 = 5; v2 = 11; v3 = 10; break;
+ case 12: v1 = 5; v2 = 6; v3 = 11; break;
+ case 13: v1 = 6; v2 = 7; v3 = 11; break;
+ case 14: v1 = 2; v2 = 7; v3 = 6; break;
+ case 15: v1 = 2; v2 = 8; v3 = 7; break;
+ case 16: v1 = 8; v2 = 9; v3 = 12; break;
+ case 17: v1 = 9; v2 = 10; v3 = 12; break;
+ case 18: v1 = 10; v2 = 11; v3 = 12; break;
+ case 19: v1 = 11; v2 = 7; v3 = 12; break;
+ case 20: v1 = 8; v2 = 12; v3 = 7; break;
+ } /* end of switch statement */
+
+ h1 = x - v_x[v1];
+ h2 = y - v_y[v1];
+ h3 = z - v_z[v1];
+ h_dist1 = sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ h1 = x - v_x[v2];
+ h2 = y - v_y[v2];
+ h3 = z - v_z[v2];
+ h_dist2 = sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ h1 = x - v_x[v3];
+ h2 = y - v_y[v3];
+ h3 = z - v_z[v3];
+ h_dist3 = sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ if ( (h_dist1 <= h_dist2) && (h_dist2 <= h_dist3) ) {h_lcd = 1; }
+ if ( (h_dist1 <= h_dist3) && (h_dist3 <= h_dist2) ) {h_lcd = 6; }
+ if ( (h_dist2 <= h_dist1) && (h_dist1 <= h_dist3) ) {h_lcd = 2; }
+ if ( (h_dist2 <= h_dist3) && (h_dist3 <= h_dist1) ) {h_lcd = 3; }
+ if ( (h_dist3 <= h_dist1) && (h_dist1 <= h_dist2) ) {h_lcd = 5; }
+ if ( (h_dist3 <= h_dist2) && (h_dist2 <= h_dist1) ) {h_lcd = 4; }
+
+ *lcd = h_lcd;
+
+} /* end s_tri_info */
+
+
+static void dymax_point(int tri, int lcd,
+ double x, double y, double z,
+ double *px, double *py)
+{
+ int axis, v1 = 0;
+ double hlng, hlat, h0x, h0y, h0z, h1x, h1y, h1z;
+
+ double gs;
+ double gx, gy, gz, ga1,ga2,ga3,ga1p,ga2p,ga3p,gxp,gyp/*,gzp*/;
+
+
+ /* In order to rotate the given point into the template spherical */
+ /* triangle, we need the spherical polar coordinates of the center */
+ /* of the face and one of the face vertices. So set up which vertex */
+ /* to use. */
+
+ switch (tri)
+ {
+ case 1: v1 = 1; break;
+ case 2: v1 = 1; break;
+ case 3: v1 = 1; break;
+ case 4: v1 = 1; break;
+ case 5: v1 = 1; break;
+ case 6: v1 = 2; break;
+ case 7: v1 = 3; break;
+ case 8: v1 = 3; break;
+ case 9: v1 = 4; break;
+ case 10: v1 = 4; break;
+ case 11: v1 = 5; break;
+ case 12: v1 = 5; break;
+ case 13: v1 = 6; break;
+ case 14: v1 = 2; break;
+ case 15: v1 = 2; break;
+ case 16: v1 = 8; break;
+ case 17: v1 = 9; break;
+ case 18: v1 = 10; break;
+ case 19: v1 = 11; break;
+ case 20: v1 = 8; break;
+ } /* end of switch statement */
+
+ h0x = x;
+ h0y = y;
+ h0z = z;
+
+ h1x = v_x[v1];
+ h1y = v_y[v1];
+ h1z = v_z[v1];
+
+ c_to_s(&hlng, &hlat, center_x[tri], center_y[tri], center_z[tri]);
+
+ axis = 3;
+ r2(axis,hlng,&h0x,&h0y,&h0z);
+ r2(axis,hlng,&h1x,&h1y,&h1z);
+
+ axis = 2;
+ r2(axis,hlat,&h0x,&h0y,&h0z);
+ r2(axis,hlat,&h1x,&h1y,&h1z);
+
+ c_to_s(&hlng,&hlat,h1x,h1y,h1z);
+ hlng = hlng - radians(90.0);
+
+ axis = 3;
+ r2(axis,hlng,&h0x,&h0y,&h0z);
+
+ /* exact transformation equations */
+
+ gz = sqrt(1 - h0x * h0x - h0y * h0y);
+ gs = sqrt( 5 + 2 * sqrt(5) ) / ( gz * sqrt(15) );
+
+ gxp = h0x * gs ;
+ gyp = h0y * gs ;
+
+ ga1p = 2.0 * gyp / sqrt(3.0) + (gel / 3.0) ;
+ ga2p = gxp - (gyp / sqrt(3)) + (gel / 3.0) ;
+ ga3p = (gel / 3.0) - gxp - (gyp / sqrt(3));
+
+ ga1 = gt + atan( (ga1p - 0.5 * gel) / gdve);
+ ga2 = gt + atan( (ga2p - 0.5 * gel) / gdve);
+ ga3 = gt + atan( (ga3p - 0.5 * gel) / gdve);
+
+ gx = 0.5 * (ga2 - ga3) ;
+
+ gy = (1.0 / (2.0 * sqrt(3)) ) * (2 * ga1 - ga2 - ga3);
+
+ /* Re-scale so plane triangle edge length is 1. */
+
+ x = gx / garc;
+ y = gy / garc;
+
+ /* rotate and translate to correct position */
+
+ switch (tri)
+ {
+ case 1: rotate(240.0,&x, &y);
+ *px = x + 2.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break;
+ case 2: rotate(300.0, &x, &y); *px = x + 2.0;
+ *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break;
+ case 3: rotate(0.0, &x, &y);
+ *px = x + 2.5; *py = y + 2.0 / sqrt(3.0); break;
+ case 4: rotate(60.0, &x, &y);
+ *px = x + 3.0; *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break;
+ case 5: rotate(180.0, &x, &y);
+ *px = x + 2.5; *py = y + 4.0 * sqrt(3.0) / 3.0; break;
+ case 6: rotate(300.0, &x, &y);
+ *px = x + 1.5; *py = y + 4.0 * sqrt(3.0) / 3.0; break;
+ case 7: rotate(300.0, &x, &y);
+ *px = x + 1.0; *py = y + 5.0 / (2.0 * sqrt(3.0)) ; break;
+ case 8: rotate(0.0, &x, &y);
+ *px = x + 1.5; *py = y + 2.0 / sqrt(3.0); break;
+ case 9: if (lcd > 2)
+ {
+ rotate(300.0, &x, &y);
+ *px = x + 1.5; *py = y + 1.0 / sqrt(3.0);
+ }
+ else
+ {
+ rotate(0.0, &x, &y);
+ *px = x + 2.0; *py = y + 1.0 / (2.0 * sqrt(3.0));
+ }
+ break;
+
+ case 10: rotate(60.0, &x, &y);
+ *px = x + 2.5; *py = y + 1.0 / sqrt(3.0); break;
+ case 11: rotate(60.0, &x, &y);
+ *px = x + 3.5; *py = y + 1.0 / sqrt(3.0); break;
+ case 12: rotate(120.0, &x, &y);
+ *px = x + 3.5; *py = y + 2.0 / sqrt(3.0); break;
+ case 13: rotate(60.0, &x, &y);
+ *px = x + 4.0; *py = y + 5.0 / (2.0 * sqrt(3.0)); break;
+ case 14: rotate(0.0, &x, &y);
+ *px = x + 4.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break;
+ case 15: rotate(0.0, &x, &y);
+ *px = x + 5.0; *py = y + 7.0 / (2.0 * sqrt(3.0)) ; break;
+ case 16: if (lcd < 4)
+ {
+ rotate(60.0, &x, &y);
+ *px = x + 0.5; *py = y + 1.0 / sqrt(3.0);
+ }
+ else
+ {
+ rotate(0.0, &x, &y);
+ *px = x + 5.5; *py = y + 2.0 / sqrt(3.0);
+ }
+ break;
+ case 17: rotate(0.0, &x, &y);
+ *px = x + 1.0; *py = y + 1.0 / (2.0 * sqrt(3.0)); break;
+ case 18: rotate(120.0, &x, &y);
+ *px = x + 4.0; *py = y + 1.0 / (2.0 * sqrt(3.0)); break;
+ case 19: rotate(120.0, &x, &y);
+ *px = x + 4.5; *py = y + 2.0 / sqrt(3.0); break;
+ case 20: rotate(300.0, &x, &y);
+ *px = x + 5.0; *py = y + 5.0 / (2.0 * sqrt(3.0)); break;
+
+ } /* end switch statement */
+
+} /* end of dymax_point */
+
+
+static void rotate(double angle, double *x, double *y)
+{
+ /* Rotate the point to correct orientation in XY-plane. */
+
+ double ha, hx, hy ;
+
+ ha = radians(angle);
+ hx = *x;
+ hy = *y;
+ *x = hx * cos(ha) - hy * sin(ha);
+ *y = hx * sin(ha) + hy * cos(ha);
+
+} /* end rotate procedure */
+
+
+static void r2(int axis, double alpha, double *x, double *y, double *z)
+{
+ /* Rotate a 3-D point about the specified axis. */
+
+ double a, b, c;
+
+ a = *x;
+ b = *y;
+ c = *z;
+ if (axis == 1)
+ {
+ *y = b * cos(alpha) + c * sin(alpha);
+ *z = c * cos(alpha) - b * sin(alpha);
+ }
+
+ if (axis == 2)
+ {
+ *x = a * cos(alpha) - c * sin(alpha);
+ *z = a * sin(alpha) + c * cos(alpha);
+ }
+
+ if (axis == 3)
+ {
+ *x = a * cos(alpha) + b * sin(alpha);
+ *y = b * cos(alpha) - a * sin(alpha);
+ }
+
+} /* end of r2 */
+
diff --git a/hacks/glx/dymaxionmap-coords.h b/hacks/glx/dymaxionmap-coords.h
new file mode 100644
index 0000000..fad4a04
--- /dev/null
+++ b/hacks/glx/dymaxionmap-coords.h
@@ -0,0 +1,6 @@
+#ifndef __DYMAXIONMAP_COORDS_H__
+#define __DYMAXIONMAP_COORDS_H__
+
+void dymaxion_convert (double lng, double lat, double *x, double *y);
+
+#endif /* __DYMAXIONMAP_COORDS_H__ */
diff --git a/hacks/glx/dymaxionmap.c b/hacks/glx/dymaxionmap.c
new file mode 100644
index 0000000..711db2e
--- /dev/null
+++ b/hacks/glx/dymaxionmap.c
@@ -0,0 +1,1654 @@
+/* dymaxionmap --- Buckminster Fuller's unwrapped icosahedral globe.
+ * Copyright (c) 2016-2018 Jamie Zawinski.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ */
+
+#define LABEL_FONT "-*-helvetica-bold-r-normal-*-*-240-*-*-*-*-*-*"
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*labelFont: " LABEL_FONT "\n"
+# define release_planet 0
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef USE_GL /* whole file */
+
+#include "sphere.h"
+#include "normals.h"
+#include "texfont.h"
+#include "dymaxionmap-coords.h"
+
+#ifdef HAVE_XMU
+# ifndef VMS
+# include
+#else /* VMS */
+# include
+# endif /* VMS */
+#endif
+
+#define DEF_ROTATE "True"
+#define DEF_ROLL "True"
+#define DEF_WANDER "True"
+#define DEF_TEXTURE "True"
+#define DEF_STARS "True"
+#define DEF_GRID "True"
+#define DEF_SPEED "1.0"
+#define DEF_IMAGE "BUILTIN_FLAT"
+#define DEF_IMAGE2 "NONE"
+#define DEF_FRAMES "720"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+static int do_roll;
+static int do_wander;
+static int do_texture;
+static int do_stars;
+static int do_grid;
+static int frames;
+static GLfloat speed;
+static char *which_image;
+static char *which_image2;
+
+static XrmOptionDescRec opts[] = {
+ {"-speed", ".speed", XrmoptionSepArg, 0 },
+ {"-roll", ".roll", XrmoptionNoArg, "true" },
+ {"+roll", ".roll", XrmoptionNoArg, "false" },
+ {"-wander", ".wander", XrmoptionNoArg, "true" },
+ {"+wander", ".wander", XrmoptionNoArg, "false" },
+ {"-texture", ".texture", XrmoptionNoArg, "true" },
+ {"+texture", ".texture", XrmoptionNoArg, "false" },
+ {"-stars", ".stars", XrmoptionNoArg, "true" },
+ {"+stars", ".stars", XrmoptionNoArg, "false" },
+ {"-grid", ".grid", XrmoptionNoArg, "true" },
+ {"+grid", ".grid", XrmoptionNoArg, "false" },
+ {"-flat", ".image", XrmoptionNoArg, "BUILTIN_FLAT" },
+ {"-satellite",".image", XrmoptionNoArg, "BUILTIN_SAT" },
+ {"-image", ".image", XrmoptionSepArg, 0 },
+ {"-image2", ".image2", XrmoptionSepArg, 0 },
+ {"-frames", ".frames", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&do_roll, "roll", "Roll", DEF_ROLL, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ {&do_stars, "stars", "Stars", DEF_STARS, t_Bool},
+ {&do_grid, "grid", "Grid", DEF_GRID, t_Bool},
+ {&which_image, "image", "Image", DEF_IMAGE, t_String},
+ {&which_image2,"image2", "Image2", DEF_IMAGE2, t_String},
+ {&frames, "frames", "Frames", DEF_FRAMES, t_Int},
+};
+
+ENTRYPOINT ModeSpecOpt planet_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct planet_description =
+{"planet", "init_planet", "draw_planet", NULL,
+ "draw_planet", "init_planet", "free_planet", &planet_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Buckminster Fuller's unwrapped icosahedral globe", 0, NULL};
+#endif
+
+# ifdef __GNUC__
+ __extension__ /* don't warn about "string length is greater than the length
+ ISO C89 compilers are required to support" when including
+ the following XPM file... */
+# endif
+
+#include "images/gen/earth_flat_png.h"
+#include "images/gen/earth_png.h"
+#include "images/gen/earth_night_png.h"
+#include "images/gen/ground_png.h"
+
+#include "ximage-loader.h"
+#include "rotator.h"
+#include "gltrackball.h"
+
+
+typedef struct {
+ GLXContext *glx_context;
+ GLuint starlist;
+ int starcount;
+ rotator *rot, *rot2;
+ trackball_state *trackball;
+ Bool button_down_p;
+ enum { STARTUP, FLAT, FOLD,
+ ICO, STEL_IN, AXIS, SPIN, STEL, STEL_OUT,
+ ICO2, UNFOLD } state;
+ GLfloat ratio;
+ GLuint tex1, tex2;
+ texture_font_data *font_data;
+ int loading_sw, loading_sh;
+
+ XImage *day, *night, *dusk, *cvt;
+ XImage **images; /* One image for each frame of time-of-day. */
+ int nimages;
+
+ double current_frame;
+ Bool cache_p;
+ long delay;
+
+} planetstruct;
+
+
+static planetstruct *planets = NULL;
+
+
+static double
+double_time (void)
+{
+ struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday(&now, &tzp);
+# else
+ gettimeofday(&now);
+# endif
+
+ return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+/* Draw faint latitude and longitude lines into the RGBA XImage.
+ */
+static void
+add_grid_lines (XImage *image)
+{
+ int i;
+ int off = 24;
+ for (i = 0; i < 24; i++)
+ {
+ int x = (i + 0.5) * image->width / (double) 24;
+ int y;
+ for (y = 0; y < image->height; y++)
+ {
+ unsigned long rgba = XGetPixel (image, x, y);
+ int r = (rgba >> 24) & 0xFF;
+ int g = (rgba >> 16) & 0xFF;
+ int b = (rgba >> 8) & 0xFF;
+ int a = (rgba >> 0) & 0xFF;
+ int off2 = (((r + g + b) / 3) < 0x7F ? off : -off);
+ r = MAX (0, MIN (0xFF, r + off2));
+ g = MAX (0, MIN (0xFF, g + off2));
+ b = MAX (0, MIN (0xFF, b + off2));
+ XPutPixel (image, x, y, (r << 24) | (g << 16) | (b << 8) | a);
+ }
+ }
+
+ for (i = 1; i < 11; i++)
+ {
+ int y = i * image->height / (double) 12;
+ int x;
+ for (x = 0; x < image->width; x++)
+ {
+ unsigned long rgba = XGetPixel (image, x, y);
+ int r = (rgba >> 24) & 0xFF;
+ int g = (rgba >> 16) & 0xFF;
+ int b = (rgba >> 8) & 0xFF;
+ int a = (rgba >> 0) & 0xFF;
+ int off2 = (((r + g + b) / 3) < 0x7F ? off : -off);
+ r = MAX (0, MIN (0xFF, r + off2));
+ g = MAX (0, MIN (0xFF, g + off2));
+ b = MAX (0, MIN (0xFF, b + off2));
+ XPutPixel (image, x, y, (r << 24) | (g << 16) | (b << 8) | a);
+ }
+ }
+}
+
+
+static void
+adjust_brightness (XImage *image, double amount)
+{
+ uint32_t *in = (uint32_t *) image->data;
+ int i;
+ int end = image->height * image->bytes_per_line / 4;
+ for (i = 0; i < end; i++)
+ {
+ uint32_t p = *in;
+ /* #### Why is this ABGR instead of RGBA? */
+ uint32_t a = (p >> 24) & 0xFF;
+ uint32_t g = (p >> 16) & 0xFF;
+ uint32_t b = (p >> 8) & 0xFF;
+ uint32_t r = (p >> 0) & 0xFF;
+ r = MAX(0, MIN(0xFF, (long) (r * amount)));
+ g = MAX(0, MIN(0xFF, (long) (g * amount)));
+ b = MAX(0, MIN(0xFF, (long) (b * amount)));
+ p = (a << 24) | (g << 16) | (b << 8) | r;
+ *in++ = p;
+ }
+}
+
+
+static GLfloat
+vector_angle (XYZ a, XYZ b)
+{
+ double La = sqrt (a.x*a.x + a.y*a.y + a.z*a.z);
+ double Lb = sqrt (b.x*b.x + b.y*b.y + b.z*b.z);
+ double cc, angle;
+
+ if (La == 0 || Lb == 0) return 0;
+ if (a.x == b.x && a.y == b.y && a.z == b.z) return 0;
+
+ /* dot product of two vectors is defined as:
+ La * Lb * cos(angle between vectors)
+ and is also defined as:
+ ax*bx + ay*by + az*bz
+ so:
+ La * Lb * cos(angle) = ax*bx + ay*by + az*bz
+ cos(angle) = (ax*bx + ay*by + az*bz) / (La * Lb)
+ angle = acos ((ax*bx + ay*by + az*bz) / (La * Lb));
+ */
+ cc = (a.x*b.x + a.y*b.y + a.z*b.z) / (La * Lb);
+ if (cc > 1) cc = 1; /* avoid fp rounding error (1.000001 => sqrt error) */
+ angle = acos (cc);
+
+ return (angle);
+}
+
+
+/* Creates a grayscale image encoding the day/night terminator for a random
+ axial tilt.
+ */
+static XImage *
+create_daylight_mask (Display *dpy, Visual *v, int w, int h)
+{
+ XImage *image = XCreateImage (dpy, v, 8, ZPixmap, 0, 0, w, h, 8, 0);
+ int x, y;
+ XYZ sun;
+ double axial_tilt = frand(23.4) / (180/M_PI) * RANDSIGN();
+ double dusk = M_PI * 0.035;
+ sun.x = 0;
+ sun.y = cos (axial_tilt);
+ sun.z = sin (axial_tilt);
+
+ image->data = (char *) malloc (image->height * image->bytes_per_line);
+
+ for (y = 0; y < image->height; y++)
+ {
+ double lat = -M_PI_2 + (M_PI * (y / (double) image->height));
+ double cosL = cos(lat);
+ double sinL = sin(lat);
+ for (x = 0; x < image->width; x++)
+ {
+ double lon = -M_PI_2 + (M_PI * 2 * (x / (double) image->width));
+ XYZ v;
+ double a;
+ unsigned long p;
+ v.x = cos(lon) * cosL;
+ v.y = sin(lon) * cosL;
+ v.z = sinL;
+ a = vector_angle (sun, v);
+ a -= M_PI_2;
+ a = (a < -dusk ? 1 : a >= dusk ? 0 : (dusk - a) / (dusk * 2));
+ p = 0xFF & (unsigned long) (a * 0xFF);
+ XPutPixel (image, x, y, p);
+ }
+ }
+ return image;
+}
+
+
+static void
+load_images (ModeInfo *mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ int i;
+
+ if (which_image && !strcmp (which_image, "BUILTIN_FLAT"))
+ {
+ which_image = strdup("BUILTIN_FLAT");
+ which_image2 = strdup("BUILTIN_FLAT");
+ }
+ else if (which_image && !strcmp (which_image, "BUILTIN_SAT"))
+ {
+ which_image = strdup("BUILTIN_DAY");
+ which_image2 = strdup("BUILTIN_NIGHT");
+ }
+
+ if (!which_image) which_image = strdup("");
+ if (!which_image2) which_image2 = strdup("");
+
+ for (i = 0; i < 2; i++)
+ {
+ char *s = (i == 0 ? which_image : which_image2);
+ XImage *image;
+ if (!strcmp (s, "BUILTIN_DAY"))
+ image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi),
+ earth_png, sizeof(earth_png));
+ else if (!strcmp (s, "BUILTIN_NIGHT"))
+ image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi),
+ earth_night_png,sizeof(earth_night_png));
+ else if (!strcmp (s, "BUILTIN") ||
+ !strcmp (s, "BUILTIN_FLAT") ||
+ (i == 0 && !strcmp (s, "")))
+ image = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi),
+ earth_flat_png, sizeof(earth_flat_png));
+ else if (!strcmp (s, "NONE"))
+ image = 0;
+ else if (*s)
+ image = file_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), s);
+ else
+ image = 0;
+
+ /* if (image) fprintf (stderr, "%s: %d: loaded %s\n", progname, i, s); */
+
+ if (i == 0)
+ gp->day = image;
+ else
+ gp->night = image;
+ }
+
+ if (gp->night && !gp->day)
+ gp->day = gp->night, gp->night = 0;
+
+ gp->nimages = frames;
+ gp->current_frame = random() % gp->nimages;
+
+ if (gp->nimages < 1)
+ gp->nimages = 1;
+
+ if (gp->nimages < 2 && gp->night)
+ {
+ XDestroyImage (gp->night);
+ gp->night = 0;
+ gp->nimages = 1;
+ }
+
+ if (! gp->night)
+ gp->nimages = 1;
+
+ if (do_grid)
+ {
+ if (gp->day) add_grid_lines (gp->day);
+ if (gp->night) add_grid_lines (gp->night);
+ }
+
+ if (gp->day && gp->night && !gp->dusk)
+ {
+ if (gp->day->width != gp->night->width ||
+ gp->day->height != gp->night->height)
+ {
+ fprintf (stderr, "%s: day and night images must be the same size"
+ " (%dx%d vs %dx%d)\n", progname,
+ gp->day->width, gp->day->height,
+ gp->night->width, gp->night->height);
+ exit (1);
+ }
+ gp->dusk = create_daylight_mask (MI_DISPLAY (mi), MI_VISUAL (mi),
+ gp->day->width, gp->day->height);
+ }
+
+ /* Make the day image brighter, because that's easier than doing it
+ with GL lights. */
+ adjust_brightness (gp->day, 1.4);
+
+ if (!strcmp (which_image, which_image2))
+ /* If day and night are the same image, make night way darker. */
+ adjust_brightness (gp->night, 0.2);
+ else if (gp->night)
+ /* Otherwise make it just a little darker. */
+ adjust_brightness (gp->night, 0.7);
+
+
+ gp->images = (XImage **) calloc (gp->nimages, sizeof(*gp->images));
+
+ /* Create 'cvt', a map that projects each pixel from Equirectangular to
+ Dymaxion. It is 2x the width/height of the source images. We iterate
+ by half pixel to make sure we hit every pixel in 'out'. It would be
+ cleaner to iterate over 'out' instead of over 'in' but
+ dymaxionmap-coords.c only goes forward. This is... not super fast.
+ */
+ {
+ double W = 5.5;
+ double H = 3 * sqrt(3)/2;
+ int x2, y2;
+ int w = gp->day->width;
+ int h = gp->day->height;
+ uint32_t *out;
+
+ gp->cvt = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi), 32, ZPixmap, 0, 0,
+ gp->day->width*2, gp->day->height*2, 32, 0);
+ gp->cvt->data = (char *)
+ malloc (gp->cvt->height * gp->cvt->bytes_per_line);
+ out = (uint32_t *) gp->cvt->data;
+
+ for (y2 = 0; y2 < h*2; y2++)
+ {
+ double y = (double) y2/2;
+ double lat = -90 + (180 * (y / (double) h));
+ for (x2 = 0; x2 < w*2; x2++)
+ {
+ double x = (double) x2/2;
+ double lon = -180 + (360 * x / w);
+ double ox, oy;
+ dymaxion_convert (lon, lat, &ox, &oy);
+ ox = w - (w * ox / W);
+ oy = (h * oy / H);
+
+ *out++ = (((((uint32_t) ox) & 0xFFFF) << 16) |
+ ((((uint32_t) oy) & 0xFFFF)));
+ }
+ }
+ }
+
+ /* A 128 GB iPhone 6s dies at around 540 frames, ~1 GB of XImages.
+ A 16 GB iPad Air 2 dies at around 320 frames, ~640 MB.
+ Caching on mobile doesn't matter much: we can just run at 100% CPU.
+
+ On some systems it would be more efficient to cache the images inside
+ a texture on the GPU instead of moving it from RAM to GPU every few
+ frames; but on other systems, we'd just run out of GPU memory instead. */
+ {
+ unsigned long cache_size = (gp->day->width * gp->day->height * 4 *
+ gp->nimages);
+# ifdef HAVE_MOBILE
+ unsigned long max = 320 * 1024 * 1024L; /* 320 MB */
+# else
+ unsigned long max = 2 * 1024 * 1024 * 1024L; /* 2 GB */
+# endif
+ gp->cache_p = (cache_size < max);
+ }
+}
+
+
+static void
+cache_current_frame (ModeInfo *mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ XImage *blended, *dymaxion;
+ int i, x, y, w, h, end, xoff;
+ uint32_t *day, *night, *cvt, *out;
+ uint8_t *dusk;
+
+ if (gp->images[(int) gp->current_frame])
+ return;
+
+ xoff = (gp->dusk
+ ? gp->dusk->width * ((double) gp->current_frame / gp->nimages)
+ : 0);
+
+ w = gp->day->width;
+ h = gp->day->height;
+
+ if (!gp->night)
+ blended = gp->day;
+ else
+ {
+ /* Blend the foreground and background images through the dusk map.
+ */
+ blended = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi),
+ gp->day->depth, ZPixmap, 0, 0, w, h, 32, 0);
+ if (!blended) abort();
+ blended->data = (char *) malloc (h * blended->bytes_per_line);
+ if (!blended->data) abort();
+
+ end = blended->height * blended->bytes_per_line / 4;
+ day = (uint32_t *) gp->day->data;
+ night = (uint32_t *) gp->night->data;
+ dusk = (uint8_t *) gp->dusk->data;
+ out = (uint32_t *) blended->data;
+
+ for (i = 0; i < end; i++)
+ {
+ uint32_t d = *day++;
+ uint32_t n = *night++;
+ uint32_t x = i % w;
+ uint32_t y = i / w;
+ double r = dusk[y * w + ((x + xoff) % w)] / 256.0;
+ double r2 = 1-r;
+# define ADD(M) (((unsigned long) \
+ ((((d >> M) & 0xFF) * r) + \
+ (((n >> M) & 0xFF) * r2))) \
+ << M)
+ /* #### Why is this ABGR instead of RGBA? */
+ *out++ = (0xFF << 24) | ADD(16) | ADD(8) | ADD(0);
+# undef ADD
+ }
+ }
+
+ /* Convert blended Equirectangular to Dymaxion through the 'cvt' map.
+ */
+ dymaxion = XCreateImage (MI_DISPLAY(mi), MI_VISUAL(mi),
+ gp->day->depth, ZPixmap, 0, 0, w, h, 32, 0);
+ dymaxion->data = (char *) calloc (h, dymaxion->bytes_per_line);
+
+ day = (uint32_t *) blended->data;
+ out = (uint32_t *) dymaxion->data;
+ cvt = (uint32_t *) gp->cvt->data;
+
+ for (y = 0; y < h*2; y++)
+ for (x = 0; x < w*2; x++)
+ {
+ unsigned long m = *cvt++;
+ unsigned long dx = (m >> 16) & 0xFFFF;
+ unsigned long dy = m & 0xFFFF;
+ unsigned long p = day[(y>>1) * w + (x>>1)];
+ unsigned long p2 = out[dy * w + dx];
+ if (p2 & 0xFF000000)
+ /* RGBA nonzero alpha: initialized. Average with existing,
+ otherwise the grid lines look terrible. */
+ p = (((((p>>24) & 0xFF) + ((p2>>24) & 0xFF)) >> 1) << 24 |
+ ((((p>>16) & 0xFF) + ((p2>>16) & 0xFF)) >> 1) << 16 |
+ ((((p>> 8) & 0xFF) + ((p2>> 8) & 0xFF)) >> 1) << 8 |
+ ((((p>> 0) & 0xFF) + ((p2>> 0) & 0xFF)) >> 1) << 0);
+ out[dy * w + dx] = p;
+ }
+
+ /* Fill in the triangles that are not a part of The World with the
+ color of the ocean to avoid texture-tearing on the folded edges.
+ */
+ out = (uint32_t *) dymaxion->data;
+ end = dymaxion->height * dymaxion->bytes_per_line / 4;
+ {
+ double lat = -48.44, lon = -123.39; /* R'Lyeh */
+ int x = (lon + 180) * blended->width / 360.0;
+ int y = (lat + 90) * blended->height / 180.0;
+ unsigned long ocean = XGetPixel (gp->day, x, y);
+ for (i = 0; i < end; i++)
+ {
+ uint32_t p = *out;
+ if (! (p & 0xFF000000)) /* AGBR */
+ *out = ocean;
+ out++;
+ }
+ }
+
+ if (blended != gp->day)
+ XDestroyImage (blended);
+
+ gp->images[(int) gp->current_frame] = dymaxion;
+
+ if (!gp->cache_p) /* Keep only one image around; recompute every time. */
+ {
+ i = ((int) gp->current_frame) - 1;
+ if (i < 0) i = gp->nimages - 1;
+ if (gp->images[i])
+ {
+ XDestroyImage (gp->images[i]);
+ gp->images[i] = 0;
+ }
+ }
+}
+
+
+static void
+setup_texture (ModeInfo * mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ XImage *ground;
+
+ glGenTextures (1, &gp->tex1);
+ glBindTexture (GL_TEXTURE_2D, gp->tex1);
+
+ /* Must be after glBindTexture */
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ load_images (mi);
+
+ glGenTextures (1, &gp->tex2);
+ glBindTexture (GL_TEXTURE_2D, gp->tex2);
+
+ /* Must be after glBindTexture */
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ /* The underground image can go on flat, without the dymaxion transform. */
+ ground = image_data_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi),
+ ground_png, sizeof(ground_png));
+ clear_gl_error();
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ /* glPixelStorei(GL_UNPACK_ROW_LENGTH, ground->width); */
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ ground->width, ground->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, ground->data);
+ check_gl_error ("ground texture");
+ XDestroyImage (ground);
+}
+
+
+static void
+init_stars (ModeInfo *mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ int i, j;
+ int width = MI_WIDTH(mi);
+ int height = MI_HEIGHT(mi);
+ int size = (width > height ? width : height);
+ int nstars = size * size / 80;
+ int max_size = 3;
+ GLfloat inc = 0.5;
+ int steps = max_size / inc;
+ GLfloat scale = 1;
+
+ if (MI_WIDTH(mi) > 2560) { /* Retina displays */
+ scale *= 2;
+ nstars /= 2;
+ }
+
+ gp->starlist = glGenLists(1);
+ glNewList(gp->starlist, GL_COMPILE);
+ for (j = 1; j <= steps; j++)
+ {
+ glPointSize(inc * j * scale);
+ glBegin (GL_POINTS);
+ for (i = 0; i < nstars / steps; i++)
+ {
+ GLfloat d = 0.1;
+ GLfloat r = 0.15 + frand(0.3);
+ GLfloat g = r + frand(d) - d;
+ GLfloat b = r + frand(d) - d;
+
+ GLfloat x = frand(1)-0.5;
+ GLfloat y = frand(1)-0.5;
+ GLfloat z = ((random() & 1)
+ ? frand(1)-0.5
+ : (BELLRAND(1)-0.5)/12); /* milky way */
+ d = sqrt (x*x + y*y + z*z);
+ x /= d;
+ y /= d;
+ z /= d;
+ glColor3f (r, g, b);
+ glVertex3f (x, y, z);
+ gp->starcount++;
+ }
+ glEnd ();
+ }
+ glEndList ();
+
+ check_gl_error("stars initialization");
+}
+
+
+ENTRYPOINT void
+reshape_planet (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glViewport(0, 0, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-1.0, 1.0, -h, h, 5.0, 200.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0.0, 0.0, -40);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (h, h, h);
+ }
+# endif
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+static void
+do_normal2 (ModeInfo *mi, Bool frontp, XYZ a, XYZ b, XYZ c)
+{
+ XYZ n = (frontp
+ ? calc_normal (a, b, c)
+ : calc_normal (b, a, c));
+ glNormal3f (n.x, n.y, n.z);
+
+# if 0
+ if (frontp && MI_IS_WIREFRAME(mi))
+ {
+ glBegin (GL_LINES);
+ glVertex3f ((a.x + b.x + c.x) / 3,
+ (a.y + b.y + c.y) / 3,
+ (a.z + b.z + c.z) / 3);
+ glVertex3f ((a.x + b.x + c.x) / 3 + n.x,
+ (a.y + b.y + c.y) / 3 + n.y,
+ (a.z + b.z + c.z) / 3 + n.z);
+ glEnd();
+ }
+# endif
+}
+
+
+static void
+triangle0 (ModeInfo *mi, Bool frontp, GLfloat stel_ratio, int facemask,
+ XYZ *corners_ret)
+{
+ /* Render a triangle as six sub-triangles.
+ Facemask bits 0-5 indicate which sub-triangle to draw.
+
+ A
+ / \
+ / | \
+ / | \
+ / 0 | 1 \
+ E /_ | _\ F
+ / \_ | _/ \
+ / 5 \D/ 2 \
+ / / | \ \
+ / / 4 | 3 \ \
+ / / | \ \
+ B ----------------------- C
+ G
+ */
+
+ Bool wire = MI_IS_WIREFRAME(mi);
+ GLfloat h = sqrt(3) / 2;
+ GLfloat h2 = sqrt(h*h - (h/2)*(h/2)) - 0.5;
+ XYZ A, B, C, D, E, F, G;
+ XYZ tA, tB, tC, tD, tE, tF, tG;
+ XYZ a, b, c;
+ XYZ ta, tb, tc;
+ A.x = 0; A.y = h; A.z = 0;
+ B.x = -0.5, B.y = 0; B.z = 0;
+ C.x = 0.5, C.y = 0; C.z = 0;
+ D.x = 0; D.y = h/3; D.z = 0;
+ E.x = -h2; E.y = h/2; E.z = 0;
+ F.x = h2; F.y = h/2; F.z = 0;
+ G.x = 0; G.y = 0; G.z = 0;
+
+ /* When tweaking object XY to stellate, don't change texture coordinates. */
+ tA = A; tB = B; tC = C; tD = D; tE = E; tF = F; tG = G;
+
+ /* Eyeballed this to find the depth of stellation that seems to most
+ approximate a sphere.
+ */
+ D.z = 0.193 * stel_ratio;
+
+ /* We want to raise E, F and G as well but we can't just shift Z:
+ we need to keep them on the same vector from the center of the sphere,
+ which means also changing F and G's X and Y.
+ */
+ E.z = F.z = G.z = 0.132 * stel_ratio;
+ {
+ double magic_x = 0.044;
+ double magic_y = 0.028;
+ /* G.x stays 0 */
+ G.y -= sqrt (magic_x*magic_x + magic_y*magic_y) * stel_ratio;
+ E.x -= magic_x * stel_ratio;
+ E.y += magic_y * stel_ratio;
+ F.x += magic_x * stel_ratio;
+ F.y += magic_y * stel_ratio;
+ }
+
+
+ if (facemask & 1<<0)
+ {
+ a = E; b = D; c = A;
+ ta = tE; tb = tD; tc = tA;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<1)
+ {
+ a = D; b = F; c = A;
+ ta = tD; tb = tF; tc = tA;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<2)
+ {
+ a = D; b = C; c = F;
+ ta = tD; tb = tC; tc = tF;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<3)
+ {
+ a = G; b = C; c = D;
+ ta = tG; tb = tC; tc = tD;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<4)
+ {
+ a = B; b = G; c = D;
+ ta = tB; tb = tG; tc = tD;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<5)
+ {
+ a = B; b = D; c = E;
+ ta = tB; tb = tD; tc = tE;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+ if (facemask & 1<<6)
+ {
+ a = E; b = D; c = A;
+ ta = tE; tb = tD; tc = tA;
+ do_normal2 (mi, frontp, a, b, c);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glTexCoord2f (ta.x, ta.y); glVertex3f (a.x, a.y, a.z);
+ glTexCoord2f (tb.x, tb.y); glVertex3f (b.x, b.y, b.z);
+ glTexCoord2f (tc.x, tc.y); glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ mi->polygon_count++;
+ }
+
+ if (corners_ret)
+ {
+ corners_ret[0] = A;
+ corners_ret[1] = B;
+ corners_ret[2] = C;
+ corners_ret[3] = D;
+ corners_ret[4] = E;
+ corners_ret[5] = F;
+ corners_ret[6] = G;
+ }
+}
+
+
+/* The segments, numbered arbitrarily from the top left:
+ ________ _ ________
+ \ /\ /\ \ |\ /
+ \ 0 / \ / \3> | \ 5 /
+ \ / 1 \ / 2 \| ..|4 \ /-6-..
+ ___________\/______\/______\/______\/______\
+ | /\ /\ /\ /\ /\
+ |7 / \ 9 / \ 11 / \ 13 / \ 15 / \
+ | / 8 \ / 10 \ / 12 \ / 14 \ / 16 \
+ |/______\/______\/______\/______\/______\
+ \ /\ / /\ /\
+ \ 17 / \ 18 / / \ 20 / \
+ \ / \ / / 19 \ / 21 \
+ \/ \/ /______\/______\
+
+ Each triangle can be connected to at most two other triangles.
+ We start from the middle, #12, and work our way to the edges.
+ Its centroid is 0,0.
+
+ (Note that dymaxionmap-coords.c uses a different numbering system.)
+ */
+static void
+triangle (ModeInfo *mi, int which, Bool frontp,
+ GLfloat fold_ratio, GLfloat stel_ratio)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ const GLfloat fg[] = { 1, 1, 1, 1 };
+ const GLfloat bg[] = { 0.3, 0.3, 0.3, 1 };
+ int a = -1, b = -1;
+ GLfloat max = acos (sqrt(5)/3);
+ GLfloat rot = -max * fold_ratio / (M_PI/180);
+ Bool wire = MI_IS_WIREFRAME(mi);
+ XYZ corners[7];
+
+ glColor3fv (fg);
+ if (!wire)
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, fg);
+
+ switch (which) {
+ case 3: /* One third of the face. */
+ triangle0 (mi, frontp, stel_ratio, 1<<3 | 1<<4, corners);
+ break;
+ case 4: /* Two thirds of the face: convex. */
+ triangle0 (mi, frontp, stel_ratio, 1<<1 | 1<<2 | 1<<3 | 1<<4, corners);
+ break;
+ case 6: /* One half of the face. */
+ triangle0 (mi, frontp, stel_ratio, 1<<1 | 1<<2 | 1<<3, corners);
+ break;
+ case 7: /* One half of the face. */
+ triangle0 (mi, frontp, stel_ratio, 1<<2 | 1<<3 | 1<<4, corners);
+ break;
+ default: /* Full face. */
+ triangle0 (mi, frontp, stel_ratio, 0x3F, corners);
+ break;
+ }
+
+ if (wire)
+ {
+ char tag[20];
+ glColor3fv (bg);
+ sprintf (tag, "%d", which);
+ glPushMatrix();
+ glTranslatef (-0.1, 0.2, 0);
+ glScalef (0.005, 0.005, 0.005);
+ print_texture_string (gp->font_data, tag);
+ glPopMatrix();
+ mi->polygon_count++;
+ }
+
+
+ /* The connection hierarchy of the faces starting at the middle, #12. */
+ switch (which) {
+ case 0: break;
+ case 1: a = 0; b = -1; break;
+ case 2: a = -1; b = 3; break;
+ case 3: break;
+ case 4: a = -1; b = 5; break;
+ case 5: a = -1; b = 6; break;
+ case 7: break;
+ case 6: break;
+ case 8: a = 17; b = 7; break;
+ case 9: a = 8; b = -1; break;
+ case 10: a = 18; b = 9; break;
+ case 11: a = 10; b = 1; break;
+ case 12: a = 11; b = 13; break;
+ case 13: a = 2; b = 14; break;
+ case 14: a = 15; b = 20; break;
+ case 15: a = 4; b = 16; break;
+ case 16: break;
+ case 17: break;
+ case 18: break;
+ case 19: break;
+ case 20: a = 21; b = 19; break;
+ case 21: break;
+ default: abort(); break;
+ }
+
+ if (a != -1)
+ {
+ glPushMatrix();
+ glTranslatef (-0.5, 0, 0); /* Move model matrix to upper left */
+ glRotatef (60, 0, 0, 1);
+ glTranslatef ( 0.5, 0, 0);
+
+ glMatrixMode(GL_TEXTURE);
+ /* glPushMatrix(); */
+ glTranslatef (-0.5, 0, 0); /* Move texture matrix the same way */
+ glRotatef (60, 0, 0, 1);
+ glTranslatef ( 0.5, 0, 0);
+
+ glMatrixMode(GL_MODELVIEW);
+
+ glRotatef (rot, 1, 0, 0);
+ triangle (mi, a, frontp, fold_ratio, stel_ratio);
+
+ /* This should just be a PopMatrix on the TEXTURE stack, but
+ fucking iOS has GL_MAX_TEXTURE_STACK_DEPTH == 4! WTF!
+ So we have to undo our rotations and translations manually.
+ */
+ glMatrixMode(GL_TEXTURE);
+ /* glPopMatrix(); */
+ glTranslatef (-0.5, 0, 0);
+ glRotatef (-60, 0, 0, 1);
+ glTranslatef (0.5, 0, 0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
+ }
+
+ if (b != -1)
+ {
+ glPushMatrix();
+ glTranslatef (0.5, 0, 0); /* Move model matrix to upper right */
+ glRotatef (-60, 0, 0, 1);
+ glTranslatef (-0.5, 0, 0);
+
+ glMatrixMode(GL_TEXTURE);
+ /* glPushMatrix(); */
+ glTranslatef (0.5, 0, 0); /* Move texture matrix the same way */
+ glRotatef (-60, 0, 0, 1);
+ glTranslatef (-0.5, 0, 0);
+
+ glMatrixMode(GL_MODELVIEW);
+
+ glRotatef (rot, 1, 0, 0);
+ triangle (mi, b, frontp, fold_ratio, stel_ratio);
+
+ /* See above. Grr. */
+ glMatrixMode(GL_TEXTURE);
+ /* glPopMatrix(); */
+ glTranslatef (0.5, 0, 0);
+ glRotatef (60, 0, 0, 1);
+ glTranslatef (-0.5, 0, 0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
+ }
+
+
+ /* Draw a border around the edge of the world.
+ */
+ if (!wire && frontp && stel_ratio == 0 && fold_ratio < 0.95)
+ {
+ int edges = 0;
+ GLfloat c[] = { 0, 0.2, 0.5, 1 };
+ c[3] = 1-fold_ratio;
+
+ switch (which)
+ {
+ case 0: edges = 1<<0 | 1<<2; break;
+ case 1: edges = 1<<2; break;
+ case 2: edges = 1<<0; break;
+ case 3: edges = 1<<3 | 1<<4; break;
+ case 4: edges = 1<<3 | 1<<5; break;
+ case 5: edges = 1<<0 | 1<<6; break;
+ case 6: edges = 1<<2 | 1<<7; break;
+ case 16: edges = 1<<0 | 1<<2; break;
+ case 21: edges = 1<<0 | 1<<2; break;
+ case 19: edges = 1<<0 | 1<<2; break;
+ case 12: edges = 1<<1; break;
+ case 18: edges = 1<<0 | 1<<2; break;
+ case 17: edges = 1<<0 | 1<<2; break;
+ case 7: edges = 1<<8 | 1<<9; break;
+ case 9: edges = 1<<2; break;
+ default: break;
+ }
+
+ glDisable (GL_TEXTURE_2D);
+ glDisable (GL_LIGHTING);
+ glLineWidth (2);
+ glColor4fv (c);
+ glBegin (GL_LINES);
+ if (edges & 1<<0)
+ {
+ glVertex3f (corners[0].x, corners[0].y, corners[0].z);
+ glVertex3f (corners[1].x, corners[1].y, corners[1].z);
+ }
+ if (edges & 1<<1)
+ {
+ glVertex3f (corners[1].x, corners[1].y, corners[1].z);
+ glVertex3f (corners[2].x, corners[2].y, corners[2].z);
+ }
+ if (edges & 1<<2)
+ {
+ glVertex3f (corners[2].x, corners[2].y, corners[2].z);
+ glVertex3f (corners[0].x, corners[0].y, corners[0].z);
+ }
+ if (edges & 1<<3)
+ {
+ glVertex3f (corners[1].x, corners[1].y, corners[1].z);
+ glVertex3f (corners[3].x, corners[3].y, corners[3].z);
+ }
+ if (edges & 1<<4)
+ {
+ glVertex3f (corners[3].x, corners[3].y, corners[3].z);
+ glVertex3f (corners[2].x, corners[2].y, corners[2].z);
+ }
+ if (edges & 1<<5)
+ {
+ glVertex3f (corners[3].x, corners[3].y, corners[3].z);
+ glVertex3f (corners[0].x, corners[0].y, corners[0].z);
+ }
+ if (edges & 1<<6)
+ {
+ glVertex3f (corners[0].x, corners[0].y, corners[0].z);
+ glVertex3f (corners[5].x, corners[5].y, corners[5].z);
+ }
+ if (edges & 1<<7)
+ {
+ glVertex3f (corners[0].x, corners[0].y, corners[0].z);
+ glVertex3f (corners[6].x, corners[6].y, corners[6].z);
+ }
+ if (edges & 1<<8)
+ {
+ glVertex3f (corners[1].x, corners[1].y, corners[1].z);
+ glVertex3f (corners[5].x, corners[5].y, corners[5].z);
+ }
+ if (edges & 1<<9)
+ {
+ glVertex3f (corners[5].x, corners[5].y, corners[5].z);
+ glVertex3f (corners[2].x, corners[2].y, corners[2].z);
+ }
+ glEnd();
+ glEnable (GL_TEXTURE_2D);
+ glEnable (GL_LIGHTING);
+ }
+}
+
+
+static void
+draw_triangles (ModeInfo *mi, GLfloat fold_ratio, GLfloat stel_ratio)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ Bool wire = MI_IS_WIREFRAME(mi);
+ GLfloat h = sqrt(3) / 2;
+ GLfloat c = h / 3;
+
+ glTranslatef (0, -h/3, 0); /* Center on face 12 */
+
+ /* When closed, center on midpoint of icosahedron. Eyeballed this. */
+ glTranslatef (0, 0, fold_ratio * 0.754);
+
+ glFrontFace (GL_CCW);
+
+ /* Adjust the texture matrix so that it has the same coordinate space
+ as the model. */
+
+ glMatrixMode(GL_TEXTURE);
+ glPushMatrix();
+ {
+ GLfloat texw = 5.5;
+ GLfloat texh = 3 * h;
+ GLfloat midx = 2.5;
+ GLfloat midy = 3 * c;
+ glScalef (1/texw, -1/texh, 1);
+ glTranslatef (midx, midy, 0);
+ }
+ glMatrixMode(GL_MODELVIEW);
+
+
+
+ /* Front faces */
+
+ if (wire)
+ glDisable (GL_TEXTURE_2D);
+ else if (do_texture)
+ {
+ glEnable (GL_TEXTURE_2D);
+ glBindTexture (GL_TEXTURE_2D, gp->tex1);
+ }
+ else
+ glDisable (GL_TEXTURE_2D);
+
+ triangle (mi, 12, True, fold_ratio, stel_ratio);
+
+ /* Back faces */
+
+ if (wire)
+ glDisable (GL_TEXTURE_2D);
+ else if (do_texture)
+ {
+ glEnable (GL_TEXTURE_2D);
+ glBindTexture (GL_TEXTURE_2D, gp->tex2);
+ }
+ else
+ glDisable (GL_TEXTURE_2D);
+
+ glFrontFace (GL_CW);
+
+ triangle (mi, 12, False, fold_ratio, 0);
+
+ glMatrixMode(GL_TEXTURE);
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+static void
+align_axis (ModeInfo *mi, int undo)
+{
+ /* Rotate so that an axis is lined up with the north and south poles
+ on the map, which are not in the center of their faces, or any
+ other easily computable spot. */
+
+ GLfloat r1 = 20.5;
+ GLfloat r2 = 28.5;
+
+ if (undo)
+ {
+ glRotatef (-r2, 0, 1, 0);
+ glRotatef ( r2, 1, 0, 0);
+ glRotatef (-r1, 1, 0, 0);
+ }
+ else
+ {
+ glRotatef (r1, 1, 0, 0);
+ glRotatef (-r2, 1, 0, 0);
+ glRotatef ( r2, 0, 1, 0);
+ }
+}
+
+
+static void
+draw_axis (ModeInfo *mi)
+{
+ GLfloat s;
+ glDisable (GL_TEXTURE_2D);
+ glDisable (GL_LIGHTING);
+ glPushMatrix();
+
+ align_axis (mi, 0);
+ glTranslatef (0.34, 0.39, -0.61);
+
+ s = 0.96;
+ glScalef (s, s, s); /* tighten up the enclosing sphere */
+
+ glLineWidth (1);
+ glColor3f (0.5, 0.5, 0);
+
+ glRotatef (90, 1, 0, 0); /* unit_sphere is off by 90 */
+ glRotatef (9.5, 0, 1, 0); /* line up the time zones */
+ glFrontFace (GL_CCW);
+ unit_sphere (12, 24, True);
+ glBegin(GL_LINES);
+ glVertex3f(0, -2, 0);
+ glVertex3f(0, 2, 0);
+ glEnd();
+
+ glPopMatrix();
+}
+
+
+
+
+ENTRYPOINT Bool
+planet_handle_event (ModeInfo *mi, XEvent *event)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, gp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &gp->button_down_p))
+ return True;
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
+ {
+ int i;
+ double cf = gp->current_frame;
+
+ /* Switch between the satellite and flat map, preserving position. */
+ if (gp->day) XDestroyImage (gp->day);
+ if (gp->night) XDestroyImage (gp->night);
+ if (gp->cvt) XDestroyImage (gp->cvt);
+ gp->day = 0;
+ gp->night = 0;
+ gp->cvt = 0;
+
+ for (i = 0; i < gp->nimages; i++)
+ if (gp->images[i]) XDestroyImage (gp->images[i]);
+ free (gp->images);
+ gp->images = 0;
+
+ which_image = strdup (!strcmp (which_image, "BUILTIN_DAY")
+ ? "BUILTIN_FLAT" : "BUILTIN_DAY");
+ which_image2 = strdup (!strcmp (which_image2, "BUILTIN_NIGHT")
+ ? "BUILTIN_FLAT" : "BUILTIN_NIGHT");
+ load_images (mi);
+ gp->current_frame = cf;
+# if 0
+ switch (gp->state) {
+ case FLAT: case ICO: case STEL: case AXIS: case ICO2:
+ gp->ratio = 1;
+ break;
+ default:
+ break;
+ }
+# endif
+ return True;
+ }
+ }
+
+ return False;
+}
+
+
+ENTRYPOINT void
+init_planet (ModeInfo * mi)
+{
+ planetstruct *gp;
+ int screen = MI_SCREEN(mi);
+ Bool wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, planets);
+ gp = &planets[screen];
+
+ if ((gp->glx_context = init_GL(mi)) != NULL) {
+ reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ }
+
+ gp->state = STARTUP;
+ gp->ratio = 0;
+ gp->font_data = load_texture_font (mi->dpy, "labelFont");
+ gp->delay = MI_DELAY(mi);
+
+ {
+ double spin_speed = 0.1;
+ double wander_speed = 0.002;
+ gp->rot = make_rotator (do_roll ? spin_speed : 0,
+ do_roll ? spin_speed : 0,
+ 0, 1,
+ do_wander ? wander_speed : 0,
+ False);
+ gp->rot2 = make_rotator (0, 0, 0, 0, wander_speed, False);
+ gp->trackball = gltrackball_init (True);
+ }
+
+ if (wire)
+ do_texture = False;
+
+ if (do_texture)
+ setup_texture (mi);
+
+ if (do_stars)
+ init_stars (mi);
+
+ glEnable (GL_DEPTH_TEST);
+ glEnable (GL_NORMALIZE);
+ glEnable (GL_CULL_FACE);
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {1, 1, 1, 0};
+ GLfloat amb[4] = {0, 0, 0, 1};
+ GLfloat dif[4] = {1, 1, 1, 1};
+ GLfloat spc[4] = {0, 1, 1, 1};
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+}
+
+
+static GLfloat
+ease_fn (GLfloat r)
+{
+ return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
+
+
+static GLfloat
+ease_ratio (GLfloat r)
+{
+ GLfloat ease = 0.35;
+ if (r <= 0) return 0;
+ else if (r >= 1) return 1;
+ else if (r <= ease) return ease * ease_fn (r / ease);
+ else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+ else return r;
+}
+
+
+ENTRYPOINT void
+draw_planet (ModeInfo * mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ long delay = gp->delay;
+ double x, y, z;
+
+ if (!gp->glx_context)
+ return;
+
+ glDrawBuffer(GL_BACK);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glXMakeCurrent (dpy, window, *(gp->glx_context));
+
+ mi->polygon_count = 0;
+
+ if (! gp->button_down_p)
+ switch (gp->state) {
+ case STARTUP: gp->ratio += speed * 0.01; break;
+ case FLAT: gp->ratio += speed * 0.005 *
+ /* Stay flat longer if animating day and night. */
+ (gp->nimages <= 1 ? 1 : 0.3);
+ break;
+ case FOLD: gp->ratio += speed * 0.01; break;
+ case ICO: gp->ratio += speed * 0.01; break;
+ case STEL_IN: gp->ratio += speed * 0.05; break;
+ case STEL: gp->ratio += speed * 0.01; break;
+ case STEL_OUT: gp->ratio += speed * 0.07; break;
+ case ICO2: gp->ratio += speed * 0.07; break;
+ case AXIS: gp->ratio += speed * 0.02; break;
+ case SPIN: gp->ratio += speed * 0.005; break;
+ case UNFOLD: gp->ratio += speed * 0.01; break;
+ default: abort();
+ }
+
+ if (gp->ratio > 1.0)
+ {
+ gp->ratio = 0;
+ switch (gp->state) {
+ case STARTUP: gp->state = FLAT; break;
+ case FLAT: gp->state = FOLD; break;
+ case FOLD: gp->state = ICO; break;
+ case ICO: gp->state = STEL_IN; break;
+ case STEL_IN: gp->state = STEL; break;
+ case STEL:
+ {
+ int i = (random() << 9) % 7;
+ gp->state = (i < 3 ? STEL_OUT :
+ i < 6 ? SPIN : AXIS);
+ }
+ break;
+ case AXIS: gp->state = STEL_OUT; break;
+ case SPIN: gp->state = STEL_OUT; break;
+ case STEL_OUT: gp->state = ICO2; break;
+ case ICO2: gp->state = UNFOLD; break;
+ case UNFOLD: gp->state = FLAT; break;
+ default: abort();
+ }
+ }
+
+ glEnable(GL_LINE_SMOOTH);
+ glEnable(GL_POINT_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+
+ glPushMatrix();
+
+ gltrackball_rotate (gp->trackball);
+ glRotatef (current_device_rotation(), 0, 0, 1);
+
+# ifdef HAVE_MOBILE /* Fill more of the screen. */
+ {
+ int size = MI_WIDTH(mi) < MI_HEIGHT(mi)
+ ? MI_WIDTH(mi) : MI_HEIGHT(mi);
+ GLfloat s = (size > 768 ? 1.4 : /* iPad */
+ 2); /* iPhone */
+ glScalef (s, s, s);
+ if (MI_WIDTH(mi) < MI_HEIGHT(mi))
+ glRotatef (90, 0, 0, 1);
+ }
+# endif
+
+ if (gp->state != STARTUP)
+ {
+ get_position (gp->rot, &x, &y, &z, !gp->button_down_p);
+ x = (x - 0.5) * 3;
+ y = (y - 0.5) * 3;
+ z = 0;
+ glTranslatef(x, y, z);
+ }
+
+ if (do_roll && gp->state != STARTUP)
+ {
+ double max = 65;
+ get_position (gp->rot2, &x, &y, 0, !gp->button_down_p);
+ glRotatef (max/2 - x*max, 1, 0, 0);
+ glRotatef (max/2 - y*max, 0, 1, 0);
+ }
+
+ if (do_stars)
+ {
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_LIGHTING);
+ glPushMatrix();
+ glScalef (60, 60, 60);
+ glRotatef (90, 1, 0, 0);
+ glRotatef (35, 1, 0, 0);
+ glCallList (gp->starlist);
+ mi->polygon_count += gp->starcount;
+ glPopMatrix();
+ glClear(GL_DEPTH_BUFFER_BIT);
+ }
+
+ if (! wire)
+ {
+ glEnable (GL_LIGHTING);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ if (do_texture)
+ glEnable(GL_TEXTURE_2D);
+
+ if (do_texture /* && !gp->button_down_p */)
+ {
+ int i;
+ int prev = gp->current_frame;
+
+ /* By default, advance terminator by about an hour every 5 seconds. */
+ gp->current_frame += 0.1 * speed * (gp->nimages / 360.0);
+ while (gp->current_frame >= gp->nimages)
+ gp->current_frame -= gp->nimages;
+ i = gp->current_frame;
+
+ /* Load the current image into the texture.
+ */
+ if (i != prev || !gp->images[i])
+ {
+ double start = double_time();
+ cache_current_frame (mi);
+
+ glBindTexture (GL_TEXTURE_2D, gp->tex1);
+
+ /* Must be after glBindTexture */
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ gp->images[i]->width,
+ gp->images[i]->height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ gp->images[i]->data);
+ check_gl_error ("texture");
+
+ /* If caching the image took a bunch of time, deduct that from
+ our per-frame delay to keep the timing a little smoother. */
+ delay -= 1000000 * (double_time() - start);
+ if (delay < 0) delay = 0;
+ }
+ }
+
+ glTranslatef (-0.5, -0.4, 0);
+ glScalef (2.6, 2.6, 2.6);
+
+ {
+ GLfloat fold_ratio = 0;
+ GLfloat stel_ratio = 0;
+ switch (gp->state) {
+ case FOLD: fold_ratio = gp->ratio; break;
+ case UNFOLD: fold_ratio = 1 - gp->ratio; break;
+ case ICO: case ICO2: fold_ratio = 1; break;
+ case STEL: case AXIS: case SPIN: fold_ratio = 1; stel_ratio = 1; break;
+ case STEL_IN: fold_ratio = 1; stel_ratio = gp->ratio; break;
+ case STEL_OUT: fold_ratio = 1; stel_ratio = 1 - gp->ratio; break;
+ case STARTUP: /* Tilt in from flat */
+ glRotatef (-90 * ease_ratio (1 - gp->ratio), 1, 0, 0);
+ break;
+
+ default: break;
+ }
+
+# ifdef HAVE_MOBILE /* Enlarge the icosahedron a bit to make it more visible */
+ {
+ GLfloat s = 1 + 1.3 * ease_ratio (fold_ratio);
+ glScalef (s, s, s);
+ }
+# endif
+
+ if (gp->state == SPIN)
+ {
+ align_axis (mi, 0);
+ glRotatef (ease_ratio (gp->ratio) * 360 * 3, 0, 0, 1);
+ align_axis (mi, 1);
+ }
+
+ draw_triangles (mi, ease_ratio (fold_ratio), ease_ratio (stel_ratio));
+
+ if (gp->state == AXIS)
+ draw_axis(mi);
+ }
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(dpy, window);
+
+ MI_DELAY(mi) = delay;
+}
+
+
+ENTRYPOINT void
+free_planet (ModeInfo * mi)
+{
+ planetstruct *gp = &planets[MI_SCREEN(mi)];
+ int i;
+
+ if (gp->day) XDestroyImage (gp->day);
+ if (gp->night) XDestroyImage (gp->night);
+ if (gp->dusk) XDestroyImage (gp->dusk);
+ if (gp->cvt) XDestroyImage (gp->cvt);
+
+ for (i = 0; i < gp->nimages; i++)
+ if (gp->images[i]) XDestroyImage (gp->images[i]);
+ free (gp->images);
+
+ if (gp->glx_context) {
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+
+ if (glIsList(gp->starlist))
+ glDeleteLists(gp->starlist, 1);
+ }
+}
+
+
+XSCREENSAVER_MODULE_2 ("DymaxionMap", dymaxionmap, planet)
+
+#endif
diff --git a/hacks/glx/dymaxionmap.man b/hacks/glx/dymaxionmap.man
new file mode 100644
index 0000000..9f3e794
--- /dev/null
+++ b/hacks/glx/dymaxionmap.man
@@ -0,0 +1,117 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+dymaxionmap - An animation of Buckminster Fuller's unwrapped icosahedral globe.
+.SH SYNOPSIS
+.B dymaxionmap
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fIratio\fP]
+[\-no-wander]
+[\-no-roll]
+[\-no-stars]
+[\-no-grid]
+[\-flat]
+[\-satellite]
+[\-image \fIfile\fP]
+[\-image2 \fIfile\fP]
+[\-frames \fInumber\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Buckminster Fuller's map of the Earth projected onto the surface of an
+unfolded icosahedron. It depicts the Earth's continents as one island, or
+nearly contiguous land masses.
+
+This screen saver animates the progression of the dusk terminator across
+the flattened globe. It includes both satellite and flat-colored map
+imagery, and can load and convert other Equirectangular-projected maps.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
+.TP 8
+.B \-speed \fIratio\fP
+Speed of the animation. 0.5 means half as fast, 2 means twice as fast.
+.TP 8
+.B \-wander | \-no-wander
+Whether the object should wander around the screen. Default yes.
+.TP 8
+.B \-roll | \-no-roll
+Whether the object should roll randomly. Default yes.
+.TP 8
+.B \-stars | \-no-stars
+Whether to display a star field. Default yes.
+.TP 8
+.B \-grid | \-no-grid
+Whether to overlay a latitude/longitude grid over the map. Default yes.
+.TP 8
+.B \-flat
+Display a flat-colored map of the Earth. This is the default.
+.TP 8
+.B \-satellite
+Display a day-time satellite map of the Earth.
+.TP 8
+.B \-image \fIfile\fP
+An image to use for the day-time map.
+.TP 8
+.B \-image2 \fIfile\fP
+An image to use for the night-time map.
+The two images can be the same: the night-time one will be darkened.
+.TP 8
+.B \-frames \fInumber\fP
+The number of frames in the day/night animation. Default 720.
+Larger numbers are smoother, but use more memory.
+The day/night animation happens if \fIimage2\fP is set, or
+if \fIframes\fP is greater than 1.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR glplanet (1)
+.SH COPYRIGHT
+Copyright \(co 2016-2018 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+"Dymaxion Map" and "The Fuller Projection Map" are trademarks of
+The Buckminster Fuller Institute.
+
+The original Dymaxion Map image is copyright \(co 1982 by
+The Buckminster Fuller Institute. (This program does not use their
+imagery, only similar trigonometry.)
+
+The Dymaxion Map was covered by now-expired US Patent 2,393,676
+(Richard Buckminster Fuller, 1946).
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/e_textures.h b/hacks/glx/e_textures.h
new file mode 100644
index 0000000..7f9457e
--- /dev/null
+++ b/hacks/glx/e_textures.h
@@ -0,0 +1,1478 @@
+static unsigned char WoodTextureWidth = 199;
+static unsigned char WoodTextureHeight = 37;
+static unsigned char WoodTextureData[] =
+{
+ 84, 30, 12, 84, 26, 12, 108, 42, 28, 100, 38, 28, 108, 42, 28,
+ 108, 46, 28, 100, 38, 28, 108, 46, 28, 108, 42, 28, 108, 42, 20,
+ 108, 42, 28, 108, 38, 20, 108, 42, 20, 108, 42, 28, 116, 42, 28,
+ 108, 42, 20, 108, 46, 28, 100, 34, 12, 108, 42, 20, 108, 42, 20,
+ 108, 42, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20, 108, 42, 20,
+ 108, 42, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20,
+ 108, 42, 20, 108, 42, 20, 108, 42, 28, 108, 42, 20, 108, 42, 20,
+ 100, 38, 20, 100, 38, 20, 100, 38, 20, 108, 38, 20, 116, 50, 28,
+ 108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 108, 42, 20,
+ 108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20,
+ 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 100, 38, 20,
+ 108, 38, 20, 100, 38, 20, 108, 38, 20, 100, 42, 20, 108, 42, 20,
+ 108, 42, 28, 108, 42, 20, 100, 38, 20, 108, 42, 20, 100, 38, 20,
+ 100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20,
+ 108, 42, 20, 108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20,
+ 100, 34, 12, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 42, 20,
+ 100, 38, 20, 100, 34, 12, 100, 34, 12, 100, 38, 20, 108, 38, 20,
+ 100, 38, 20, 108, 38, 20, 108, 42, 20, 100, 38, 20, 108, 42, 20,
+ 108, 42, 28, 108, 46, 20, 108, 38, 20, 108, 42, 20, 108, 46, 28,
+ 108, 46, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 100, 38, 20,
+ 108, 42, 20, 100, 38, 20, 108, 38, 20, 100, 38, 20, 108, 38, 20,
+ 108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 54, 36, 116, 54, 36,
+ 116, 54, 28, 108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 42, 20,
+ 108, 42, 20, 108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
+ 116, 46, 28, 108, 42, 28, 116, 50, 36, 116, 50, 36, 100, 38, 20,
+ 108, 42, 28, 108, 38, 20, 100, 38, 20, 108, 38, 20, 108, 42, 28,
+ 108, 46, 28, 116, 46, 28, 108, 42, 28, 108, 42, 28, 108, 42, 20,
+ 108, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
+ 108, 42, 28, 108, 42, 20, 100, 38, 20, 116, 50, 28, 108, 46, 28,
+ 108, 42, 20, 108, 42, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28,
+ 108, 46, 28, 108, 46, 20, 108, 46, 28, 116, 46, 28, 108, 46, 28,
+ 116, 50, 28, 108, 46, 28, 108, 46, 28, 108, 42, 20, 116, 46, 28,
+ 108, 46, 28, 108, 42, 20, 108, 42, 28, 108, 46, 28, 116, 50, 28,
+ 116, 50, 28, 116, 50, 36, 124, 54, 36, 116, 54, 36, 116, 54, 28,
+ 116, 50, 28, 116, 50, 28, 108, 46, 28, 116, 46, 28, 108, 46, 28,
+ 116, 50, 28, 116, 46, 28, 116, 50, 28, 116, 50, 28, 116, 50, 28,
+ 116, 50, 28, 108, 46, 28, 108, 46, 20, 124, 50, 36, 116, 54, 28,
+ 124, 54, 28, 116, 54, 28, 116, 54, 28, 116, 54, 28, 124, 54, 36,
+ 124, 58, 36, 124, 50, 36, 116, 46, 28, 116, 46, 28, 116, 42, 28,
+ 116, 50, 36, 124, 66, 44, 108, 58, 36, 84, 30, 12, 100, 42, 20,
+ 116, 54, 36, 140, 82, 68, 148, 86, 68, 148, 86, 68, 156, 90, 76,
+ 148, 86, 68, 156, 86, 76, 156, 86, 68, 148, 86, 68, 156, 86, 68,
+ 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 86, 68,
+ 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84,
+ 164, 98, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 84,
+ 164, 98, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76,
+ 164, 94, 68, 164, 94, 68, 164, 98, 76, 172, 106, 84, 164, 98, 76,
+ 164, 98, 76, 164, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 94, 68, 164, 98, 76, 164, 98, 76, 164, 102, 76,
+ 164, 94, 76, 156, 94, 68, 172, 102, 84, 172, 106, 84, 172, 102, 84,
+ 164, 98, 76, 164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76,
+ 164, 94, 76, 156, 94, 68, 164, 98, 76, 164, 102, 76, 164, 98, 76,
+ 164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 102, 76,
+ 172, 106, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 172, 102, 84,
+ 172, 106, 84, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 110, 84,
+ 180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 114, 92,
+ 188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 122, 108, 188, 126, 108,
+ 188, 118, 100, 196, 130, 108, 204, 134, 116, 188, 126, 108, 196, 122, 108,
+ 180, 118, 100, 180, 110, 92, 180, 114, 100, 180, 118, 100, 188, 118, 100,
+ 188, 122, 108, 188, 118, 100, 188, 118, 100, 180, 118, 100, 188, 118, 100,
+ 180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92,
+ 172, 110, 92, 172, 106, 84, 180, 114, 92, 172, 106, 92, 172, 102, 84,
+ 172, 106, 84, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 106, 84,
+ 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
+ 164, 102, 84, 164, 102, 76, 172, 106, 84, 172, 110, 92, 180, 110, 92,
+ 172, 110, 84, 172, 114, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92,
+ 172, 106, 92, 172, 106, 84, 172, 106, 84, 164, 102, 84, 180, 114, 100,
+ 180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92,
+ 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 172, 110, 92, 172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 118, 100,
+ 196, 126, 100, 196, 122, 108, 196, 126, 108, 196, 130, 116, 196, 134, 116,
+ 204, 142, 124, 164, 106, 84, 100, 42, 20, 84, 26, 4, 132, 78, 68,
+ 188, 122, 108, 188, 122, 108, 188, 126, 116, 196, 134, 116, 188, 122, 108,
+ 188, 126, 108, 188, 126, 108, 188, 122, 108, 196, 126, 108, 196, 130, 108,
+ 188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 126, 108, 188, 126, 108,
+ 196, 130, 108, 196, 130, 108, 196, 134, 116, 196, 130, 108, 196, 130, 108,
+ 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 188, 126, 108,
+ 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 130, 108, 196, 130, 108,
+ 196, 134, 116, 204, 142, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108,
+ 188, 126, 108, 196, 126, 100, 196, 134, 108, 196, 130, 108, 188, 126, 100,
+ 188, 122, 100, 188, 126, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100,
+ 188, 126, 100, 196, 130, 108, 204, 134, 108, 196, 134, 116, 196, 134, 108,
+ 196, 130, 108, 196, 126, 108, 196, 130, 108, 196, 130, 108, 196, 130, 108,
+ 188, 126, 108, 196, 126, 108, 196, 134, 108, 196, 130, 108, 196, 130, 108,
+ 188, 122, 100, 196, 130, 108, 196, 130, 108, 196, 134, 108, 196, 130, 108,
+ 188, 126, 100, 196, 130, 108, 196, 134, 108, 204, 134, 116, 204, 138, 116,
+ 204, 138, 116, 204, 134, 116, 196, 130, 108, 196, 130, 108, 196, 134, 108,
+ 204, 134, 116, 196, 134, 116, 196, 134, 108, 196, 130, 108, 196, 130, 108,
+ 204, 134, 116, 204, 138, 116, 204, 138, 116, 196, 130, 108, 196, 130, 108,
+ 188, 122, 100, 180, 118, 92, 188, 118, 100, 196, 130, 108, 196, 130, 108,
+ 188, 126, 100, 188, 122, 100, 188, 122, 100, 204, 134, 108, 196, 134, 116,
+ 204, 134, 116, 196, 134, 108, 196, 130, 108, 204, 134, 108, 204, 138, 116,
+ 204, 138, 116, 212, 142, 124, 204, 142, 116, 204, 134, 116, 204, 138, 116,
+ 204, 138, 116, 204, 138, 116, 204, 134, 108, 188, 126, 108, 196, 130, 108,
+ 196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 138, 116, 212, 146, 124,
+ 204, 142, 116, 204, 138, 116, 212, 146, 124, 212, 142, 124, 204, 138, 124,
+ 204, 138, 124, 204, 138, 124, 204, 138, 116, 212, 142, 124, 204, 138, 124,
+ 196, 130, 116, 204, 134, 116, 204, 138, 116, 204, 138, 124, 204, 138, 116,
+ 204, 138, 124, 204, 134, 116, 204, 138, 124, 212, 142, 124, 204, 138, 116,
+ 196, 134, 116, 196, 130, 108, 196, 134, 116, 204, 138, 116, 204, 142, 124,
+ 212, 142, 124, 204, 138, 116, 204, 138, 116, 204, 138, 116, 204, 138, 116,
+ 204, 138, 124, 204, 142, 124, 204, 142, 116, 204, 138, 124, 196, 134, 108,
+ 196, 134, 116, 196, 134, 116, 196, 130, 116, 196, 130, 108, 188, 126, 108,
+ 196, 126, 108, 188, 130, 108, 188, 126, 108, 188, 122, 100, 180, 118, 100,
+ 188, 118, 100, 188, 126, 108, 196, 130, 108, 196, 126, 108, 188, 126, 108,
+ 188, 122, 100, 188, 122, 108, 188, 126, 108, 196, 126, 108, 196, 130, 108,
+ 188, 126, 108, 196, 126, 108, 188, 126, 108, 196, 134, 108, 196, 134, 116,
+ 196, 134, 108, 196, 130, 108, 196, 126, 108, 188, 122, 108, 188, 122, 100,
+ 188, 122, 100, 196, 130, 108, 196, 130, 100, 196, 130, 108, 196, 130, 100,
+ 188, 130, 108, 196, 130, 108, 196, 134, 108, 204, 138, 116, 204, 130, 108,
+ 204, 134, 116, 204, 134, 116, 204, 134, 116, 204, 138, 124, 204, 146, 124,
+ 156, 102, 84, 84, 26, 4, 84, 26, 4, 116, 58, 36, 164, 106, 92,
+ 164, 102, 84, 164, 106, 92, 172, 110, 92, 156, 98, 84, 172, 102, 84,
+ 172, 102, 84, 180, 110, 92, 180, 118, 100, 180, 118, 100, 180, 110, 92,
+ 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 106, 92,
+ 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 92, 172, 110, 92,
+ 172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 76,
+ 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84,
+ 180, 110, 92, 172, 110, 84, 180, 110, 92, 172, 110, 84, 172, 106, 84,
+ 172, 110, 84, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84,
+ 172, 102, 76, 172, 102, 84, 172, 102, 84, 164, 102, 76, 164, 94, 76,
+ 172, 102, 84, 172, 110, 92, 172, 110, 84, 172, 102, 84, 164, 98, 76,
+ 172, 102, 76, 172, 106, 84, 172, 110, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84,
+ 172, 102, 76, 172, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84,
+ 172, 106, 84, 180, 110, 92, 172, 110, 84, 180, 118, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 180, 118, 92,
+ 188, 122, 100, 188, 118, 100, 180, 114, 92, 180, 118, 92, 180, 114, 92,
+ 180, 118, 92, 188, 118, 100, 180, 118, 92, 180, 114, 92, 180, 118, 92,
+ 180, 110, 84, 180, 110, 92, 180, 118, 92, 188, 122, 100, 188, 114, 100,
+ 180, 114, 92, 180, 114, 92, 196, 126, 108, 188, 126, 100, 188, 122, 100,
+ 188, 118, 100, 180, 118, 100, 180, 114, 92, 188, 118, 100, 188, 122, 100,
+ 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 114, 92, 188, 122, 100,
+ 188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 110, 84, 172, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100,
+ 188, 122, 100, 180, 106, 92, 172, 110, 92, 172, 102, 84, 172, 102, 84,
+ 164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84,
+ 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92,
+ 172, 106, 84, 172, 106, 92, 172, 110, 84, 164, 102, 84, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 172, 110, 92, 180, 114, 92, 180, 118, 100,
+ 180, 118, 100, 188, 122, 100, 180, 122, 108, 188, 122, 100, 188, 122, 100,
+ 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 126, 108,
+ 188, 122, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92, 180, 114, 92,
+ 180, 118, 100, 180, 110, 92, 172, 110, 92, 172, 106, 84, 180, 110, 92,
+ 180, 118, 92, 180, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 84,
+ 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92,
+ 180, 114, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92,
+ 172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
+ 180, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 92,
+ 180, 118, 92, 188, 118, 100, 188, 122, 100, 180, 114, 100, 180, 110, 92,
+ 188, 114, 100, 180, 110, 92, 172, 110, 92, 180, 126, 108, 148, 98, 76,
+ 84, 26, 4, 84, 26, 12, 108, 50, 36, 164, 102, 84, 164, 98, 84,
+ 156, 94, 76, 164, 98, 84, 148, 86, 68, 156, 90, 76, 156, 94, 84,
+ 164, 90, 76, 164, 98, 84, 172, 102, 84, 164, 94, 76, 156, 90, 68,
+ 164, 94, 76, 164, 98, 84, 164, 94, 76, 164, 98, 76, 164, 98, 84,
+ 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 164, 102, 84, 164, 94, 68, 164, 94, 76, 156, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 98, 76,
+ 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84,
+ 172, 110, 84, 172, 106, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76, 172, 106, 84,
+ 180, 110, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 106, 84,
+ 180, 114, 92, 172, 106, 84, 164, 102, 76, 164, 98, 76, 172, 106, 84,
+ 180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84,
+ 180, 114, 92, 188, 118, 100, 180, 114, 92, 172, 110, 84, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 172, 110, 92, 172, 106, 84, 164, 102, 76,
+ 172, 102, 76, 164, 102, 84, 180, 110, 84, 180, 118, 92, 188, 118, 100,
+ 188, 122, 100, 180, 118, 92, 180, 110, 92, 180, 110, 84, 172, 106, 92,
+ 180, 114, 84, 180, 114, 100, 188, 122, 100, 188, 122, 100, 180, 114, 92,
+ 172, 110, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92,
+ 180, 118, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 102, 76,
+ 164, 102, 76, 172, 102, 84, 172, 110, 84, 180, 114, 92, 172, 110, 84,
+ 172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 118, 100, 188, 118, 92,
+ 180, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 188, 118, 92,
+ 180, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
+ 180, 114, 92, 188, 122, 100, 188, 126, 108, 188, 118, 100, 172, 110, 92,
+ 172, 102, 84, 172, 106, 84, 180, 106, 92, 164, 98, 76, 172, 102, 84,
+ 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
+ 172, 102, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76,
+ 172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
+ 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 188, 122, 100,
+ 188, 122, 108, 196, 126, 108, 180, 118, 92, 188, 118, 100, 180, 118, 100,
+ 180, 118, 100, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 118, 100,
+ 180, 110, 92, 172, 110, 84, 172, 106, 92, 172, 110, 92, 188, 118, 100,
+ 180, 118, 100, 180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 114, 92,
+ 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92,
+ 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 110, 92,
+ 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 172, 106, 84,
+ 180, 110, 84, 180, 118, 92, 188, 122, 100, 180, 118, 100, 180, 118, 92,
+ 180, 118, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92, 188, 118, 108,
+ 188, 118, 100, 188, 122, 100, 188, 130, 108, 156, 102, 84, 84, 26, 12,
+ 84, 30, 12, 108, 46, 28, 140, 82, 68, 156, 90, 76, 156, 94, 84,
+ 156, 94, 84, 156, 94, 76, 164, 94, 76, 156, 90, 76, 164, 94, 76,
+ 156, 94, 76, 156, 90, 68, 156, 90, 68, 164, 90, 76, 156, 90, 68,
+ 148, 82, 60, 148, 78, 60, 164, 98, 76, 164, 94, 76, 156, 90, 68,
+ 156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 76,
+ 164, 94, 68, 156, 94, 76, 156, 94, 68, 156, 90, 68, 156, 90, 68,
+ 172, 102, 76, 180, 114, 92, 188, 118, 92, 172, 106, 84, 180, 106, 84,
+ 172, 106, 84, 164, 98, 76, 164, 94, 68, 164, 98, 76, 172, 102, 84,
+ 172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 180, 110, 92,
+ 172, 110, 84, 172, 98, 76, 164, 98, 76, 172, 106, 84, 180, 118, 92,
+ 180, 106, 84, 180, 106, 84, 172, 106, 84, 172, 110, 84, 180, 110, 92,
+ 180, 110, 84, 172, 102, 76, 164, 98, 76, 164, 94, 68, 172, 106, 84,
+ 180, 114, 92, 172, 106, 84, 164, 98, 76, 172, 98, 76, 172, 106, 84,
+ 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 92,
+ 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 188, 118, 92,
+ 188, 114, 92, 172, 106, 84, 172, 102, 76, 172, 106, 84, 188, 118, 92,
+ 188, 122, 100, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84,
+ 180, 114, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76,
+ 180, 106, 84, 180, 114, 84, 172, 102, 76, 164, 94, 76, 172, 106, 84,
+ 180, 110, 84, 172, 106, 84, 172, 106, 84, 188, 122, 100, 188, 118, 92,
+ 180, 118, 92, 188, 118, 100, 196, 122, 100, 188, 122, 100, 180, 118, 92,
+ 180, 110, 84, 188, 114, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92,
+ 188, 114, 92, 180, 114, 92, 180, 114, 84, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 110, 92,
+ 188, 118, 100, 180, 118, 92, 180, 110, 92, 180, 114, 100, 180, 118, 100,
+ 172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 102, 84,
+ 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 118, 92, 180, 118, 100,
+ 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100, 180, 118, 92,
+ 180, 118, 100, 188, 122, 108, 188, 122, 100, 188, 118, 100, 180, 114, 92,
+ 180, 114, 92, 172, 110, 92, 172, 110, 92, 172, 106, 84, 188, 122, 100,
+ 180, 114, 100, 172, 106, 84, 172, 110, 84, 180, 114, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92,
+ 180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92,
+ 164, 106, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 172, 110, 92,
+ 180, 110, 84, 172, 110, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92,
+ 180, 114, 92, 180, 118, 92, 180, 118, 92, 180, 118, 100, 188, 118, 92,
+ 188, 118, 100, 180, 110, 92, 180, 110, 92, 188, 118, 100, 188, 118, 100,
+ 180, 118, 100, 180, 122, 108, 148, 90, 68, 84, 30, 12, 92, 34, 12,
+ 116, 58, 44, 156, 90, 76, 156, 94, 76, 156, 94, 76, 156, 90, 76,
+ 148, 86, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68, 156, 86, 68,
+ 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68, 148, 78, 60,
+ 140, 74, 52, 148, 82, 68, 148, 82, 60, 148, 86, 68, 156, 90, 68,
+ 156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 148, 86, 68,
+ 156, 86, 68, 156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76,
+ 164, 94, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76,
+ 172, 106, 84, 180, 110, 92, 172, 106, 84, 164, 98, 76, 172, 102, 76,
+ 172, 102, 84, 164, 94, 68, 164, 94, 76, 172, 102, 76, 180, 110, 84,
+ 180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76,
+ 164, 98, 76, 164, 98, 76, 172, 102, 76, 180, 110, 92, 180, 110, 92,
+ 172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84, 180, 110, 92,
+ 172, 102, 84, 164, 98, 76, 156, 94, 68, 172, 106, 84, 188, 114, 92,
+ 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
+ 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 76,
+ 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92,
+ 188, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 172, 106, 84,
+ 180, 114, 92, 172, 106, 84, 164, 94, 68, 172, 106, 84, 180, 114, 92,
+ 188, 118, 92, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 180, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 172, 106, 84,
+ 180, 114, 92, 180, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84,
+ 172, 102, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84, 164, 102, 84,
+ 172, 102, 84, 164, 94, 76, 156, 90, 68, 164, 94, 76, 180, 106, 92,
+ 172, 102, 84, 164, 98, 84, 180, 110, 84, 180, 110, 92, 164, 98, 84,
+ 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76, 164, 102, 84,
+ 164, 102, 84, 172, 102, 84, 164, 106, 84, 172, 106, 92, 172, 106, 92,
+ 172, 110, 92, 180, 110, 84, 180, 118, 100, 188, 118, 100, 180, 118, 100,
+ 180, 114, 92, 172, 114, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92,
+ 180, 118, 100, 180, 118, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
+ 172, 110, 92, 180, 110, 92, 172, 114, 92, 188, 118, 100, 180, 114, 92,
+ 172, 110, 92, 172, 106, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84,
+ 164, 102, 84, 172, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92,
+ 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92,
+ 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 118, 92, 188, 118, 92,
+ 188, 122, 92, 180, 122, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100,
+ 196, 122, 100, 188, 118, 100, 196, 122, 108, 180, 114, 100, 180, 114, 100,
+ 180, 126, 108, 148, 98, 76, 92, 34, 12, 84, 26, 12, 116, 58, 36,
+ 148, 90, 76, 148, 90, 76, 140, 82, 68, 148, 82, 68, 140, 78, 60,
+ 156, 86, 68, 148, 86, 68, 156, 90, 68, 156, 90, 76, 164, 94, 76,
+ 156, 90, 76, 156, 90, 68, 148, 82, 68, 148, 78, 60, 140, 78, 60,
+ 156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 156, 94, 76,
+ 164, 94, 76, 156, 94, 76, 148, 86, 68, 148, 82, 60, 148, 86, 68,
+ 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 94, 76,
+ 164, 102, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
+ 180, 114, 84, 180, 110, 84, 172, 102, 76, 180, 106, 84, 172, 106, 76,
+ 172, 98, 76, 164, 98, 68, 172, 106, 76, 172, 106, 84, 180, 110, 84,
+ 172, 98, 76, 180, 106, 84, 180, 110, 84, 180, 110, 84, 172, 98, 76,
+ 172, 98, 76, 180, 106, 84, 180, 114, 84, 188, 114, 92, 180, 110, 84,
+ 180, 110, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
+ 164, 98, 68, 164, 94, 68, 180, 106, 84, 188, 118, 92, 180, 114, 92,
+ 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 76,
+ 180, 106, 84, 180, 110, 84, 180, 114, 92, 188, 114, 92, 180, 110, 84,
+ 180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 180, 114, 84,
+ 180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84,
+ 180, 106, 84, 172, 106, 76, 180, 106, 84, 188, 114, 92, 188, 118, 92,
+ 180, 118, 92, 188, 118, 92, 196, 122, 100, 172, 106, 84, 188, 114, 84,
+ 172, 106, 84, 164, 98, 68, 172, 102, 76, 180, 106, 84, 180, 110, 84,
+ 188, 118, 92, 188, 122, 92, 188, 114, 92, 180, 110, 92, 180, 114, 84,
+ 188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 102, 84, 188, 122, 92,
+ 180, 110, 84, 164, 102, 76, 172, 102, 76, 172, 98, 76, 172, 102, 76,
+ 172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84,
+ 172, 102, 76, 164, 90, 76, 172, 98, 76, 180, 110, 92, 172, 102, 76,
+ 172, 102, 84, 180, 106, 84, 180, 110, 84, 172, 102, 84, 172, 98, 76,
+ 164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 164, 98, 76,
+ 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92,
+ 180, 114, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100,
+ 172, 106, 92, 172, 106, 84, 164, 106, 84, 172, 106, 84, 180, 114, 92,
+ 180, 110, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 172, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 118, 92, 172, 110, 92, 172, 106, 84,
+ 172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84, 164, 94, 76,
+ 164, 98, 76, 172, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 92,
+ 172, 110, 84, 172, 106, 92, 164, 102, 84, 172, 110, 92, 180, 110, 92,
+ 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100, 180, 114, 92,
+ 180, 118, 92, 180, 114, 92, 188, 114, 92, 180, 118, 92, 180, 118, 100,
+ 180, 118, 92, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 110, 92,
+ 180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 114, 92,
+ 140, 90, 68, 84, 26, 12, 84, 30, 12, 116, 58, 44, 156, 90, 76,
+ 156, 90, 76, 148, 86, 68, 148, 86, 76, 148, 86, 68, 156, 90, 76,
+ 156, 90, 76, 164, 94, 84, 164, 98, 76, 164, 94, 76, 156, 90, 68,
+ 156, 86, 68, 156, 86, 60, 156, 90, 68, 156, 90, 76, 164, 94, 76,
+ 156, 94, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 156, 94, 68, 148, 78, 60, 148, 86, 68, 156, 90, 68,
+ 156, 90, 68, 148, 86, 68, 156, 86, 68, 156, 90, 68, 164, 98, 76,
+ 164, 94, 68, 172, 98, 76, 180, 106, 84, 188, 118, 92, 188, 118, 92,
+ 188, 118, 100, 180, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76,
+ 172, 98, 76, 172, 106, 84, 180, 106, 84, 164, 98, 68, 172, 102, 76,
+ 180, 114, 84, 196, 122, 100, 188, 118, 92, 172, 106, 76, 172, 102, 76,
+ 180, 110, 84, 188, 122, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84,
+ 188, 114, 84, 188, 114, 92, 180, 114, 84, 180, 106, 84, 172, 102, 76,
+ 164, 94, 68, 180, 110, 84, 188, 118, 92, 188, 118, 92, 188, 114, 92,
+ 180, 114, 92, 188, 114, 84, 180, 114, 92, 180, 106, 84, 180, 110, 84,
+ 180, 114, 84, 188, 114, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84,
+ 180, 106, 84, 180, 114, 84, 188, 114, 92, 188, 114, 92, 180, 114, 92,
+ 188, 118, 92, 196, 122, 100, 188, 122, 92, 180, 114, 92, 188, 114, 92,
+ 180, 110, 84, 180, 114, 84, 188, 118, 92, 188, 122, 92, 188, 118, 92,
+ 188, 118, 92, 188, 122, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92,
+ 188, 114, 92, 188, 122, 100, 196, 126, 100, 188, 118, 92, 188, 114, 92,
+ 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 188, 118, 92,
+ 188, 118, 92, 188, 118, 92, 180, 114, 84, 196, 126, 100, 188, 114, 92,
+ 180, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 76, 172, 106, 76,
+ 180, 110, 84, 188, 118, 92, 180, 110, 92, 180, 114, 92, 180, 106, 92,
+ 164, 98, 76, 180, 106, 84, 188, 114, 100, 180, 106, 84, 180, 110, 92,
+ 180, 110, 92, 188, 114, 92, 180, 110, 92, 172, 106, 84, 172, 98, 76,
+ 172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 102, 84,
+ 172, 106, 84, 172, 110, 92, 180, 118, 92, 180, 114, 100, 180, 118, 100,
+ 188, 122, 108, 188, 126, 100, 188, 118, 100, 180, 114, 92, 172, 106, 84,
+ 164, 102, 84, 172, 102, 84, 172, 110, 92, 172, 110, 92, 172, 110, 84,
+ 172, 106, 92, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92,
+ 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 180, 110, 92,
+ 172, 110, 92, 180, 110, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76,
+ 172, 106, 84, 180, 114, 92, 172, 106, 84, 164, 102, 84, 172, 110, 84,
+ 172, 106, 84, 164, 98, 76, 172, 102, 84, 164, 106, 84, 172, 106, 84,
+ 172, 106, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92,
+ 180, 106, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92, 180, 106, 84,
+ 188, 114, 100, 188, 118, 100, 180, 114, 100, 180, 126, 108, 148, 90, 68,
+ 84, 30, 12, 92, 34, 12, 124, 66, 44, 156, 98, 84, 164, 102, 84,
+ 164, 98, 84, 164, 98, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76,
+ 156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68,
+ 156, 86, 68, 156, 86, 68, 164, 94, 68, 156, 90, 76, 156, 94, 68,
+ 156, 90, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 102, 84, 148, 82, 60, 148, 86, 68, 156, 90, 68, 156, 90, 68,
+ 148, 86, 68, 148, 82, 60, 156, 86, 68, 156, 94, 68, 156, 86, 68,
+ 164, 98, 68, 180, 110, 84, 188, 118, 92, 196, 122, 92, 196, 122, 100,
+ 188, 118, 92, 188, 118, 92, 180, 110, 92, 172, 106, 76, 172, 106, 76,
+ 180, 106, 84, 180, 106, 84, 172, 102, 76, 180, 110, 84, 188, 118, 92,
+ 196, 126, 100, 188, 118, 100, 180, 110, 84, 172, 106, 84, 188, 114, 84,
+ 188, 122, 100, 196, 122, 100, 188, 118, 92, 180, 114, 84, 180, 114, 92,
+ 188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 172, 102, 76,
+ 180, 110, 84, 196, 122, 100, 188, 122, 92, 188, 118, 92, 188, 118, 92,
+ 188, 122, 92, 188, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84,
+ 180, 110, 92, 180, 114, 84, 188, 114, 92, 180, 114, 84, 188, 114, 92,
+ 180, 114, 92, 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84,
+ 188, 118, 92, 188, 114, 92, 180, 114, 84, 188, 118, 92, 180, 114, 92,
+ 188, 114, 92, 188, 122, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92,
+ 196, 122, 100, 180, 114, 92, 188, 118, 92, 180, 110, 84, 180, 110, 84,
+ 196, 130, 100, 204, 134, 108, 196, 126, 100, 188, 118, 100, 188, 122, 92,
+ 188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 122, 100, 196, 122, 100,
+ 196, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 110, 84,
+ 180, 110, 84, 180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 110, 84,
+ 180, 110, 92, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 94, 68,
+ 172, 106, 84, 180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 110, 84,
+ 180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84,
+ 172, 106, 84, 172, 102, 84, 172, 102, 76, 164, 102, 84, 172, 110, 92,
+ 180, 114, 92, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 126, 108,
+ 188, 122, 100, 180, 118, 100, 172, 110, 92, 164, 106, 84, 172, 102, 84,
+ 172, 106, 84, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84,
+ 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
+ 172, 110, 92, 172, 110, 92, 172, 110, 84, 180, 110, 92, 172, 114, 92,
+ 180, 110, 92, 172, 106, 92, 172, 106, 84, 156, 94, 68, 172, 106, 92,
+ 180, 114, 92, 172, 102, 84, 164, 102, 84, 180, 110, 92, 172, 106, 92,
+ 164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 102, 84,
+ 172, 106, 84, 172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 106, 84,
+ 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 180, 114, 100,
+ 188, 118, 100, 180, 118, 100, 188, 126, 100, 148, 94, 76, 92, 34, 12,
+ 92, 34, 12, 116, 62, 44, 156, 94, 76, 164, 94, 84, 156, 94, 76,
+ 156, 94, 76, 148, 86, 68, 148, 86, 76, 148, 82, 68, 148, 78, 60,
+ 148, 82, 68, 156, 90, 68, 156, 94, 76, 164, 90, 76, 156, 90, 68,
+ 148, 82, 68, 148, 82, 60, 164, 94, 76, 156, 94, 76, 156, 94, 68,
+ 164, 94, 76, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
+ 156, 90, 68, 156, 90, 68, 156, 94, 76, 156, 90, 68, 148, 86, 68,
+ 148, 86, 68, 156, 90, 68, 156, 90, 68, 164, 98, 76, 172, 106, 84,
+ 180, 110, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 110, 84,
+ 188, 118, 92, 188, 118, 92, 180, 110, 84, 180, 106, 84, 180, 114, 84,
+ 180, 114, 84, 180, 114, 92, 188, 114, 84, 180, 114, 92, 188, 114, 84,
+ 188, 118, 92, 188, 114, 92, 180, 114, 92, 188, 114, 84, 180, 110, 84,
+ 196, 122, 100, 188, 118, 92, 188, 114, 92, 188, 114, 92, 188, 118, 92,
+ 188, 118, 92, 188, 118, 92, 180, 110, 84, 172, 106, 84, 188, 114, 92,
+ 196, 122, 100, 188, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 100,
+ 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 92, 188, 114, 92,
+ 188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 92, 196, 122, 100,
+ 188, 126, 100, 188, 118, 92, 180, 110, 84, 188, 114, 92, 188, 122, 100,
+ 196, 126, 100, 188, 118, 100, 196, 122, 92, 188, 114, 92, 180, 114, 92,
+ 196, 122, 92, 188, 122, 100, 188, 118, 92, 196, 122, 100, 196, 126, 100,
+ 188, 118, 92, 188, 118, 92, 172, 98, 76, 164, 94, 68, 180, 110, 92,
+ 188, 122, 92, 188, 114, 92, 180, 114, 84, 204, 130, 108, 196, 126, 100,
+ 188, 118, 92, 188, 122, 92, 196, 122, 100, 188, 122, 92, 188, 122, 92,
+ 188, 114, 92, 180, 114, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92,
+ 180, 110, 84, 172, 102, 76, 172, 102, 76, 180, 106, 84, 180, 110, 92,
+ 180, 106, 84, 172, 102, 76, 172, 98, 76, 164, 94, 76, 180, 106, 84,
+ 180, 110, 92, 180, 106, 84, 172, 102, 76, 172, 98, 84, 172, 102, 76,
+ 180, 110, 84, 180, 110, 84, 180, 106, 84, 180, 110, 92, 180, 114, 92,
+ 172, 110, 92, 172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 118, 100,
+ 188, 122, 100, 180, 122, 100, 188, 118, 100, 188, 126, 108, 188, 118, 100,
+ 180, 114, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92, 180, 114, 92,
+ 180, 114, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 164, 102, 84,
+ 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84,
+ 172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92,
+ 172, 114, 92, 180, 110, 92, 164, 98, 76, 172, 110, 92, 180, 114, 92,
+ 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 164, 102, 84,
+ 172, 106, 84, 172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84,
+ 172, 110, 92, 172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 84, 172, 110, 84, 172, 114, 92, 172, 110, 92, 172, 110, 84,
+ 172, 110, 84, 180, 106, 92, 172, 102, 84, 180, 106, 92, 172, 106, 92,
+ 172, 106, 92, 180, 122, 100, 148, 98, 76, 92, 34, 12, 100, 42, 28,
+ 116, 54, 36, 148, 86, 68, 148, 90, 76, 148, 86, 76, 148, 86, 76,
+ 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60,
+ 148, 82, 60, 156, 86, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68,
+ 148, 86, 68, 172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
+ 172, 106, 84, 172, 106, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76,
+ 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 94, 76, 164, 94, 76,
+ 156, 94, 76, 164, 98, 76, 180, 110, 84, 188, 114, 84, 188, 114, 92,
+ 180, 106, 84, 188, 114, 84, 188, 118, 92, 188, 114, 92, 188, 118, 92,
+ 188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 114, 92, 188, 118, 92,
+ 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92,
+ 188, 118, 92, 188, 118, 92, 188, 114, 92, 180, 110, 84, 196, 122, 100,
+ 188, 118, 92, 180, 114, 84, 188, 114, 92, 188, 122, 92, 196, 122, 100,
+ 188, 118, 92, 188, 114, 92, 180, 110, 84, 188, 118, 92, 196, 122, 100,
+ 196, 122, 92, 188, 118, 92, 188, 118, 100, 196, 122, 92, 188, 118, 92,
+ 196, 122, 100, 196, 122, 92, 196, 122, 100, 188, 122, 92, 196, 122, 100,
+ 188, 122, 92, 196, 122, 100, 196, 122, 100, 196, 122, 100, 196, 122, 92,
+ 188, 114, 92, 180, 110, 84, 188, 114, 84, 188, 118, 92, 196, 122, 92,
+ 188, 118, 92, 188, 122, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92,
+ 196, 122, 92, 188, 118, 92, 188, 118, 92, 196, 126, 100, 204, 130, 108,
+ 204, 134, 108, 188, 122, 92, 180, 106, 84, 188, 114, 92, 188, 118, 92,
+ 188, 118, 92, 196, 122, 100, 204, 134, 108, 196, 130, 100, 196, 122, 100,
+ 188, 122, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92,
+ 188, 114, 84, 180, 110, 84, 180, 110, 84, 188, 114, 92, 180, 110, 84,
+ 180, 106, 84, 180, 106, 84, 188, 114, 92, 188, 118, 92, 188, 114, 92,
+ 180, 110, 92, 180, 106, 84, 172, 102, 84, 180, 110, 84, 188, 118, 92,
+ 180, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 92,
+ 188, 114, 92, 180, 110, 92, 180, 110, 84, 188, 114, 92, 188, 114, 100,
+ 180, 114, 92, 172, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 108,
+ 188, 122, 100, 180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 114, 92,
+ 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92,
+ 180, 110, 92, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84,
+ 164, 106, 84, 172, 106, 84, 180, 110, 92, 172, 114, 92, 180, 110, 92,
+ 172, 110, 92, 180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 110, 84,
+ 180, 110, 92, 164, 102, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 84, 172, 110, 92, 172, 106, 84, 180, 114, 92,
+ 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 110, 84,
+ 172, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 84, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 118, 92, 180, 114, 92, 180, 114, 92,
+ 188, 118, 100, 188, 114, 92, 196, 122, 108, 188, 118, 100, 180, 118, 100,
+ 188, 130, 108, 156, 106, 84, 100, 42, 28, 84, 30, 12, 116, 54, 36,
+ 156, 90, 76, 156, 90, 76, 156, 90, 68, 156, 94, 76, 148, 86, 68,
+ 164, 94, 84, 156, 94, 76, 156, 90, 76, 148, 86, 68, 148, 78, 60,
+ 148, 78, 60, 148, 86, 68, 164, 94, 76, 164, 94, 76, 172, 98, 84,
+ 164, 98, 76, 164, 102, 76, 172, 106, 84, 180, 110, 92, 180, 118, 100,
+ 180, 118, 100, 180, 110, 92, 172, 110, 92, 164, 98, 76, 164, 94, 76,
+ 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 172, 102, 84,
+ 164, 102, 76, 188, 118, 92, 188, 122, 100, 196, 122, 100, 188, 114, 92,
+ 180, 114, 92, 188, 114, 92, 196, 122, 100, 196, 122, 100, 188, 118, 92,
+ 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 110, 84,
+ 196, 122, 100, 196, 122, 100, 188, 122, 92, 196, 122, 100, 196, 126, 100,
+ 196, 122, 100, 188, 118, 92, 188, 118, 92, 196, 122, 100, 188, 118, 92,
+ 188, 114, 92, 188, 118, 92, 196, 122, 100, 196, 126, 100, 196, 122, 100,
+ 188, 118, 92, 188, 114, 84, 188, 122, 92, 196, 122, 100, 188, 122, 92,
+ 188, 118, 92, 196, 122, 100, 196, 122, 92, 188, 118, 92, 196, 122, 100,
+ 196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 126, 100, 196, 126, 100,
+ 196, 122, 100, 196, 126, 100, 196, 122, 100, 196, 126, 100, 196, 122, 100,
+ 188, 118, 92, 188, 118, 100, 196, 126, 100, 196, 126, 100, 196, 122, 100,
+ 196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 122, 100, 196, 122, 92,
+ 188, 114, 92, 188, 114, 92, 188, 122, 92, 188, 114, 92, 204, 130, 108,
+ 196, 126, 100, 188, 118, 92, 188, 118, 92, 188, 118, 92, 196, 122, 100,
+ 196, 126, 100, 204, 130, 108, 196, 126, 100, 196, 122, 100, 188, 118, 92,
+ 196, 122, 100, 196, 126, 100, 196, 122, 100, 188, 118, 92, 188, 114, 92,
+ 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 92, 180, 114, 84,
+ 188, 114, 92, 196, 126, 100, 196, 122, 100, 188, 114, 92, 180, 110, 84,
+ 180, 106, 84, 172, 98, 76, 180, 110, 92, 188, 114, 92, 172, 102, 84,
+ 196, 126, 100, 188, 114, 92, 188, 114, 92, 188, 114, 92, 188, 114, 92,
+ 180, 110, 84, 188, 114, 92, 188, 114, 92, 188, 122, 100, 180, 118, 100,
+ 180, 114, 92, 180, 118, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100,
+ 180, 118, 100, 188, 122, 100, 180, 118, 100, 180, 110, 92, 180, 114, 100,
+ 180, 118, 100, 188, 118, 100, 172, 114, 92, 172, 106, 84, 172, 110, 92,
+ 172, 106, 92, 172, 102, 84, 164, 102, 84, 172, 102, 76, 172, 106, 84,
+ 172, 106, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
+ 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 118, 100, 180, 118, 100,
+ 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 114, 92, 172, 114, 92,
+ 172, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 92, 172, 110, 84,
+ 172, 106, 84, 180, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 118, 92, 180, 118, 92, 180, 114, 92, 180, 118, 92, 188, 114, 100,
+ 180, 110, 92, 188, 122, 108, 188, 122, 100, 180, 118, 108, 188, 126, 108,
+ 148, 90, 76, 84, 30, 12, 92, 38, 28, 140, 78, 60, 156, 90, 68,
+ 156, 90, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76,
+ 164, 94, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 86, 68,
+ 148, 86, 68, 156, 86, 68, 156, 94, 76, 164, 102, 76, 180, 110, 92,
+ 172, 102, 84, 172, 98, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100,
+ 188, 114, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 90, 68,
+ 156, 86, 68, 164, 94, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92,
+ 188, 114, 92, 196, 126, 100, 196, 126, 100, 188, 118, 92, 180, 110, 92,
+ 188, 118, 92, 196, 130, 108, 196, 126, 100, 196, 122, 100, 188, 126, 100,
+ 196, 126, 108, 196, 126, 100, 196, 122, 100, 180, 118, 92, 188, 114, 92,
+ 188, 118, 92, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 188, 118, 92, 188, 118, 92, 196, 126, 100, 188, 122, 100, 196, 122, 100,
+ 188, 122, 100, 196, 126, 100, 196, 130, 100, 196, 126, 108, 196, 130, 100,
+ 196, 122, 100, 188, 122, 100, 196, 126, 108, 196, 126, 100, 204, 130, 108,
+ 196, 130, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100, 196, 126, 100,
+ 188, 122, 100, 196, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 100,
+ 196, 130, 100, 196, 130, 108, 196, 130, 100, 196, 126, 100, 196, 126, 100,
+ 204, 130, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100, 196, 122, 100,
+ 196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 126, 108, 196, 130, 100,
+ 196, 122, 100, 188, 122, 100, 196, 126, 100, 204, 134, 108, 204, 134, 108,
+ 196, 126, 100, 188, 114, 92, 188, 118, 92, 188, 122, 100, 196, 126, 100,
+ 196, 130, 108, 196, 126, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100,
+ 188, 122, 92, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100,
+ 196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100, 188, 118, 92,
+ 188, 118, 100, 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100,
+ 188, 118, 92, 188, 118, 92, 188, 114, 92, 188, 118, 92, 188, 122, 100,
+ 188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 102, 84, 172, 106, 84,
+ 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 180, 118, 100,
+ 188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100,
+ 196, 130, 108, 180, 114, 92, 172, 106, 84, 172, 110, 92, 180, 114, 92,
+ 172, 110, 92, 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 92, 164, 102, 84, 164, 98, 84, 172, 102, 84,
+ 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92,
+ 172, 106, 92, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84,
+ 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92, 172, 110, 92,
+ 180, 114, 92, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 172, 110, 92, 180, 110, 84, 172, 110, 92, 172, 110, 92,
+ 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 118, 100,
+ 180, 118, 100, 180, 114, 92, 180, 114, 92, 172, 102, 84, 172, 102, 84,
+ 180, 106, 92, 164, 94, 84, 156, 94, 76, 172, 110, 100, 140, 82, 68,
+ 92, 38, 28, 92, 34, 20, 124, 58, 44, 140, 78, 60, 148, 86, 68,
+ 156, 90, 68, 156, 94, 76, 164, 94, 76, 148, 90, 68, 156, 90, 68,
+ 164, 94, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 148, 86, 60,
+ 148, 86, 68, 156, 90, 68, 164, 94, 76, 164, 98, 76, 156, 94, 76,
+ 156, 94, 76, 172, 98, 84, 180, 110, 92, 180, 118, 100, 188, 114, 100,
+ 180, 114, 92, 172, 102, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76,
+ 156, 90, 68, 164, 94, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76,
+ 180, 110, 92, 196, 126, 100, 196, 126, 108, 204, 130, 100, 196, 126, 108,
+ 196, 130, 108, 196, 126, 100, 188, 122, 100, 196, 122, 100, 196, 126, 100,
+ 196, 126, 100, 188, 122, 100, 188, 118, 92, 196, 130, 108, 196, 134, 108,
+ 204, 134, 108, 204, 134, 108, 196, 130, 108, 196, 130, 108, 196, 126, 108,
+ 196, 130, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100, 196, 126, 100,
+ 196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 126, 100, 188, 122, 100,
+ 196, 126, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100,
+ 196, 126, 100, 196, 126, 108, 204, 130, 108, 196, 130, 108, 196, 130, 108,
+ 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108, 204, 130, 108,
+ 196, 130, 108, 196, 126, 100, 188, 126, 108, 196, 126, 100, 196, 126, 108,
+ 196, 130, 108, 196, 126, 100, 196, 126, 100, 196, 126, 100, 188, 126, 100,
+ 196, 126, 100, 196, 126, 108, 196, 130, 100, 196, 126, 108, 188, 126, 100,
+ 196, 122, 100, 188, 126, 100, 196, 130, 108, 196, 130, 108, 188, 122, 100,
+ 180, 114, 92, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 188, 122, 100, 188, 118, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100,
+ 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 122, 92, 188, 118, 100,
+ 188, 118, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 180, 118, 92,
+ 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 188, 118, 92, 196, 126, 100, 188, 118, 100,
+ 188, 122, 100, 188, 118, 92, 180, 110, 84, 180, 114, 92, 188, 122, 100,
+ 188, 122, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 118, 100, 180, 118, 100, 180, 114, 92, 172, 110, 92, 172, 106, 84,
+ 164, 94, 76, 164, 102, 84, 180, 114, 92, 180, 118, 100, 172, 106, 84,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84,
+ 172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 106, 84, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92,
+ 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 172, 110, 92,
+ 180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 118, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100,
+ 188, 118, 92, 180, 118, 100, 180, 118, 100, 188, 118, 100, 180, 110, 92,
+ 172, 110, 100, 180, 114, 100, 180, 118, 100, 180, 118, 100, 180, 118, 100,
+ 188, 122, 100, 188, 118, 100, 180, 106, 84, 172, 102, 84, 188, 114, 100,
+ 164, 98, 76, 164, 98, 84, 172, 110, 100, 132, 78, 68, 92, 34, 20,
+ 92, 34, 20, 132, 70, 52, 156, 90, 68, 164, 102, 76, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 156, 90, 68, 156, 94, 76, 148, 82, 60,
+ 148, 86, 68, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60,
+ 148, 82, 60, 148, 86, 68, 148, 82, 68, 148, 82, 60, 156, 82, 68,
+ 156, 90, 68, 164, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 164, 102, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 156, 82, 60,
+ 140, 78, 60, 140, 70, 52, 132, 70, 52, 156, 82, 60, 172, 98, 76,
+ 188, 114, 92, 196, 122, 100, 196, 126, 100, 196, 126, 108, 196, 130, 108,
+ 196, 130, 108, 196, 126, 100, 188, 126, 100, 196, 126, 100, 188, 126, 100,
+ 196, 126, 100, 188, 122, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108,
+ 196, 130, 108, 196, 122, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100,
+ 196, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100,
+ 188, 126, 100, 188, 122, 100, 188, 122, 100, 196, 122, 100, 188, 122, 100,
+ 196, 126, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100,
+ 188, 126, 100, 196, 126, 100, 196, 126, 100, 196, 130, 108, 196, 126, 100,
+ 196, 126, 100, 196, 126, 108, 196, 126, 100, 188, 122, 100, 196, 130, 108,
+ 196, 130, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 204, 130, 108,
+ 196, 130, 108, 196, 126, 108, 196, 130, 108, 204, 134, 108, 196, 130, 108,
+ 196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 134, 108,
+ 204, 130, 108, 204, 134, 116, 196, 130, 108, 196, 122, 100, 188, 122, 100,
+ 196, 126, 108, 196, 126, 100, 196, 126, 100, 188, 118, 100, 188, 118, 92,
+ 188, 118, 92, 188, 122, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100,
+ 188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100,
+ 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 188, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 114, 92,
+ 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 122, 100,
+ 188, 122, 100, 180, 110, 92, 180, 114, 92, 188, 122, 100, 188, 122, 100,
+ 188, 118, 100, 180, 118, 100, 180, 118, 100, 188, 122, 100, 188, 122, 100,
+ 188, 122, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 164, 102, 76,
+ 164, 102, 84, 188, 118, 100, 180, 118, 100, 172, 106, 84, 164, 102, 84,
+ 172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 110, 92,
+ 172, 106, 84, 180, 110, 92, 172, 110, 92, 180, 110, 92, 180, 110, 92,
+ 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 110, 92, 180, 110, 84,
+ 180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92,
+ 180, 110, 92, 172, 110, 92, 172, 110, 92, 172, 106, 92, 172, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 100,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 100, 180, 114, 92,
+ 180, 114, 92, 180, 114, 100, 180, 118, 92, 180, 122, 100, 188, 122, 100,
+ 188, 122, 100, 188, 118, 100, 180, 110, 92, 188, 114, 100, 172, 102, 92,
+ 172, 106, 92, 180, 118, 100, 132, 78, 68, 92, 34, 20, 92, 34, 20,
+ 132, 74, 60, 156, 90, 68, 164, 94, 76, 148, 90, 68, 156, 86, 68,
+ 156, 90, 68, 156, 90, 68, 164, 98, 84, 156, 90, 68, 156, 90, 68,
+ 156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 84, 164, 102, 76,
+ 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 110, 92, 164, 98, 84, 164, 94, 76,
+ 156, 90, 68, 156, 90, 68, 172, 102, 84, 180, 110, 92, 188, 118, 92,
+ 196, 122, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 92,
+ 188, 118, 100, 188, 118, 100, 180, 114, 92, 188, 114, 92, 188, 118, 100,
+ 188, 118, 92, 196, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100,
+ 180, 118, 92, 188, 118, 92, 188, 122, 100, 196, 122, 100, 196, 126, 108,
+ 188, 126, 100, 188, 122, 100, 196, 122, 100, 188, 126, 100, 196, 122, 100,
+ 188, 122, 100, 188, 118, 92, 180, 110, 92, 180, 114, 92, 188, 118, 92,
+ 180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 114, 92, 188, 114, 92,
+ 188, 126, 100, 196, 126, 108, 196, 126, 100, 196, 130, 108, 196, 126, 108,
+ 188, 126, 100, 188, 126, 100, 196, 122, 100, 188, 122, 100, 188, 122, 100,
+ 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 126, 100, 188, 122, 100,
+ 188, 118, 92, 196, 130, 108, 196, 130, 108, 196, 126, 108, 196, 126, 100,
+ 196, 130, 108, 196, 130, 108, 196, 130, 108, 204, 130, 108, 196, 130, 108,
+ 196, 130, 100, 196, 122, 100, 180, 118, 92, 188, 118, 92, 188, 122, 100,
+ 196, 126, 100, 180, 118, 100, 188, 118, 92, 180, 118, 92, 180, 114, 92,
+ 188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 188, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 92,
+ 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 110, 92, 188, 114, 92,
+ 188, 122, 92, 180, 118, 92, 180, 110, 92, 180, 110, 92, 180, 118, 92,
+ 196, 122, 100, 188, 118, 100, 180, 114, 92, 188, 122, 100, 188, 118, 92,
+ 180, 110, 92, 180, 114, 84, 188, 118, 100, 180, 118, 92, 188, 118, 100,
+ 188, 122, 100, 188, 122, 100, 188, 122, 108, 188, 122, 100, 188, 122, 100,
+ 180, 114, 92, 172, 106, 84, 164, 98, 84, 156, 94, 76, 164, 94, 76,
+ 164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 106, 84, 188, 122, 100,
+ 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92,
+ 180, 110, 84, 172, 110, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84,
+ 172, 106, 92, 172, 102, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
+ 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 92,
+ 172, 106, 84, 172, 106, 92, 180, 110, 92, 172, 110, 92, 180, 106, 92,
+ 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 92, 180, 118, 92,
+ 188, 118, 100, 188, 114, 100, 188, 118, 100, 180, 110, 92, 180, 118, 108,
+ 180, 122, 108, 132, 78, 68, 92, 34, 20, 92, 34, 20, 108, 50, 28,
+ 132, 66, 52, 140, 74, 52, 132, 70, 52, 140, 74, 52, 140, 78, 60,
+ 148, 86, 60, 164, 94, 76, 156, 94, 68, 156, 94, 76, 164, 98, 76,
+ 164, 102, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84,
+ 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92,
+ 180, 114, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 188, 114, 100,
+ 188, 122, 100, 180, 110, 84, 188, 114, 92, 180, 114, 92, 188, 114, 92,
+ 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 84,
+ 180, 114, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84,
+ 180, 110, 92, 188, 118, 92, 188, 122, 100, 180, 114, 84, 180, 110, 92,
+ 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 106, 84,
+ 172, 106, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84,
+ 172, 110, 92, 180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 118, 92,
+ 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 92, 188, 118, 100,
+ 188, 118, 92, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
+ 188, 114, 92, 188, 118, 92, 188, 122, 92, 188, 118, 100, 196, 122, 92,
+ 188, 122, 100, 188, 118, 100, 188, 122, 92, 188, 118, 100, 188, 118, 92,
+ 180, 114, 92, 172, 106, 84, 180, 110, 92, 180, 118, 92, 188, 114, 92,
+ 172, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 92, 180, 110, 84,
+ 172, 110, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84,
+ 172, 106, 76, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84,
+ 172, 106, 84, 172, 102, 84, 172, 102, 76, 180, 106, 84, 180, 114, 92,
+ 188, 118, 92, 180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 110, 84,
+ 180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 114, 92, 172, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84, 164, 98, 84,
+ 156, 94, 76, 140, 74, 52, 140, 78, 60, 148, 86, 68, 156, 90, 68,
+ 156, 94, 76, 156, 98, 76, 172, 102, 84, 172, 110, 92, 172, 106, 92,
+ 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
+ 172, 102, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 92,
+ 172, 106, 84, 172, 106, 84, 172, 110, 92, 164, 102, 84, 172, 102, 84,
+ 164, 106, 84, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 92, 172, 106, 92, 164, 102, 84, 172, 102, 84,
+ 164, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
+ 180, 106, 92, 180, 110, 92, 172, 102, 92, 172, 114, 100, 180, 118, 100,
+ 132, 74, 60, 92, 34, 20, 92, 34, 12, 124, 58, 44, 148, 78, 60,
+ 148, 90, 68, 156, 86, 68, 156, 94, 76, 156, 94, 76, 156, 90, 68,
+ 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 68, 164, 94, 76,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 156, 98, 76, 164, 94, 76,
+ 164, 98, 76, 164, 98, 84, 164, 98, 84, 172, 102, 76, 164, 102, 84,
+ 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92, 180, 106, 84,
+ 172, 106, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92,
+ 180, 110, 92, 180, 106, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92,
+ 188, 114, 92, 188, 118, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92,
+ 188, 122, 100, 188, 122, 100, 188, 118, 92, 180, 118, 92, 188, 118, 92,
+ 188, 118, 100, 188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 118, 92,
+ 188, 122, 100, 196, 130, 108, 188, 114, 92, 180, 114, 92, 180, 118, 92,
+ 188, 118, 92, 188, 118, 100, 188, 118, 92, 180, 114, 92, 180, 110, 84,
+ 180, 110, 92, 180, 114, 84, 180, 114, 92, 180, 114, 92, 188, 118, 92,
+ 188, 118, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100,
+ 188, 122, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 122, 100,
+ 196, 122, 100, 188, 126, 100, 188, 122, 100, 188, 122, 92, 188, 122, 100,
+ 196, 122, 100, 188, 126, 100, 196, 122, 100, 188, 118, 92, 180, 118, 92,
+ 188, 118, 100, 188, 118, 92, 188, 122, 100, 188, 122, 100, 188, 122, 100,
+ 188, 122, 100, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 114, 92,
+ 180, 110, 84, 180, 110, 92, 188, 118, 92, 180, 114, 92, 180, 110, 92,
+ 188, 118, 92, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 92,
+ 180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84, 180, 110, 84,
+ 180, 106, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92,
+ 180, 110, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92,
+ 172, 110, 84, 172, 110, 84, 180, 110, 92, 188, 118, 92, 188, 118, 92,
+ 180, 114, 92, 188, 118, 100, 188, 118, 92, 180, 110, 92, 180, 114, 84,
+ 188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 110, 92,
+ 172, 110, 92, 172, 110, 92, 172, 102, 84, 164, 98, 76, 156, 94, 76,
+ 156, 94, 68, 172, 102, 76, 172, 110, 92, 172, 110, 84, 172, 106, 92,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 106, 92,
+ 172, 106, 84, 172, 106, 92, 172, 102, 84, 172, 102, 84, 172, 106, 92,
+ 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84,
+ 172, 106, 84, 172, 102, 84, 172, 106, 92, 172, 102, 84, 164, 98, 76,
+ 164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84,
+ 172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 98, 76,
+ 172, 102, 84, 172, 102, 84, 172, 102, 84, 164, 98, 84, 164, 102, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 98, 76,
+ 172, 98, 84, 164, 94, 84, 172, 110, 92, 172, 110, 100, 116, 62, 52,
+ 92, 34, 12, 92, 34, 20, 148, 90, 68, 172, 106, 84, 172, 110, 92,
+ 172, 106, 84, 172, 110, 84, 180, 110, 92, 164, 102, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 110, 92, 172, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84,
+ 172, 106, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 110, 92,
+ 180, 110, 92, 188, 118, 100, 188, 114, 100, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 172, 110, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100,
+ 188, 118, 92, 196, 122, 100, 196, 126, 108, 204, 130, 108, 188, 122, 100,
+ 188, 118, 100, 180, 118, 92, 180, 114, 92, 188, 122, 100, 196, 122, 100,
+ 188, 122, 100, 188, 118, 92, 180, 110, 92, 196, 122, 100, 188, 126, 100,
+ 196, 126, 100, 188, 122, 100, 188, 122, 100, 196, 126, 100, 196, 126, 108,
+ 196, 130, 108, 196, 130, 108, 196, 126, 100, 196, 126, 108, 196, 130, 108,
+ 196, 134, 108, 204, 134, 108, 196, 130, 108, 188, 126, 108, 188, 118, 92,
+ 180, 114, 92, 180, 106, 84, 180, 110, 84, 180, 114, 92, 180, 118, 92,
+ 188, 118, 92, 180, 118, 92, 188, 126, 100, 188, 122, 100, 196, 126, 100,
+ 196, 126, 100, 196, 126, 100, 196, 130, 108, 204, 130, 108, 196, 130, 108,
+ 196, 122, 100, 188, 122, 100, 188, 118, 100, 188, 118, 92, 188, 122, 100,
+ 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100, 188, 118, 92,
+ 180, 114, 92, 188, 118, 92, 188, 118, 100, 188, 122, 92, 188, 122, 100,
+ 196, 122, 100, 180, 118, 92, 188, 118, 92, 180, 114, 92, 172, 110, 84,
+ 180, 110, 84, 180, 114, 92, 188, 118, 92, 180, 114, 92, 180, 118, 92,
+ 188, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
+ 180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 114, 84,
+ 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
+ 180, 114, 84, 180, 114, 92, 180, 118, 92, 180, 110, 92, 172, 106, 84,
+ 180, 110, 84, 180, 110, 84, 164, 102, 76, 172, 102, 84, 180, 110, 84,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
+ 172, 110, 84, 172, 106, 92, 172, 106, 84, 164, 98, 76, 180, 118, 100,
+ 188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92, 172, 106, 92,
+ 172, 106, 84, 164, 102, 84, 180, 106, 84, 172, 106, 92, 180, 110, 92,
+ 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92,
+ 172, 98, 84, 164, 102, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92,
+ 180, 106, 84, 172, 110, 92, 180, 106, 92, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 172, 102, 84, 164, 102, 84,
+ 172, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 172, 102, 84,
+ 172, 102, 92, 164, 102, 84, 172, 102, 84, 164, 106, 84, 164, 106, 84,
+ 164, 102, 76, 172, 102, 84, 164, 98, 76, 172, 102, 84, 172, 102, 84,
+ 164, 94, 84, 172, 106, 92, 164, 106, 92, 116, 62, 52, 92, 34, 20,
+ 100, 46, 28, 148, 86, 76, 164, 98, 76, 164, 98, 76, 156, 90, 76,
+ 164, 98, 76, 164, 102, 84, 172, 102, 84, 172, 106, 84, 164, 102, 84,
+ 164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 110, 92,
+ 180, 110, 92, 172, 110, 84, 180, 110, 92, 180, 106, 92, 172, 106, 84,
+ 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 172, 110, 92,
+ 172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 180, 106, 92,
+ 180, 110, 84, 172, 106, 84, 172, 102, 84, 180, 110, 92, 172, 102, 76,
+ 172, 98, 76, 172, 106, 84, 180, 106, 84, 172, 98, 76, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 172, 102, 76, 172, 110, 84, 172, 106, 84,
+ 172, 98, 76, 156, 94, 68, 164, 94, 68, 164, 94, 76, 164, 98, 76,
+ 164, 94, 68, 164, 94, 68, 156, 90, 68, 164, 94, 68, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
+ 172, 106, 84, 172, 102, 76, 164, 98, 76, 172, 106, 84, 164, 98, 76,
+ 148, 86, 60, 148, 82, 60, 156, 90, 68, 164, 94, 76, 164, 98, 76,
+ 164, 94, 76, 172, 98, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 172, 106, 84,
+ 172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84,
+ 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 102, 84, 172, 102, 76,
+ 164, 102, 84, 172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 114, 92,
+ 172, 102, 76, 172, 106, 84, 172, 102, 84, 164, 94, 76, 164, 98, 76,
+ 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 172, 98, 76,
+ 164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 164, 102, 76,
+ 172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 102, 76, 164, 102, 76,
+ 172, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 84,
+ 172, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84,
+ 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 76, 156, 90, 68, 164, 94, 68, 164, 98, 76, 164, 98, 76,
+ 164, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76,
+ 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68,
+ 156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 90, 68, 156, 90, 68,
+ 156, 94, 76, 156, 86, 68, 156, 90, 68, 164, 98, 76, 164, 94, 76,
+ 164, 94, 76, 164, 98, 76, 172, 102, 84, 180, 114, 92, 164, 102, 76,
+ 172, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
+ 180, 110, 92, 180, 114, 92, 172, 106, 92, 180, 110, 92, 172, 110, 92,
+ 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
+ 172, 110, 84, 172, 110, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 172, 110, 92, 172, 110, 84, 172, 106, 84, 172, 102, 92, 172, 106, 84,
+ 172, 106, 92, 172, 110, 92, 172, 110, 92, 172, 110, 92, 180, 106, 84,
+ 172, 106, 84, 180, 106, 92, 180, 110, 92, 180, 110, 100, 172, 102, 84,
+ 180, 114, 100, 172, 110, 100, 124, 66, 52, 100, 46, 28, 100, 42, 28,
+ 148, 78, 68, 156, 90, 68, 156, 94, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 156, 90, 68, 148, 82, 60, 148, 82, 68, 148, 86, 60,
+ 148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 90, 68, 148, 86, 68,
+ 156, 90, 68, 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76,
+ 156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76, 172, 102, 84,
+ 156, 90, 68, 164, 94, 76, 164, 98, 76, 164, 94, 76, 156, 86, 68,
+ 156, 94, 76, 180, 110, 92, 172, 98, 76, 172, 102, 76, 172, 102, 84,
+ 164, 98, 76, 172, 98, 76, 180, 110, 84, 188, 122, 100, 188, 118, 92,
+ 180, 114, 92, 188, 118, 100, 188, 118, 92, 188, 122, 100, 180, 114, 92,
+ 180, 110, 92, 172, 102, 76, 172, 106, 84, 188, 118, 92, 188, 122, 100,
+ 188, 122, 100, 188, 118, 92, 188, 118, 100, 188, 118, 92, 172, 102, 76,
+ 172, 102, 76, 180, 106, 84, 180, 110, 92, 180, 114, 92, 188, 118, 92,
+ 188, 114, 92, 180, 114, 92, 188, 114, 92, 188, 118, 100, 188, 118, 92,
+ 180, 114, 92, 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
+ 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76, 164, 98, 76,
+ 172, 102, 76, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 106, 84,
+ 180, 110, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84, 180, 106, 84,
+ 180, 110, 92, 172, 106, 76, 172, 110, 84, 180, 110, 92, 180, 110, 84,
+ 180, 106, 84, 172, 106, 84, 180, 106, 84, 172, 110, 84, 180, 110, 84,
+ 172, 102, 84, 172, 102, 76, 172, 102, 76, 164, 94, 68, 164, 98, 76,
+ 172, 102, 76, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 94, 76,
+ 164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 98, 76,
+ 164, 102, 84, 172, 98, 76, 164, 98, 76, 172, 102, 76, 164, 98, 76,
+ 156, 90, 68, 156, 90, 68, 164, 94, 76, 172, 102, 76, 172, 106, 84,
+ 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76,
+ 164, 98, 76, 164, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84,
+ 164, 94, 68, 164, 94, 76, 172, 102, 76, 164, 98, 76, 164, 102, 76,
+ 164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76, 156, 94, 76,
+ 156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76,
+ 164, 98, 76, 156, 94, 76, 156, 86, 68, 148, 86, 68, 148, 82, 60,
+ 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 82, 60,
+ 148, 86, 68, 156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 86, 68,
+ 148, 78, 60, 148, 82, 60, 156, 86, 68, 156, 90, 76, 156, 90, 68,
+ 156, 86, 68, 148, 86, 60, 156, 86, 68, 148, 86, 68, 148, 86, 68,
+ 156, 90, 68, 156, 90, 68, 164, 94, 76, 156, 94, 76, 156, 86, 68,
+ 156, 90, 68, 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68,
+ 156, 86, 68, 148, 86, 68, 156, 86, 68, 156, 86, 68, 156, 90, 68,
+ 156, 90, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 172, 106, 84,
+ 172, 102, 84, 164, 90, 76, 172, 102, 84, 172, 102, 84, 164, 102, 92,
+ 164, 102, 92, 124, 70, 60, 100, 42, 28, 84, 30, 12, 132, 70, 52,
+ 140, 74, 60, 148, 78, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60,
+ 140, 78, 60, 140, 74, 52, 148, 78, 60, 148, 82, 60, 148, 82, 60,
+ 148, 82, 68, 156, 86, 60, 156, 90, 68, 156, 90, 68, 156, 90, 76,
+ 148, 82, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68,
+ 156, 86, 68, 156, 90, 68, 164, 90, 76, 172, 102, 84, 156, 94, 76,
+ 156, 90, 68, 172, 98, 84, 164, 102, 84, 164, 94, 76, 164, 94, 76,
+ 172, 102, 84, 180, 110, 84, 180, 110, 92, 188, 114, 92, 180, 110, 84,
+ 180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 92, 180, 118, 92,
+ 188, 114, 92, 188, 118, 92, 180, 118, 92, 180, 114, 92, 180, 110, 84,
+ 180, 114, 92, 180, 118, 92, 188, 118, 100, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 188, 118, 92, 188, 122, 100, 180, 114, 92, 180, 114, 92,
+ 180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 84,
+ 172, 102, 84, 172, 106, 76, 180, 110, 92, 188, 118, 92, 188, 118, 100,
+ 188, 118, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84,
+ 180, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
+ 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 106, 84, 180, 110, 84,
+ 180, 114, 92, 180, 110, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
+ 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 84, 172, 106, 84,
+ 172, 106, 84, 180, 106, 84, 180, 110, 92, 180, 110, 92, 172, 106, 76,
+ 172, 106, 84, 172, 106, 84, 164, 94, 76, 164, 98, 76, 172, 106, 84,
+ 172, 102, 76, 172, 102, 76, 164, 102, 76, 172, 98, 76, 164, 102, 76,
+ 172, 102, 84, 172, 106, 76, 172, 102, 84, 172, 102, 76, 172, 102, 76,
+ 164, 102, 84, 172, 102, 76, 172, 102, 84, 172, 102, 76, 164, 94, 68,
+ 164, 94, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 172, 106, 84,
+ 172, 102, 76, 172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 76,
+ 172, 102, 76, 164, 98, 76, 172, 102, 84, 172, 106, 76, 164, 94, 76,
+ 164, 98, 76, 172, 102, 76, 164, 98, 76, 172, 102, 84, 164, 98, 76,
+ 156, 94, 76, 164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76, 164, 102, 84,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 94, 76,
+ 156, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68, 156, 86, 68,
+ 156, 90, 68, 164, 94, 76, 164, 94, 76, 156, 90, 68, 156, 86, 68,
+ 156, 86, 68, 156, 94, 76, 164, 98, 76, 164, 94, 76, 156, 90, 76,
+ 156, 86, 68, 148, 90, 68, 156, 90, 68, 156, 94, 68, 156, 94, 76,
+ 156, 94, 76, 156, 94, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76,
+ 164, 94, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68,
+ 156, 90, 68, 164, 94, 84, 156, 94, 76, 164, 98, 84, 164, 98, 76,
+ 164, 102, 76, 156, 98, 76, 164, 98, 76, 164, 94, 68, 156, 82, 68,
+ 132, 66, 44, 140, 70, 52, 148, 78, 68, 156, 90, 76, 156, 102, 84,
+ 124, 66, 52, 84, 30, 12, 92, 38, 28, 132, 66, 52, 140, 74, 52,
+ 132, 74, 60, 132, 66, 44, 124, 66, 44, 140, 70, 52, 140, 78, 60,
+ 148, 82, 60, 148, 82, 68, 148, 86, 60, 148, 86, 68, 156, 86, 68,
+ 148, 90, 68, 156, 90, 76, 156, 94, 68, 156, 94, 76, 164, 90, 68,
+ 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84, 164, 98, 84,
+ 172, 98, 76, 164, 102, 84, 172, 102, 84, 172, 98, 84, 164, 98, 76,
+ 172, 102, 84, 180, 110, 84, 180, 110, 92, 172, 110, 92, 172, 102, 76,
+ 180, 106, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 106, 84,
+ 172, 102, 84, 180, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 188, 114, 92, 180, 110, 92, 172, 110, 84, 188, 118, 100,
+ 188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92,
+ 180, 114, 92, 188, 118, 92, 188, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 102, 84, 172, 102, 76,
+ 172, 102, 76, 172, 110, 84, 188, 118, 100, 188, 122, 100, 188, 118, 92,
+ 188, 118, 100, 188, 122, 92, 188, 122, 100, 172, 110, 84, 180, 110, 92,
+ 180, 114, 84, 180, 114, 92, 188, 114, 92, 180, 118, 92, 188, 114, 92,
+ 180, 118, 92, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 114, 84,
+ 180, 114, 92, 188, 114, 92, 180, 114, 92, 180, 114, 84, 172, 106, 84,
+ 180, 106, 84, 172, 110, 92, 180, 110, 84, 180, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 106, 84, 172, 110, 84,
+ 172, 102, 84, 172, 102, 84, 164, 102, 76, 172, 102, 76, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 76,
+ 172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 98, 76, 172, 102, 76,
+ 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
+ 172, 106, 84, 180, 110, 92, 180, 110, 84, 172, 110, 84, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 180, 110, 84, 164, 98, 76, 164, 98, 76,
+ 172, 106, 84, 164, 102, 76, 172, 102, 84, 164, 98, 84, 164, 98, 76,
+ 172, 106, 84, 172, 110, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84,
+ 172, 106, 84, 164, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
+ 156, 94, 76, 164, 98, 76, 172, 106, 84, 172, 102, 76, 164, 98, 84,
+ 172, 102, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
+ 172, 102, 84, 172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68,
+ 156, 90, 68, 164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76,
+ 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 76, 164, 98, 76,
+ 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 94, 76,
+ 164, 98, 84, 172, 102, 84, 172, 102, 84, 172, 106, 92, 164, 102, 84,
+ 164, 98, 76, 156, 94, 68, 156, 90, 68, 156, 86, 68, 132, 62, 44,
+ 140, 66, 52, 140, 74, 60, 156, 94, 84, 172, 110, 100, 132, 74, 60,
+ 92, 38, 28, 116, 58, 44, 164, 106, 84, 180, 114, 92, 180, 114, 92,
+ 172, 106, 84, 172, 106, 84, 172, 110, 92, 188, 122, 100, 188, 126, 100,
+ 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 92, 180, 110, 92, 164, 102, 84, 172, 106, 84,
+ 180, 106, 92, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 84, 180, 114, 92, 180, 114, 100, 180, 114, 92,
+ 180, 114, 100, 188, 122, 100, 188, 122, 100, 188, 114, 92, 180, 114, 92,
+ 188, 114, 92, 188, 114, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84,
+ 180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84,
+ 180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 106, 84, 180, 110, 84,
+ 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84, 180, 114, 92,
+ 188, 118, 92, 188, 122, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92, 188, 118, 92,
+ 180, 110, 92, 180, 114, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 106, 76,
+ 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 106, 84,
+ 180, 106, 84, 172, 110, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84,
+ 164, 94, 68, 164, 98, 76, 172, 106, 84, 180, 110, 84, 172, 106, 84,
+ 172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 76, 172, 102, 76, 172, 102, 84, 164, 102, 76, 172, 102, 84,
+ 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84, 180, 110, 84,
+ 180, 110, 92, 180, 114, 84, 180, 110, 92, 172, 106, 84, 180, 106, 84,
+ 172, 110, 84, 180, 106, 84, 172, 110, 92, 180, 106, 84, 172, 106, 84,
+ 180, 110, 84, 172, 106, 84, 164, 98, 76, 172, 98, 76, 180, 110, 84,
+ 172, 106, 84, 172, 102, 84, 164, 98, 76, 164, 102, 84, 172, 106, 84,
+ 172, 110, 92, 172, 106, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84,
+ 164, 98, 76, 164, 98, 76, 164, 102, 84, 164, 98, 76, 156, 90, 68,
+ 156, 90, 68, 164, 98, 84, 164, 98, 84, 172, 102, 76, 172, 102, 84,
+ 164, 102, 84, 164, 98, 76, 164, 98, 84, 172, 102, 84, 172, 106, 84,
+ 172, 98, 84, 164, 98, 76, 164, 98, 76, 172, 98, 84, 172, 106, 84,
+ 172, 106, 84, 164, 98, 84, 164, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 164, 102, 76, 172, 102, 84, 164, 102, 84, 164, 102, 76,
+ 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 98, 84, 164, 98, 84,
+ 164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 102, 84,
+ 164, 98, 76, 164, 98, 76, 172, 102, 84, 164, 90, 68, 164, 90, 76,
+ 164, 94, 76, 164, 102, 92, 172, 114, 100, 140, 82, 68, 116, 58, 44,
+ 116, 62, 52, 148, 86, 68, 164, 98, 76, 164, 102, 84, 164, 98, 76,
+ 156, 94, 76, 164, 98, 76, 164, 102, 84, 172, 102, 84, 164, 102, 84,
+ 164, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84,
+ 164, 98, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 172, 106, 84,
+ 180, 110, 84, 172, 110, 92, 180, 110, 84, 172, 106, 92, 172, 106, 84,
+ 164, 90, 76, 172, 106, 84, 180, 110, 92, 172, 98, 84, 164, 98, 76,
+ 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 84,
+ 188, 114, 92, 188, 118, 100, 188, 114, 92, 180, 110, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 110, 84, 180, 114, 92,
+ 180, 110, 84, 180, 114, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84,
+ 172, 106, 84, 180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84,
+ 172, 102, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84, 172, 110, 92,
+ 180, 110, 84, 172, 106, 84, 172, 102, 84, 172, 110, 84, 180, 110, 84,
+ 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 110, 84,
+ 180, 110, 92, 180, 114, 92, 180, 114, 92, 172, 106, 84, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 114, 84,
+ 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84,
+ 172, 102, 76, 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 106, 84,
+ 172, 102, 84, 172, 102, 76, 172, 106, 84, 172, 102, 76, 156, 90, 68,
+ 164, 94, 68, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 98, 76,
+ 164, 98, 76, 164, 98, 76, 172, 102, 76, 172, 102, 76, 172, 102, 84,
+ 164, 102, 76, 172, 102, 76, 164, 98, 76, 172, 102, 76, 180, 106, 84,
+ 172, 106, 84, 164, 102, 76, 172, 102, 76, 172, 110, 92, 180, 110, 84,
+ 172, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 180, 114, 84, 172, 106, 84, 180, 106, 84,
+ 172, 106, 84, 164, 94, 68, 164, 98, 76, 180, 110, 84, 180, 114, 92,
+ 164, 98, 84, 156, 98, 76, 164, 98, 76, 172, 106, 84, 172, 110, 92,
+ 172, 106, 84, 164, 102, 76, 164, 102, 84, 156, 90, 68, 156, 90, 68,
+ 156, 94, 76, 164, 102, 76, 164, 98, 76, 156, 94, 76, 164, 98, 76,
+ 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84, 172, 98, 76,
+ 164, 98, 84, 172, 98, 76, 172, 102, 84, 172, 106, 92, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 164, 98, 84, 172, 106, 84, 172, 102, 84,
+ 164, 98, 76, 156, 90, 68, 164, 98, 76, 164, 98, 76, 164, 98, 84,
+ 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 98, 84, 164, 102, 76,
+ 172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 164, 102, 76, 164, 98, 76, 164, 98, 84, 172, 98, 84,
+ 164, 102, 84, 164, 102, 84, 164, 102, 84, 164, 106, 84, 172, 102, 84,
+ 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 102, 92, 164, 98, 84,
+ 164, 102, 92, 156, 98, 84, 132, 74, 60, 116, 62, 52, 116, 58, 44,
+ 148, 86, 68, 164, 94, 76, 164, 102, 84, 164, 102, 76, 164, 98, 76,
+ 164, 98, 76, 164, 102, 84, 164, 98, 76, 172, 106, 84, 172, 106, 84,
+ 172, 106, 92, 172, 110, 84, 172, 110, 92, 180, 110, 92, 180, 114, 92,
+ 180, 114, 92, 164, 102, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92,
+ 180, 110, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 84,
+ 180, 114, 92, 188, 122, 100, 180, 114, 92, 172, 102, 84, 180, 106, 92,
+ 188, 118, 100, 188, 122, 100, 172, 102, 84, 172, 106, 84, 180, 106, 84,
+ 180, 110, 84, 180, 110, 84, 180, 106, 92, 172, 102, 76, 172, 102, 84,
+ 180, 110, 84, 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 114, 92,
+ 180, 114, 92, 180, 110, 84, 172, 106, 84, 172, 102, 76, 164, 98, 76,
+ 172, 102, 84, 172, 106, 84, 180, 110, 92, 180, 114, 92, 172, 102, 84,
+ 172, 102, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84,
+ 172, 102, 76, 164, 98, 76, 172, 102, 76, 172, 102, 84, 172, 106, 84,
+ 180, 110, 92, 180, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 84, 180, 114, 92, 180, 114, 92, 188, 114, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 84, 172, 106, 84, 180, 114, 92, 180, 110, 92,
+ 180, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
+ 172, 102, 76, 172, 102, 84, 172, 102, 84, 172, 106, 76, 164, 98, 76,
+ 164, 98, 76, 172, 98, 76, 172, 102, 84, 172, 106, 84, 172, 106, 76,
+ 164, 98, 76, 172, 106, 84, 172, 102, 84, 164, 94, 68, 164, 94, 76,
+ 172, 102, 76, 172, 102, 76, 164, 102, 84, 172, 102, 76, 164, 98, 76,
+ 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
+ 164, 102, 76, 172, 98, 76, 164, 102, 76, 172, 106, 84, 172, 102, 76,
+ 172, 102, 76, 172, 102, 84, 180, 110, 84, 180, 110, 84, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 172, 106, 76, 172, 102, 76, 172, 102, 84,
+ 172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 84, 172, 102, 84,
+ 156, 90, 68, 164, 94, 68, 172, 110, 84, 180, 114, 92, 172, 102, 76,
+ 164, 94, 76, 164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 102, 84,
+ 164, 98, 76, 164, 98, 84, 156, 94, 76, 164, 98, 76, 164, 98, 84,
+ 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84,
+ 164, 94, 76, 164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 172, 102, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 172, 102, 84, 172, 102, 84, 164, 94, 76,
+ 156, 90, 68, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
+ 164, 98, 76, 164, 98, 84, 172, 102, 84, 164, 102, 84, 172, 102, 84,
+ 164, 98, 84, 164, 102, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76,
+ 172, 98, 84, 164, 98, 76, 172, 98, 84, 164, 94, 76, 164, 98, 84,
+ 156, 98, 84, 124, 70, 60, 116, 58, 44, 116, 62, 44, 164, 98, 76,
+ 164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 102, 84, 172, 102, 84,
+ 172, 106, 84, 164, 102, 84, 164, 98, 84, 164, 98, 76, 164, 102, 84,
+ 172, 102, 84, 172, 106, 84, 172, 110, 84, 172, 110, 92, 180, 110, 92,
+ 172, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 114, 92, 180, 106, 92, 164, 102, 84, 180, 106, 84, 180, 114, 100,
+ 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 118, 100,
+ 188, 118, 100, 188, 114, 92, 188, 118, 100, 188, 118, 92, 188, 118, 100,
+ 188, 114, 92, 188, 122, 100, 172, 106, 84, 172, 106, 84, 180, 110, 84,
+ 172, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84, 180, 110, 84,
+ 180, 114, 92, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84,
+ 180, 110, 84, 180, 114, 92, 180, 114, 92, 180, 110, 84, 172, 110, 84,
+ 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 84, 172, 106, 84,
+ 172, 102, 76, 172, 106, 84, 172, 106, 84, 180, 110, 84, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 106, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 84, 180, 114, 92, 188, 118, 92, 188, 118, 92, 180, 114, 92,
+ 180, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 76, 172, 106, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 180, 110, 84, 180, 106, 84, 172, 102, 76,
+ 172, 106, 84, 172, 106, 84, 164, 98, 76, 164, 98, 76, 172, 102, 84,
+ 164, 98, 76, 172, 106, 76, 172, 102, 84, 164, 98, 76, 172, 102, 76,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
+ 172, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 98, 76,
+ 164, 102, 84, 180, 110, 84, 172, 110, 84, 172, 102, 84, 172, 102, 76,
+ 172, 106, 84, 172, 106, 84, 172, 98, 76, 172, 102, 76, 172, 106, 84,
+ 172, 106, 84, 172, 102, 84, 180, 110, 84, 172, 106, 84, 156, 94, 68,
+ 164, 90, 68, 172, 106, 84, 180, 110, 84, 164, 102, 84, 164, 98, 76,
+ 164, 98, 76, 164, 102, 84, 172, 106, 84, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 172, 106, 84, 172, 106, 84, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76,
+ 164, 98, 84, 172, 102, 84, 172, 98, 76, 164, 98, 76, 164, 94, 76,
+ 164, 98, 76, 172, 102, 84, 164, 98, 84, 164, 94, 76, 164, 94, 76,
+ 164, 94, 76, 164, 98, 84, 164, 98, 76, 164, 94, 76, 156, 86, 68,
+ 164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 84,
+ 172, 102, 76, 164, 102, 84, 164, 102, 76, 172, 102, 84, 164, 102, 76,
+ 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 84,
+ 164, 102, 76, 164, 102, 84, 172, 98, 84, 164, 102, 84, 164, 98, 76,
+ 164, 102, 84, 156, 98, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76,
+ 172, 98, 84, 172, 98, 84, 164, 90, 76, 172, 106, 92, 164, 106, 92,
+ 132, 70, 60, 116, 62, 44, 116, 58, 44, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 156, 90, 68, 156, 90, 68, 164, 98, 76, 164, 102, 84,
+ 164, 98, 76, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 92, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92,
+ 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 100, 180, 110, 92,
+ 172, 106, 84, 164, 98, 76, 180, 110, 92, 180, 110, 92, 180, 114, 92,
+ 188, 118, 100, 188, 118, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92,
+ 180, 114, 92, 188, 118, 92, 188, 118, 100, 180, 110, 84, 180, 110, 92,
+ 188, 118, 92, 172, 106, 84, 180, 110, 84, 180, 114, 92, 180, 110, 92,
+ 180, 110, 84, 172, 106, 84, 172, 106, 84, 180, 106, 84, 180, 110, 92,
+ 172, 106, 84, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 180, 110, 92, 180, 106, 84, 172, 110, 84, 180, 106, 84, 180, 110, 92,
+ 180, 110, 84, 180, 118, 100, 188, 114, 92, 180, 114, 92, 180, 110, 92,
+ 188, 122, 100, 188, 118, 92, 180, 114, 100, 180, 114, 84, 180, 110, 92,
+ 180, 110, 84, 180, 110, 92, 180, 110, 84, 172, 106, 84, 172, 110, 84,
+ 180, 110, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92, 180, 110, 84,
+ 180, 110, 92, 164, 98, 76, 172, 102, 76, 172, 106, 84, 172, 102, 76,
+ 172, 102, 76, 172, 102, 76, 172, 106, 84, 180, 106, 84, 180, 110, 84,
+ 180, 110, 84, 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 110, 84, 180, 114, 92, 180, 110, 92, 172, 106, 84, 180, 106, 84,
+ 180, 110, 84, 172, 102, 76, 172, 102, 76, 172, 102, 76, 164, 94, 76,
+ 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84,
+ 180, 110, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 180, 110, 84, 172, 106, 84, 172, 102, 76, 172, 102, 84,
+ 180, 110, 84, 180, 110, 92, 172, 106, 76, 172, 102, 84, 172, 106, 84,
+ 172, 106, 84, 172, 102, 76, 164, 102, 76, 180, 106, 84, 164, 98, 76,
+ 164, 102, 76, 180, 110, 84, 172, 110, 84, 164, 94, 76, 156, 94, 68,
+ 172, 102, 84, 172, 106, 84, 172, 106, 92, 164, 102, 84, 164, 98, 76,
+ 164, 102, 84, 172, 102, 84, 164, 98, 76, 164, 98, 84, 164, 102, 84,
+ 156, 90, 68, 164, 102, 84, 164, 102, 84, 156, 86, 68, 148, 86, 68,
+ 172, 102, 84, 172, 110, 84, 172, 102, 84, 172, 102, 84, 172, 102, 84,
+ 172, 102, 84, 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
+ 164, 98, 76, 172, 98, 84, 164, 98, 76, 156, 90, 76, 164, 94, 76,
+ 172, 98, 76, 164, 98, 84, 164, 94, 76, 156, 90, 68, 148, 90, 68,
+ 156, 94, 76, 164, 94, 76, 164, 102, 84, 164, 102, 84, 164, 102, 84,
+ 164, 98, 76, 164, 98, 84, 172, 106, 84, 164, 102, 84, 172, 102, 84,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 102, 76, 164, 98, 84,
+ 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 102, 84, 164, 102, 84,
+ 164, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76, 164, 94, 84,
+ 164, 98, 84, 156, 94, 76, 164, 106, 92, 164, 102, 92, 124, 66, 52,
+ 116, 58, 44, 116, 58, 36, 164, 106, 92, 172, 106, 84, 164, 106, 84,
+ 172, 102, 84, 164, 102, 84, 164, 102, 84, 164, 102, 76, 164, 98, 84,
+ 172, 106, 84, 172, 106, 84, 172, 110, 92, 172, 110, 84, 172, 106, 92,
+ 172, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 110, 92,
+ 172, 110, 92, 180, 110, 92, 188, 118, 92, 188, 118, 100, 180, 114, 100,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100,
+ 180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 84, 188, 118, 100,
+ 188, 118, 92, 188, 118, 100, 188, 118, 92, 188, 118, 92, 180, 114, 92,
+ 180, 106, 92, 180, 114, 92, 188, 118, 100, 180, 114, 100, 180, 110, 92,
+ 172, 106, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92, 180, 110, 92,
+ 172, 106, 84, 172, 106, 84, 180, 114, 92, 188, 122, 100, 188, 118, 100,
+ 180, 118, 92, 188, 114, 100, 180, 118, 92, 188, 118, 100, 188, 118, 100,
+ 188, 118, 100, 180, 114, 92, 180, 118, 92, 188, 118, 100, 188, 122, 100,
+ 188, 118, 100, 180, 114, 92, 188, 114, 92, 180, 114, 100, 180, 114, 92,
+ 180, 110, 92, 172, 106, 84, 188, 118, 92, 180, 114, 92, 172, 110, 84,
+ 172, 110, 84, 172, 110, 84, 172, 110, 84, 180, 110, 84, 172, 106, 84,
+ 172, 110, 84, 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84,
+ 172, 102, 84, 180, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 84, 180, 114, 84, 180, 110, 92, 180, 110, 84, 180, 110, 92,
+ 180, 110, 84, 172, 106, 84, 172, 106, 76, 172, 102, 84, 164, 102, 76,
+ 164, 102, 76, 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 76,
+ 172, 102, 84, 172, 106, 84, 180, 110, 84, 180, 110, 92, 172, 106, 84,
+ 172, 106, 84, 172, 102, 84, 180, 106, 84, 172, 106, 84, 180, 106, 92,
+ 172, 106, 84, 180, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 172, 110, 84, 180, 110, 84, 172, 110, 84, 172, 98, 76,
+ 164, 102, 76, 172, 110, 84, 180, 118, 92, 172, 106, 84, 172, 110, 84,
+ 172, 102, 84, 172, 102, 76, 164, 102, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 68, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 102, 84, 164, 98, 76,
+ 164, 98, 76, 156, 98, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 84, 164, 106, 84, 164, 98, 76, 164, 98, 76, 156, 94, 76,
+ 156, 94, 76, 164, 94, 76, 164, 98, 76, 172, 102, 84, 164, 102, 84,
+ 164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 76, 164, 94, 76, 156, 94, 76, 148, 86, 68, 164, 94, 76,
+ 164, 102, 84, 164, 102, 76, 164, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
+ 164, 94, 84, 164, 90, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84,
+ 164, 94, 76, 164, 94, 76, 172, 102, 84, 164, 98, 76, 172, 98, 84,
+ 164, 98, 84, 172, 110, 92, 164, 102, 84, 124, 66, 52, 116, 58, 36,
+ 108, 46, 28, 180, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 110, 92,
+ 172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 110, 84, 172, 110, 92,
+ 180, 114, 92, 180, 118, 100, 180, 110, 92, 172, 106, 84, 180, 110, 92,
+ 180, 110, 92, 180, 114, 100, 188, 118, 100, 180, 114, 92, 180, 114, 92,
+ 180, 114, 100, 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 172, 106, 92, 180, 106, 84, 180, 114, 92, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 172, 110, 92,
+ 180, 110, 92, 188, 118, 100, 180, 114, 92, 180, 110, 92, 172, 106, 84,
+ 180, 106, 92, 180, 110, 92, 180, 114, 92, 172, 106, 92, 172, 106, 84,
+ 180, 106, 92, 180, 114, 92, 188, 118, 100, 188, 118, 100, 180, 114, 92,
+ 180, 110, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 180, 118, 100,
+ 188, 118, 100, 188, 118, 100, 188, 118, 100, 196, 126, 108, 188, 122, 100,
+ 188, 118, 100, 188, 118, 100, 188, 122, 100, 188, 118, 100, 180, 118, 100,
+ 180, 114, 92, 188, 118, 100, 180, 118, 92, 180, 110, 84, 180, 110, 92,
+ 180, 114, 84, 180, 114, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92,
+ 180, 110, 84, 180, 110, 92, 180, 110, 92, 188, 114, 84, 180, 110, 92,
+ 180, 110, 84, 188, 114, 92, 188, 114, 92, 180, 118, 92, 188, 118, 100,
+ 188, 118, 92, 188, 122, 100, 188, 118, 92, 188, 118, 100, 180, 118, 92,
+ 180, 106, 84, 172, 106, 84, 172, 102, 76, 172, 102, 76, 172, 102, 84,
+ 172, 102, 76, 172, 106, 84, 172, 106, 84, 172, 102, 84, 164, 102, 84,
+ 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
+ 164, 98, 84, 172, 106, 84, 172, 110, 92, 172, 106, 84, 180, 110, 92,
+ 172, 106, 84, 172, 110, 92, 180, 106, 92, 172, 110, 92, 180, 110, 84,
+ 172, 114, 92, 180, 114, 92, 172, 110, 84, 172, 106, 84, 172, 106, 84,
+ 180, 114, 84, 180, 118, 92, 180, 110, 84, 172, 110, 84, 172, 110, 84,
+ 172, 106, 84, 164, 102, 76, 172, 102, 76, 164, 102, 76, 164, 102, 84,
+ 172, 102, 76, 164, 102, 84, 164, 98, 76, 164, 98, 84, 164, 98, 76,
+ 164, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84, 164, 98, 76,
+ 164, 94, 76, 156, 94, 68, 164, 94, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 102, 76, 164, 98, 76,
+ 164, 98, 76, 156, 94, 76, 164, 98, 76, 164, 102, 84, 164, 98, 84,
+ 164, 98, 76, 164, 94, 76, 156, 94, 68, 164, 102, 84, 172, 106, 84,
+ 172, 110, 92, 172, 102, 84, 164, 102, 76, 172, 102, 84, 164, 106, 84,
+ 164, 98, 84, 164, 98, 76, 164, 98, 84, 156, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 84, 164, 98, 84, 164, 94, 76,
+ 164, 94, 76, 164, 94, 76, 164, 98, 84, 164, 98, 84, 164, 98, 84,
+ 164, 94, 76, 156, 94, 84, 156, 94, 76, 156, 94, 76, 156, 90, 76,
+ 164, 98, 84, 156, 90, 76, 116, 54, 36, 108, 46, 28, 116, 54, 36,
+ 172, 110, 92, 172, 110, 92, 180, 110, 92, 172, 110, 92, 172, 106, 84,
+ 172, 106, 92, 164, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 172, 110, 84, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 106, 84, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 188, 114, 100, 180, 114, 92, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 180, 110, 92, 172, 106, 84, 180, 106, 92,
+ 172, 110, 84, 172, 106, 92, 180, 110, 84, 180, 110, 92, 180, 110, 92,
+ 180, 110, 84, 180, 110, 92, 180, 106, 84, 180, 106, 84, 180, 114, 92,
+ 180, 114, 100, 180, 114, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84,
+ 172, 106, 92, 180, 110, 92, 172, 106, 84, 172, 102, 84, 172, 106, 84,
+ 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 114, 92, 180, 110, 92,
+ 180, 114, 92, 188, 122, 100, 188, 118, 100, 188, 118, 100, 180, 114, 92,
+ 180, 114, 92, 180, 114, 92, 180, 110, 92, 172, 106, 92, 172, 106, 84,
+ 172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 110, 92, 172, 110, 84,
+ 180, 114, 92, 180, 114, 92, 172, 110, 84, 172, 110, 84, 172, 110, 84,
+ 180, 110, 92, 180, 114, 84, 172, 110, 84, 172, 102, 84, 172, 106, 76,
+ 172, 106, 84, 180, 106, 84, 172, 106, 84, 180, 106, 84, 180, 106, 84,
+ 172, 106, 84, 180, 106, 84, 180, 110, 84, 172, 110, 92, 180, 110, 84,
+ 180, 110, 92, 172, 110, 84, 180, 110, 84, 172, 106, 84, 172, 106, 84,
+ 172, 106, 84, 164, 102, 84, 172, 102, 76, 164, 102, 76, 172, 102, 84,
+ 172, 106, 76, 172, 106, 84, 172, 102, 84, 172, 102, 84, 172, 106, 84,
+ 180, 106, 84, 172, 106, 92, 172, 106, 84, 172, 102, 84, 172, 102, 84,
+ 172, 102, 84, 172, 106, 84, 172, 102, 84, 172, 106, 84, 172, 106, 92,
+ 180, 106, 84, 172, 106, 92, 172, 110, 84, 180, 110, 92, 180, 110, 92,
+ 172, 114, 92, 180, 110, 84, 172, 114, 92, 180, 110, 84, 172, 114, 92,
+ 180, 110, 92, 172, 114, 92, 180, 110, 92, 172, 106, 84, 172, 106, 84,
+ 164, 106, 84, 172, 106, 84, 164, 102, 84, 172, 106, 84, 164, 98, 76,
+ 164, 98, 76, 164, 98, 84, 164, 102, 76, 164, 102, 84, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76,
+ 156, 90, 76, 156, 94, 68, 156, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 102, 84, 164, 102, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76,
+ 156, 94, 68, 156, 90, 76, 156, 94, 76, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 156, 86, 68, 156, 94, 68, 164, 98, 76, 164, 98, 76,
+ 156, 94, 76, 156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 98, 76,
+ 164, 94, 76, 156, 98, 76, 164, 94, 76, 164, 98, 76, 156, 94, 76,
+ 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 90, 76,
+ 156, 90, 76, 156, 94, 76, 164, 94, 76, 156, 90, 76, 156, 94, 76,
+ 164, 98, 84, 164, 94, 76, 164, 98, 84, 156, 94, 76, 164, 102, 84,
+ 156, 94, 76, 116, 58, 36, 116, 54, 36, 116, 58, 36, 180, 114, 100,
+ 180, 118, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92,
+ 180, 110, 92, 172, 110, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92,
+ 180, 114, 92, 172, 110, 92, 172, 110, 92, 180, 114, 92, 180, 118, 100,
+ 180, 114, 92, 180, 114, 100, 188, 118, 100, 188, 118, 100, 188, 122, 100,
+ 196, 126, 108, 188, 122, 108, 196, 126, 100, 188, 122, 108, 188, 122, 100,
+ 188, 118, 100, 180, 118, 100, 188, 114, 100, 180, 118, 100, 188, 118, 100,
+ 188, 118, 100, 196, 126, 108, 188, 126, 100, 196, 126, 108, 188, 122, 100,
+ 180, 114, 100, 180, 114, 92, 188, 122, 100, 196, 122, 108, 196, 126, 108,
+ 196, 126, 100, 188, 118, 100, 180, 114, 100, 188, 114, 92, 180, 118, 100,
+ 188, 122, 100, 188, 118, 100, 188, 114, 100, 188, 118, 100, 188, 122, 100,
+ 196, 122, 108, 188, 126, 108, 188, 122, 100, 196, 126, 108, 196, 130, 108,
+ 196, 130, 116, 196, 130, 108, 196, 126, 108, 188, 118, 100, 180, 114, 100,
+ 180, 110, 92, 172, 106, 84, 172, 106, 84, 172, 102, 84, 172, 102, 84,
+ 172, 106, 84, 180, 106, 92, 180, 114, 92, 180, 114, 92, 180, 118, 92,
+ 180, 118, 92, 180, 118, 92, 180, 118, 92, 188, 118, 92, 180, 118, 92,
+ 180, 118, 92, 188, 118, 100, 180, 114, 84, 180, 110, 92, 188, 114, 92,
+ 180, 110, 92, 188, 114, 92, 188, 118, 92, 188, 118, 100, 188, 118, 92,
+ 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 114, 92, 180, 110, 84,
+ 180, 110, 92, 180, 110, 84, 180, 110, 84, 188, 118, 92, 180, 114, 92,
+ 180, 114, 92, 180, 110, 84, 180, 110, 92, 180, 114, 92, 180, 114, 92,
+ 188, 118, 92, 188, 118, 100, 188, 122, 100, 188, 122, 100, 188, 122, 108,
+ 188, 122, 100, 188, 122, 100, 188, 122, 100, 188, 118, 100, 180, 114, 92,
+ 180, 114, 92, 180, 114, 100, 188, 114, 92, 180, 118, 100, 188, 118, 100,
+ 188, 118, 100, 188, 118, 100, 188, 122, 100, 180, 122, 100, 188, 118, 100,
+ 188, 122, 100, 188, 122, 100, 188, 126, 108, 188, 122, 100, 180, 118, 92,
+ 172, 106, 84, 172, 110, 84, 172, 106, 84, 164, 102, 84, 172, 102, 76,
+ 164, 102, 76, 164, 102, 84, 172, 102, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 102, 84, 164, 98, 76, 164, 102, 76, 164, 98, 76,
+ 156, 98, 76, 164, 98, 84, 164, 98, 76, 156, 94, 76, 164, 94, 68,
+ 156, 94, 76, 156, 94, 68, 164, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76,
+ 156, 90, 68, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
+ 156, 98, 76, 164, 98, 76, 164, 98, 84, 156, 98, 76, 156, 94, 68,
+ 164, 94, 76, 164, 98, 76, 164, 102, 84, 164, 102, 84, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 156, 94, 76, 156, 94, 68,
+ 156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 76, 156, 94, 68,
+ 156, 94, 76, 172, 98, 84, 164, 98, 84, 172, 98, 76, 164, 94, 84,
+ 172, 98, 84, 164, 98, 84, 164, 98, 84, 172, 98, 84, 164, 98, 84,
+ 164, 98, 84, 164, 106, 84, 164, 102, 84, 172, 110, 92, 164, 98, 84,
+ 124, 66, 44, 116, 58, 36, 116, 50, 36, 172, 106, 84, 164, 102, 84,
+ 172, 102, 84, 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 102, 84,
+ 172, 102, 84, 164, 102, 84, 172, 106, 84, 164, 106, 84, 172, 102, 84,
+ 164, 102, 76, 172, 102, 84, 164, 102, 84, 172, 106, 84, 172, 102, 84,
+ 180, 106, 84, 172, 110, 92, 180, 114, 92, 180, 110, 92, 180, 114, 92,
+ 180, 114, 92, 180, 114, 100, 180, 114, 92, 180, 110, 92, 180, 110, 92,
+ 172, 106, 84, 180, 110, 84, 172, 106, 84, 180, 110, 92, 180, 110, 92,
+ 180, 118, 92, 180, 114, 100, 180, 110, 92, 180, 110, 92, 180, 106, 92,
+ 172, 102, 84, 180, 114, 92, 180, 114, 92, 180, 114, 100, 180, 114, 92,
+ 180, 110, 92, 180, 106, 92, 172, 106, 84, 172, 106, 84, 180, 106, 92,
+ 172, 110, 92, 172, 106, 84, 180, 110, 92, 180, 110, 92, 180, 114, 92,
+ 180, 110, 92, 180, 110, 92, 180, 110, 92, 188, 114, 100, 188, 122, 100,
+ 188, 118, 100, 180, 110, 92, 172, 106, 84, 172, 102, 84, 164, 98, 76,
+ 172, 102, 84, 172, 102, 84, 164, 102, 84, 172, 98, 76, 164, 98, 84,
+ 172, 106, 84, 180, 106, 92, 180, 110, 92, 172, 106, 92, 172, 110, 84,
+ 172, 106, 84, 172, 110, 92, 172, 106, 84, 172, 110, 92, 180, 106, 84,
+ 172, 110, 92, 180, 110, 84, 172, 110, 92, 180, 110, 84, 180, 110, 92,
+ 180, 114, 92, 180, 114, 92, 188, 114, 92, 188, 114, 92, 180, 110, 92,
+ 180, 110, 92, 180, 110, 92, 180, 110, 84, 180, 110, 92, 172, 110, 84,
+ 172, 106, 84, 172, 106, 92, 172, 106, 84, 180, 106, 84, 172, 106, 84,
+ 172, 102, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84, 172, 106, 84,
+ 180, 110, 92, 180, 110, 92, 180, 110, 92, 180, 114, 92, 180, 114, 100,
+ 180, 114, 92, 180, 110, 92, 180, 110, 92, 172, 102, 84, 172, 102, 84,
+ 172, 106, 84, 172, 106, 84, 172, 106, 92, 180, 110, 84, 172, 110, 92,
+ 180, 110, 92, 172, 106, 92, 172, 106, 84, 172, 106, 84, 172, 110, 92,
+ 180, 114, 92, 180, 110, 92, 172, 110, 92, 172, 102, 84, 172, 106, 92,
+ 164, 102, 84, 172, 102, 84, 164, 102, 84, 164, 98, 84, 164, 102, 76,
+ 164, 98, 84, 164, 102, 84, 164, 98, 76, 164, 98, 76, 164, 98, 84,
+ 172, 102, 76, 164, 102, 84, 164, 98, 84, 164, 98, 84, 164, 98, 76,
+ 172, 102, 76, 164, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 164, 94, 76, 164, 98, 76, 164, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 102, 84, 164, 102, 84, 164, 98, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 84, 172, 102, 84, 164, 102, 76, 164, 98, 84, 164, 98, 76,
+ 164, 98, 84, 164, 98, 76, 164, 94, 76, 164, 94, 76, 164, 94, 76,
+ 156, 94, 76, 164, 94, 68, 164, 94, 76, 164, 94, 76, 156, 94, 76,
+ 164, 94, 76, 164, 90, 76, 156, 94, 76, 164, 94, 76, 164, 94, 76,
+ 156, 94, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
+ 164, 102, 84, 164, 102, 84, 172, 106, 92, 156, 94, 76, 124, 62, 44,
+ 116, 50, 36, 108, 50, 28, 156, 86, 68, 156, 90, 68, 148, 86, 68,
+ 156, 90, 68, 148, 86, 68, 156, 90, 68, 156, 86, 68, 148, 90, 68,
+ 156, 90, 68, 156, 90, 76, 156, 94, 76, 156, 90, 68, 148, 86, 68,
+ 156, 86, 68, 156, 90, 68, 156, 90, 76, 148, 86, 68, 156, 86, 68,
+ 156, 90, 68, 164, 90, 76, 156, 90, 68, 156, 90, 76, 164, 90, 68,
+ 156, 90, 76, 164, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 68,
+ 156, 90, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 86, 76,
+ 156, 86, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 90, 68,
+ 164, 90, 76, 164, 94, 76, 164, 94, 76, 156, 94, 76, 156, 90, 68,
+ 156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
+ 156, 90, 68, 156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 76,
+ 156, 90, 68, 148, 86, 68, 156, 86, 68, 164, 94, 76, 164, 94, 76,
+ 156, 90, 68, 156, 90, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
+ 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68, 156, 86, 68,
+ 156, 90, 68, 164, 94, 76, 156, 90, 68, 156, 94, 76, 164, 98, 76,
+ 164, 94, 76, 156, 94, 68, 156, 90, 68, 156, 94, 68, 164, 94, 68,
+ 156, 86, 68, 156, 86, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68,
+ 164, 90, 76, 164, 90, 68, 164, 90, 76, 164, 94, 76, 156, 94, 68,
+ 164, 94, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68, 164, 94, 76,
+ 156, 90, 68, 156, 90, 68, 156, 90, 68, 156, 90, 68, 164, 90, 68,
+ 156, 90, 68, 156, 90, 68, 164, 90, 68, 156, 90, 68, 156, 90, 76,
+ 156, 90, 68, 156, 90, 76, 164, 90, 68, 156, 90, 68, 156, 90, 76,
+ 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 86, 68,
+ 164, 90, 76, 156, 90, 68, 164, 90, 76, 156, 94, 68, 164, 94, 76,
+ 156, 90, 68, 156, 90, 76, 156, 90, 68, 156, 90, 76, 156, 94, 76,
+ 156, 94, 76, 156, 90, 76, 148, 86, 68, 164, 98, 84, 164, 98, 76,
+ 164, 98, 76, 156, 94, 76, 164, 94, 76, 156, 94, 76, 164, 94, 76,
+ 156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 94, 76, 164, 98, 76, 156, 94, 76, 156, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76, 164, 98, 76,
+ 164, 98, 76, 156, 94, 76, 156, 94, 76, 156, 90, 68, 156, 94, 76,
+ 156, 94, 76, 164, 94, 76, 156, 98, 76, 164, 98, 76, 164, 98, 84,
+ 156, 94, 76, 156, 94, 76, 156, 94, 76, 164, 94, 76, 164, 98, 76,
+ 164, 98, 76, 164, 94, 76, 156, 90, 76, 156, 90, 68, 156, 90, 68,
+ 156, 94, 76, 156, 90, 68, 156, 90, 68, 156, 90, 68, 148, 90, 68,
+ 156, 90, 68, 156, 90, 76, 156, 94, 68, 156, 90, 68, 156, 94, 76,
+ 156, 90, 68, 156, 94, 76, 156, 90, 68, 156, 94, 68, 156, 82, 68,
+ 156, 86, 76, 156, 90, 76, 156, 86, 76, 148, 86, 68, 156, 86, 68,
+ 156, 86, 76, 156, 90, 68, 156, 94, 76, 164, 94, 84, 164, 98, 84,
+ 156, 94, 76, 156, 98, 76, 148, 86, 68, 116, 54, 36, 108, 50, 28,
+ 108, 50, 36, 140, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60,
+ 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60,
+ 148, 82, 60, 148, 82, 60, 148, 78, 60, 140, 74, 52, 140, 74, 52,
+ 140, 78, 60, 148, 82, 60, 140, 70, 52, 140, 74, 52, 148, 74, 60,
+ 140, 78, 60, 148, 74, 60, 140, 74, 52, 140, 74, 52, 140, 78, 60,
+ 140, 74, 52, 148, 78, 60, 140, 74, 60, 148, 78, 60, 148, 74, 60,
+ 148, 78, 60, 148, 74, 60, 148, 78, 60, 140, 70, 52, 140, 70, 52,
+ 148, 74, 60, 140, 74, 60, 148, 78, 60, 148, 78, 68, 140, 78, 60,
+ 148, 78, 60, 140, 78, 60, 148, 78, 60, 148, 78, 60, 148, 74, 60,
+ 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52,
+ 148, 74, 60, 148, 78, 60, 140, 78, 60, 148, 74, 60, 140, 74, 52,
+ 140, 70, 52, 140, 74, 52, 140, 78, 60, 148, 78, 60, 148, 78, 60,
+ 148, 78, 60, 148, 78, 60, 148, 82, 60, 140, 74, 52, 140, 74, 52,
+ 140, 78, 60, 140, 74, 52, 140, 74, 52, 140, 74, 52, 140, 74, 52,
+ 140, 78, 60, 140, 82, 60, 148, 82, 60, 148, 86, 68, 148, 86, 60,
+ 140, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 70, 52,
+ 140, 70, 52, 140, 74, 52, 140, 70, 52, 140, 74, 52, 140, 70, 52,
+ 140, 74, 52, 140, 74, 52, 140, 78, 60, 148, 74, 60, 140, 74, 52,
+ 140, 74, 60, 140, 74, 52, 140, 74, 60, 140, 78, 60, 148, 78, 60,
+ 156, 82, 60, 148, 82, 68, 156, 82, 60, 148, 82, 68, 148, 82, 60,
+ 156, 82, 68, 148, 82, 60, 148, 82, 68, 148, 82, 60, 148, 82, 60,
+ 148, 82, 60, 148, 82, 68, 148, 78, 60, 156, 82, 60, 148, 82, 68,
+ 148, 82, 60, 156, 82, 60, 148, 82, 60, 156, 82, 68, 148, 82, 60,
+ 156, 86, 68, 148, 82, 60, 156, 82, 68, 148, 82, 60, 148, 82, 68,
+ 148, 82, 68, 148, 82, 68, 148, 86, 68, 148, 82, 68, 156, 86, 68,
+ 148, 82, 68, 148, 82, 60, 148, 82, 68, 140, 78, 60, 148, 78, 68,
+ 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 78, 60, 140, 78, 60,
+ 148, 82, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60,
+ 140, 78, 60, 148, 78, 60, 148, 82, 60, 140, 78, 60, 148, 78, 60,
+ 140, 78, 60, 148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 78, 60,
+ 148, 82, 60, 140, 74, 52, 140, 78, 60, 148, 78, 60, 140, 78, 60,
+ 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 82, 60, 148, 78, 60,
+ 148, 78, 60, 140, 78, 60, 140, 78, 60, 148, 82, 60, 148, 82, 60,
+ 148, 78, 60, 140, 78, 60, 148, 86, 60, 148, 82, 68, 148, 82, 60,
+ 148, 82, 60, 140, 78, 60, 148, 82, 60, 148, 78, 60, 148, 78, 60,
+ 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60, 140, 78, 60,
+ 140, 78, 60, 148, 78, 60, 140, 78, 60, 148, 82, 68, 148, 82, 68,
+ 148, 86, 68, 156, 82, 68, 148, 82, 68, 148, 82, 68, 148, 82, 68,
+ 148, 86, 68, 148, 82, 68, 148, 78, 60, 140, 82, 60, 140, 74, 60,
+ 140, 78, 60, 140, 74, 60, 116, 50, 36, 108, 50, 36, 108, 50, 28,
+ 108, 42, 28, 108, 42, 20, 108, 42, 20, 108, 42, 20, 116, 46, 28,
+ 108, 42, 20, 116, 46, 28, 108, 42, 20, 108, 46, 28, 108, 46, 28,
+ 116, 46, 28, 108, 46, 20, 108, 42, 20, 100, 42, 20, 108, 42, 20,
+ 108, 42, 28, 108, 42, 20, 116, 46, 28, 116, 46, 28, 116, 46, 28,
+ 108, 42, 20, 108, 38, 20, 108, 42, 28, 116, 42, 28, 108, 42, 20,
+ 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 50, 28, 108, 46, 28,
+ 116, 46, 28, 108, 42, 20, 108, 42, 28, 116, 42, 28, 108, 46, 28,
+ 116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 42, 28, 108, 42, 20,
+ 116, 46, 28, 108, 42, 20, 116, 46, 28, 108, 46, 28, 108, 42, 20,
+ 116, 42, 28, 108, 38, 20, 108, 42, 28, 116, 46, 28, 108, 46, 28,
+ 116, 46, 28, 108, 42, 20, 108, 42, 20, 116, 42, 28, 116, 46, 28,
+ 116, 50, 28, 116, 50, 28, 116, 50, 28, 116, 46, 28, 116, 46, 28,
+ 116, 46, 28, 116, 50, 28, 116, 46, 28, 116, 50, 36, 124, 50, 36,
+ 116, 50, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28,
+ 108, 46, 20, 108, 50, 28, 116, 50, 28, 116, 54, 28, 108, 46, 28,
+ 108, 46, 20, 108, 42, 20, 108, 42, 20, 116, 50, 28, 116, 46, 28,
+ 116, 46, 28, 116, 46, 28, 116, 46, 28, 108, 46, 28, 116, 46, 28,
+ 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 46, 28, 116, 42, 28,
+ 116, 46, 28, 116, 46, 28, 116, 50, 28, 124, 50, 36, 124, 58, 36,
+ 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36,
+ 124, 58, 36, 124, 54, 36, 132, 62, 44, 124, 54, 36, 124, 58, 36,
+ 124, 58, 36, 124, 58, 36, 124, 54, 44, 124, 58, 36, 132, 62, 44,
+ 124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36,
+ 124, 54, 36, 124, 58, 36, 124, 58, 36, 124, 58, 44, 124, 58, 36,
+ 124, 58, 44, 124, 54, 36, 124, 58, 44, 124, 58, 36, 124, 58, 44,
+ 124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44, 124, 58, 44,
+ 124, 58, 44, 124, 58, 44, 132, 62, 44, 124, 62, 44, 132, 62, 44,
+ 124, 62, 44, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 62, 44,
+ 124, 62, 44, 132, 62, 44, 116, 58, 36, 124, 58, 36, 124, 58, 44,
+ 124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 62, 44, 124, 58, 36,
+ 124, 62, 44, 124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44,
+ 132, 62, 44, 124, 66, 44, 132, 62, 44, 124, 62, 44, 124, 58, 36,
+ 124, 58, 36, 124, 62, 44, 132, 62, 44, 124, 62, 44, 124, 62, 44,
+ 124, 58, 36, 124, 62, 44, 124, 58, 36, 124, 58, 36, 124, 58, 44,
+ 124, 58, 36, 124, 58, 36, 116, 58, 36, 124, 58, 36, 124, 58, 36,
+ 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36, 124, 58, 36,
+ 124, 58, 36, 124, 58, 36, 124, 50, 36, 124, 54, 36, 124, 54, 36,
+ 124, 54, 36, 116, 54, 36, 116, 50, 36, 124, 54, 36, 124, 54, 44,
+ 124, 54, 36, 116, 54, 36, 116, 54, 36, 108, 46, 28, 124, 58, 44,
+ 124, 58, 44, 100, 42, 20, 108, 50, 28
+};
diff --git a/hacks/glx/endgame.c b/hacks/glx/endgame.c
new file mode 100644
index 0000000..ddba7f9
--- /dev/null
+++ b/hacks/glx/endgame.c
@@ -0,0 +1,971 @@
+/*
+ * endgame.c
+ * plays through a chess game ending. enjoy.
+ *
+ * version 1.0 - June 6, 2002
+ *
+ * Copyright (C) 2002-2008 Blair Tennessy (tennessb@unbc.ca)
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define free_chess 0
+# define release_chess 0
+# include "xlockmore.h"
+
+#else
+# include "xlock.h"
+#endif
+
+#ifdef USE_GL
+
+#define BOARDSIZE 8
+#define WHITES 5
+
+#include "gltrackball.h"
+#include "chessmodels.h"
+#include "chessgames.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#define DEF_ROTATE "True"
+#define DEF_REFLECTIONS "True"
+#define DEF_SHADOWS "True"
+#define DEF_SMOOTH "True"
+#define DEF_CLASSIC "False"
+
+
+static XrmOptionDescRec opts[] = {
+ {"+rotate", ".chess.rotate", XrmoptionNoArg, "false" },
+ {"-rotate", ".chess.rotate", XrmoptionNoArg, "true" },
+ {"+reflections", ".chess.reflections", XrmoptionNoArg, "false" },
+ {"-reflections", ".chess.reflections", XrmoptionNoArg, "true" },
+ {"+shadows", ".chess.shadows", XrmoptionNoArg, "false" },
+ {"-shadows", ".chess.shadows", XrmoptionNoArg, "true" },
+ {"+smooth", ".chess.smooth", XrmoptionNoArg, "false" },
+ {"-smooth", ".chess.smooth", XrmoptionNoArg, "true" },
+ {"+classic", ".chess.classic", XrmoptionNoArg, "false" },
+ {"-classic", ".chess.classic", XrmoptionNoArg, "true" },
+};
+
+static int rotate, reflections, smooth, shadows, classic;
+
+static argtype vars[] = {
+ {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool},
+ {&reflections, "reflections", "Reflections", DEF_REFLECTIONS, t_Bool},
+ {&shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool},
+ {&smooth, "smooth", "Smooth", DEF_SMOOTH, t_Bool},
+ {&classic, "classic", "Classic", DEF_CLASSIC, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt chess_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct chess_description =
+{"chess", "init_chess", "draw_chess", NULL,
+ "draw_chess", "init_chess", NULL, &chess_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Chess", 0, NULL};
+
+#endif
+
+#define checkImageWidth 16
+#define checkImageHeight 16
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ ChessGame game;
+ int oldwhite;
+
+ /** definition of white/black (orange/gray) colors */
+ GLfloat colors[2][3];
+
+ GLubyte checkImage[checkImageWidth][checkImageHeight][3];
+ GLuint piecetexture, boardtexture;
+
+ int mpiece, tpiece, steps, done;
+ double from[2], to[2];
+ double dx, dz;
+ int moving, take, mc, count, wire;
+ double theta;
+
+ GLfloat position[4];
+ GLfloat position2[4];
+
+ GLfloat mod;
+
+ GLfloat ground[4];
+
+ int oldgame;
+
+ int poly_counts[PIECES]; /* polygon count of each type of piece */
+
+
+} Chesscreen;
+
+static Chesscreen *qs = NULL;
+
+static const GLfloat MaterialShadow[] = {0.0, 0.0, 0.0, 0.3};
+
+
+/* i prefer silvertip */
+static const GLfloat whites[WHITES][3] =
+ {
+ {1.0, 0.55, 0.1},
+ {0.8, 0.52, 0.8},
+ {0.43, 0.54, 0.76},
+ {0.2, 0.2, 0.2},
+ {0.35, 0.60, 0.35},
+ };
+
+static void build_colors(Chesscreen *cs)
+{
+
+ /* find new white */
+ int newwhite = cs->oldwhite;
+ while(newwhite == cs->oldwhite)
+ newwhite = random()%WHITES;
+ cs->oldwhite = newwhite;
+
+ cs->colors[0][0] = whites[cs->oldwhite][0];
+ cs->colors[0][1] = whites[cs->oldwhite][1];
+ cs->colors[0][2] = whites[cs->oldwhite][2];
+}
+
+/* build piece texture */
+static void make_piece_texture(Chesscreen *cs)
+{
+ int i, j, c;
+
+ for (i = 0; i < checkImageWidth; i++) {
+ for (j = 0; j < checkImageHeight; j++) {
+ c = ((j%2) == 0 || i%2 == 0) ? 240 : 180+random()%16;
+ cs->checkImage[i][j][0] = (GLubyte) c;
+ cs->checkImage[i][j][1] = (GLubyte) c;
+ cs->checkImage[i][j][2] = (GLubyte) c;
+ }
+ }
+
+ glGenTextures(1, &cs->piecetexture);
+ glBindTexture(GL_TEXTURE_2D, cs->piecetexture);
+
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+ glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
+ checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ &cs->checkImage[0][0]);
+}
+
+/* build board texture (uniform noise in [180,180+50]) */
+static void make_board_texture(Chesscreen *cs)
+{
+ int i, j, c;
+
+ for (i = 0; i < checkImageWidth; i++) {
+ for (j = 0; j < checkImageHeight; j++) {
+ c = 180 + random()%51;
+ cs->checkImage[i][j][0] = (GLubyte) c;
+ cs->checkImage[i][j][1] = (GLubyte) c;
+ cs->checkImage[i][j][2] = (GLubyte) c;
+ }
+ }
+
+ glGenTextures(1, &cs->boardtexture);
+ glBindTexture(GL_TEXTURE_2D, cs->boardtexture);
+
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
+ glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
+ checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ &cs->checkImage[0][0]);
+}
+
+/** handle X event (trackball) */
+ENTRYPOINT Bool chess_handle_event (ModeInfo *mi, XEvent *event)
+{
+ Chesscreen *cs = &qs[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, cs->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cs->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ cs->done = 1;
+ return True;
+ }
+
+ return False;
+}
+
+static const GLfloat diffuse2[] = {1.0, 1.0, 1.0, 1.0};
+/*static const GLfloat ambient2[] = {0.7, 0.7, 0.7, 1.0};*/
+static const GLfloat shininess[] = {60.0};
+static const GLfloat specular[] = {0.4, 0.4, 0.4, 1.0};
+
+/* configure lighting */
+static void setup_lights(Chesscreen *cs)
+{
+ glEnable(GL_LIGHTING);
+ glLightfv(GL_LIGHT0, GL_POSITION, cs->position);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse2);
+ glEnable(GL_LIGHT0);
+
+/* glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient2); */
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
+
+ glLightfv(GL_LIGHT1, GL_SPECULAR, diffuse2);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse2);
+ glEnable(GL_LIGHT1);
+}
+
+/* draw pieces */
+static void drawPieces(ModeInfo *mi, Chesscreen *cs)
+{
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i) {
+ for(j = 0; j < BOARDSIZE; ++j) {
+ if(cs->game.board[i][j]) {
+ int c = cs->game.board[i][j]/PIECES;
+ glColor3fv(cs->colors[c]);
+ glCallList(cs->game.board[i][j]%PIECES);
+ mi->polygon_count += cs->poly_counts[cs->game.board[i][j]%PIECES];
+ }
+
+ glTranslatef(1.0, 0.0, 0.0);
+ }
+
+ glTranslatef(-1.0*BOARDSIZE, 0.0, 1.0);
+ }
+
+ glTranslatef(0.0, 0.0, -1.0*BOARDSIZE);
+}
+
+/* draw pieces */
+static void drawPiecesShadow(ModeInfo *mi, Chesscreen *cs)
+{
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i) {
+ for(j = 0; j < BOARDSIZE; ++j) {
+ if(cs->game.board[i][j]) {
+ glColor4f(0.0, 0.0, 0.0, 0.4);
+ glCallList(cs->game.board[i][j]%PIECES);
+ mi->polygon_count += cs->poly_counts[cs->game.board[i][j]%PIECES];
+ }
+
+ glTranslatef(1.0, 0.0, 0.0);
+ }
+
+ glTranslatef(-1.0*BOARDSIZE, 0.0, 1.0);
+ }
+
+ glTranslatef(0.0, 0.0, -1.0*BOARDSIZE);
+}
+
+/* draw a moving piece */
+static void drawMovingPiece(ModeInfo *mi, Chesscreen *cs, int shadow)
+{
+ int piece = cs->mpiece % PIECES;
+
+ if (piece == NONE) return;
+
+ glPushMatrix();
+
+ if(shadow) glColor4fv(MaterialShadow);
+ else glColor3fv(cs->colors[cs->mpiece/PIECES]);
+
+ /** assume a queening. should be more general */
+ if((cs->mpiece == PAWN && fabs(cs->to[0]) < 0.01) ||
+ (cs->mpiece == BPAWN && fabs(cs->to[0]-7.0) < 0.01)) {
+ glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz);
+
+ glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->mpiece/7][0],
+ shadow ? MaterialShadow[1] : cs->colors[cs->mpiece/7][1],
+ shadow ? MaterialShadow[2] : cs->colors[cs->mpiece/7][2],
+ (fabs(50.0-cs->steps))/50.0);
+
+ piece = cs->steps < 50 ? PAWN : QUEEN;
+
+ /* what a kludge */
+ if(cs->steps == 99)
+ cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN;
+ }
+ else if(cs->mpiece % PIECES == KNIGHT) {
+ /* If there is nothing in the path of a knight, move it by sliding,
+ just like the other pieces. But if there are any pieces on the
+ middle two squares in its path, the knight would intersect them,
+ so in that case, move it in an airborne arc. */
+ GLfloat y;
+ int i, j;
+ Bool blocked_p = False;
+ int fromx = MIN(cs->from[1], cs->to[1]);
+ int fromy = MIN(cs->from[0], cs->to[0]);
+ int tox = MAX(cs->from[1], cs->to[1]);
+ int toy = MAX(cs->from[0], cs->to[0]);
+ if (fromx == tox-2) fromx = tox = fromx+1;
+ if (fromy == toy-2) fromy = toy = fromy+1;
+ for (i = fromy; i <= toy; i++) {
+ for (j = fromx; j <= tox; j++) {
+ if (cs->game.board[i][j]) {
+ blocked_p = True;
+ break;
+ }
+ }
+ }
+
+ if (!blocked_p)
+ goto SLIDE;
+
+ /* Move by hopping. */
+ y = 1.5 * sin (M_PI * cs->steps / 100.0);
+ glTranslatef(cs->from[1]+cs->steps*cs->dx, y,
+ cs->from[0]+cs->steps*cs->dz);
+
+ } else {
+ SLIDE:
+ /* Move by sliding. */
+ glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz);
+ }
+
+
+ if(!cs->wire)
+ glEnable(GL_BLEND);
+
+ glCallList(piece);
+ mi->polygon_count += cs->poly_counts[cs->mpiece % PIECES];
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
+
+ glPopMatrix();
+
+ if(!cs->wire)
+ glDisable(GL_BLEND);
+}
+
+/** code to squish a taken piece */
+static void drawTakePiece(ModeInfo *mi, Chesscreen *cs, int shadow)
+{
+ if(!cs->wire)
+ glEnable(GL_BLEND);
+
+ glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->tpiece/7][0],
+ shadow ? MaterialShadow[1] : cs->colors[cs->tpiece/7][1],
+ shadow ? MaterialShadow[2] : cs->colors[cs->tpiece/7][2],
+ (100-1.6*cs->steps)/100.0);
+
+ glTranslatef(cs->to[1], 0.0, cs->to[0]);
+
+ if(cs->mpiece % PIECES == KNIGHT)
+ glScalef(1.0+cs->steps/100.0, 1.0, 1.0+cs->steps/100.0);
+ else
+ glScalef(1.0, 1 - cs->steps/50.0 > 0.01 ? 1 - cs->steps/50.0 : 0.01, 1.0);
+ glCallList(cs->tpiece % 7);
+ mi->polygon_count += cs->poly_counts[cs->tpiece % PIECES];
+
+ if(!cs->wire)
+ glDisable(GL_BLEND);
+}
+
+/** draw board */
+static void drawBoard(ModeInfo *mi, Chesscreen *cs)
+{
+ int i, j;
+
+ glBegin(GL_QUADS);
+
+ for(i = 0; i < BOARDSIZE; ++i)
+ for(j = 0; j < BOARDSIZE; ++j) {
+ double ma1 = (i+j)%2 == 0 ? cs->mod*i : 0.0;
+ double mb1 = (i+j)%2 == 0 ? cs->mod*j : 0.0;
+ double ma2 = (i+j)%2 == 0 ? cs->mod*(i+1.0) : 0.01;
+ double mb2 = (i+j)%2 == 0 ? cs->mod*(j+1.0) : 0.01;
+
+ /*glColor3fv(colors[(i+j)%2]);*/
+ glColor4f(cs->colors[(i+j)%2][0], cs->colors[(i+j)%2][1],
+ cs->colors[(i+j)%2][2], 0.65);
+
+ glNormal3f(0.0, 1.0, 0.0);
+/* glTexCoord2f(mod*i, mod*(j+1.0)); */
+ glTexCoord2f(ma1, mb2);
+ glVertex3f(i, 0.0, j + 1.0);
+/* glTexCoord2f(mod*(i+1.0), mod*(j+1.0)); */
+ glTexCoord2f(ma2, mb2);
+ glVertex3f(i + 1.0, 0.0, j + 1.0);
+ glTexCoord2f(ma2, mb1);
+/* glTexCoord2f(mod*(i+1.0), mod*j); */
+ glVertex3f(i + 1.0, 0.0, j);
+ glTexCoord2f(ma1, mb1);
+/* glTexCoord2f(mod*i, mod*j); */
+ glVertex3f(i, 0.0, j);
+
+ mi->polygon_count++;
+ }
+ glEnd();
+
+ {
+ GLfloat off = 0.01;
+ GLfloat w = BOARDSIZE;
+ GLfloat h = 0.1;
+
+ /* Give the board a slight lip. */
+ /* #### oops, normals are wrong here, but you can't tell */
+
+ glColor3f(0.3, 0.3, 0.3);
+ glBegin (GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, -h, 0);
+ glVertex3f (0, -h, w);
+ glVertex3f (0, 0, w);
+
+ glVertex3f (0, 0, w);
+ glVertex3f (0, -h, w);
+ glVertex3f (w, -h, w);
+ glVertex3f (w, 0, w);
+
+ glVertex3f (w, 0, w);
+ glVertex3f (w, -h, w);
+ glVertex3f (w, -h, 0);
+ glVertex3f (w, 0, 0);
+
+ glVertex3f (w, 0, 0);
+ glVertex3f (w, -h, 0);
+ glVertex3f (0, -h, 0);
+ glVertex3f (0, 0, 0);
+
+ glVertex3f (0, -h, 0);
+ glVertex3f (w, -h, 0);
+ glVertex3f (w, -h, w);
+ glVertex3f (0, -h, w);
+ glEnd();
+ mi->polygon_count += 4;
+
+ /* Fill in the underside of the board with an invisible black box
+ to hide the reflections that are not on tiles. Probably there's
+ a way to do this with stencils instead.
+ */
+ w -= off*2;
+ h = 5;
+
+ glPushMatrix();
+ glTranslatef (off, 0, off);
+ glDisable(GL_LIGHTING);
+ glColor3f(0,0,0);
+ glBegin (GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, -h, 0);
+ glVertex3f (0, -h, w);
+ glVertex3f (0, 0, w);
+
+ glVertex3f (0, 0, w);
+ glVertex3f (0, -h, w);
+ glVertex3f (w, -h, w);
+ glVertex3f (w, 0, w);
+
+ glVertex3f (w, 0, w);
+ glVertex3f (w, -h, w);
+ glVertex3f (w, -h, 0);
+ glVertex3f (w, 0, 0);
+
+ glVertex3f (w, 0, 0);
+ glVertex3f (w, -h, 0);
+ glVertex3f (0, -h, 0);
+ glVertex3f (0, 0, 0);
+
+ glVertex3f (0, -h, 0);
+ glVertex3f (w, -h, 0);
+ glVertex3f (w, -h, w);
+ glVertex3f (0, -h, w);
+ glEnd();
+ mi->polygon_count += 4;
+ glPopMatrix();
+ if (!cs->wire)
+ glEnable(GL_LIGHTING);
+ }
+}
+
+static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire)
+{
+ if (!cs->wire) {
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, cs->piecetexture);
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+ glColor4f(0.5, 0.5, 0.5, 1.0);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+ }
+
+ drawPieces(mi, cs);
+ if(cs->moving) drawMovingPiece(mi, cs, 0);
+ if(cs->take) drawTakePiece(mi, cs, 0);
+ glDisable(GL_TEXTURE_2D);
+}
+
+static void draw_shadow_pieces(ModeInfo *mi, Chesscreen *cs, int wire)
+{
+ if (!cs->wire) {
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, cs->piecetexture);
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ }
+
+ /* use the stencil */
+ glDisable(GL_LIGHTING);
+ glDisable(GL_COLOR_MATERIAL);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_BLEND);
+
+ glClear(GL_STENCIL_BUFFER_BIT);
+ glColorMask(0,0,0,0);
+ glEnable(GL_STENCIL_TEST);
+
+ glStencilFunc(GL_ALWAYS, 1, 0xFFFFFFFFL);
+ glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
+
+
+ glPushMatrix();
+ glTranslatef(0.0, 0.001, 0.0);
+
+ /* draw the pieces */
+ drawPiecesShadow(mi, cs);
+ if(cs->moving) drawMovingPiece(mi, cs, shadows);
+ if(cs->take) drawTakePiece(mi, cs, shadows);
+
+ glPopMatrix();
+
+
+ /* turn on drawing into colour buffer */
+ glColorMask(1,1,1,1);
+
+ /* programming with effect */
+ glDisable(GL_LIGHTING);
+ glDisable(GL_COLOR_MATERIAL);
+ glDisable(GL_TEXTURE_2D);
+
+ /* now draw the union of the shadows */
+
+ /*
+
+ want to keep alpha values (alpha is involved in transition
+ effects of the active pieces).
+
+ */
+ glStencilFunc(GL_NOTEQUAL, 0, 0xFFFFFFFFL);
+ glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
+
+ glEnable(GL_BLEND);
+
+ glColor4fv(MaterialShadow);
+
+ /* draw the board generously to fill the shadows */
+ glBegin(GL_QUADS);
+
+ glVertex3f(-1.0, 0.0, -1.0);
+ glVertex3f(-1.0, 0.0, BOARDSIZE + 1.0);
+ glVertex3f(1.0 + BOARDSIZE, 0.0, BOARDSIZE + 1.0);
+ glVertex3f(1.0 + BOARDSIZE, 0.0, -1.0);
+
+ glEnd();
+
+ glDisable(GL_STENCIL_TEST);
+
+ /* "pop" attributes */
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_COLOR_MATERIAL);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_CULL_FACE);
+
+
+
+}
+
+enum {X, Y, Z, W};
+enum {A, B, C, D};
+
+/* create a matrix that will project the desired shadow */
+static void shadowmatrix(GLfloat shadowMat[4][4],
+ GLfloat groundplane[4],
+ GLfloat lightpos[4])
+{
+ GLfloat dot;
+
+ /* find dot product between light position vector and ground plane normal */
+ dot = groundplane[X] * lightpos[X] +
+ groundplane[Y] * lightpos[Y] +
+ groundplane[Z] * lightpos[Z] +
+ groundplane[W] * lightpos[W];
+
+ shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
+ shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
+ shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
+ shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
+
+ shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
+ shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
+ shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
+ shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
+
+ shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
+ shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
+ shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
+ shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
+
+ shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
+ shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
+ shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
+ shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
+}
+
+/** reflectionboard */
+static void draw_reflections(ModeInfo *mi, Chesscreen *cs)
+{
+ int i, j;
+
+ glEnable(GL_STENCIL_TEST);
+ glStencilFunc(GL_ALWAYS, 1, 1);
+ glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
+ glColorMask(0,0,0,0);
+ glDisable(GL_CULL_FACE);
+
+ glDisable(GL_DEPTH_TEST);
+ glBegin(GL_QUADS);
+
+ /* only draw white squares */
+ for(i = 0; i < BOARDSIZE; ++i) {
+ for(j = (BOARDSIZE+i) % 2; j < BOARDSIZE; j += 2) {
+ glVertex3f(i, 0.0, j + 1.0);
+ glVertex3f(i + 1.0, 0.0, j + 1.0);
+ glVertex3f(i + 1.0, 0.0, j);
+ glVertex3f(i, 0.0, j);
+ mi->polygon_count++;
+ }
+ }
+ glEnd();
+ glEnable(GL_DEPTH_TEST);
+
+ glColorMask(1, 1, 1, 1);
+ glStencilFunc(GL_EQUAL, 1, 1);
+ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
+
+ glPushMatrix();
+ glScalef(1.0, -1.0, 1.0);
+ glTranslatef(0.5, 0.0, 0.5);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, cs->position);
+ draw_pieces(mi, cs, cs->wire);
+ glPopMatrix();
+
+ glDisable(GL_STENCIL_TEST);
+ glLightfv(GL_LIGHT0, GL_POSITION, cs->position);
+
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+ glColorMask(1,1,1,1);
+}
+
+/** draws the scene */
+static void display(ModeInfo *mi, Chesscreen *cs)
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
+
+ mi->polygon_count = 0;
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ /** setup perspectiv */
+ glTranslatef(0.0, 0.0, -1.5*BOARDSIZE);
+ glRotatef(30.0, 1.0, 0.0, 0.0);
+ gltrackball_rotate (cs->trackball);
+
+ if (rotate)
+ glRotatef(cs->theta*100, 0.0, 1.0, 0.0);
+ glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE);
+
+/* cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */
+/* cs->position[2] = 4.0 + 1.0* cos(cs->theta*100*M_PI/180.0); */
+/* cs->position[1] = 5.0; */
+
+ /* this is the lone light that the shadow matrix is generated from */
+ cs->position[0] = 1.0;
+ cs->position[2] = 1.0;
+ cs->position[1] = 16.0;
+
+ cs->position2[0] = 4.0 + 8.0*-sin(cs->theta*100*M_PI/180.0);
+ cs->position2[2] = 4.0 + 8.0* cos(cs->theta*100*M_PI/180.0);
+
+ if (!cs->wire) {
+ glEnable(GL_LIGHTING);
+ glLightfv(GL_LIGHT0, GL_POSITION, cs->position);
+ glLightfv(GL_LIGHT1, GL_POSITION, cs->position2);
+ glEnable(GL_LIGHT0);
+ }
+
+ /** draw board, pieces */
+ if(!cs->wire) {
+ glEnable(GL_LIGHTING);
+ glEnable(GL_COLOR_MATERIAL);
+
+ if(reflections && !cs->wire) {
+ draw_reflections(mi, cs);
+ glEnable(GL_BLEND);
+ }
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, cs->boardtexture);
+ drawBoard(mi, cs);
+ glDisable(GL_TEXTURE_2D);
+
+ if(shadows) {
+ /* render shadows */
+ GLfloat m[4][4];
+ shadowmatrix(m, cs->ground, cs->position);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow);
+ glEnable(GL_BLEND);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);
+
+ /* display ant shadow */
+ glPushMatrix();
+ glTranslatef(0.0, 0.001, 0.0);
+ glMultMatrixf(m[0]);
+ glTranslatef(0.5, 0.01, 0.5);
+ draw_shadow_pieces(mi, cs, cs->wire);
+ glPopMatrix();
+
+ glEnable(GL_LIGHTING);
+ glDisable(GL_BLEND);
+ glEnable(GL_DEPTH_TEST);
+ }
+
+ if(reflections)
+ glDisable(GL_BLEND);
+ }
+ else
+ drawBoard(mi, cs);
+
+ glTranslatef(0.5, 0.0, 0.5);
+ draw_pieces(mi, cs, cs->wire);
+
+ if(!cs->wire) {
+ glDisable(GL_COLOR_MATERIAL);
+ glDisable(GL_LIGHTING);
+ }
+
+ if (!cs->button_down_p)
+ cs->theta += .002;
+}
+
+/** reshape handler */
+ENTRYPOINT void reshape_chess(ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0,y, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1/h, 2.0, 30.0);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+/** initialization handler */
+ENTRYPOINT void init_chess(ModeInfo *mi)
+{
+ Chesscreen *cs;
+ int screen = MI_SCREEN(mi);
+
+ MI_INIT(mi, qs);
+
+ cs = &qs[screen];
+ cs->window = MI_WINDOW(mi);
+ cs->wire = MI_IS_WIREFRAME(mi);
+ cs->trackball = gltrackball_init (False);
+
+ cs->oldwhite = -1;
+
+ cs->colors[0][0] = 1.0;
+ cs->colors[0][1] = 0.5;
+ cs->colors[0][2] = 0.0;
+
+ cs->colors[1][0] = 0.6;
+ cs->colors[1][1] = 0.6;
+ cs->colors[1][2] = 0.6;
+
+ cs->done = 1;
+ cs->count = 99;
+ cs->mod = 1.4;
+
+/* cs->position[0] = 0.0; */
+/* cs->position[1] = 5.0; */
+/* cs->position[2] = 5.0; */
+/* cs->position[3] = 1.0; */
+
+ cs->position[0] = 0.0;
+ cs->position[1] = 24.0;
+ cs->position[2] = 2.0;
+ cs->position[3] = 1.0;
+
+
+ cs->position2[0] = 5.0;
+ cs->position2[1] = 5.0;
+ cs->position2[2] = 5.0;
+ cs->position2[3] = 1.0;
+
+ cs->ground[0] = 0.0;
+ cs->ground[1] = 1.0;
+ cs->ground[2] = 0.0;
+ cs->ground[3] = -0.00001;
+
+ cs->oldgame = -1;
+
+
+ if((cs->glx_context = init_GL(mi)))
+ reshape_chess(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ else
+ MI_CLEARWINDOW(mi);
+
+ if (!cs->wire) {
+ glDepthFunc(GL_LEQUAL);
+ glClearStencil(0);
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+
+ make_piece_texture(cs);
+ make_board_texture(cs);
+ }
+ chessmodels_gen_lists( classic, cs->poly_counts);
+
+# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
+ cs->wire = 0;
+# endif
+
+ if(!cs->wire) {
+ setup_lights(cs);
+ glColorMaterial(GL_FRONT, GL_DIFFUSE);
+ glShadeModel(smooth ? GL_SMOOTH : GL_FLAT);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_DEPTH_TEST);
+ }
+ else
+ glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+}
+
+/** does dirty work drawing scene, moving pieces */
+ENTRYPOINT void draw_chess(ModeInfo *mi)
+{
+ Chesscreen *cs = &qs[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if(!cs->glx_context)
+ return;
+
+ glXMakeCurrent(disp, w, *(cs->glx_context));
+
+ /** code for moving a piece */
+ if(cs->moving && ++cs->steps == 100) {
+ cs->moving = cs->count = cs->steps = cs->take = 0;
+ cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]] = cs->mpiece;
+ ++cs->mc;
+
+ if(cs->mc == cs->game.movecount) {
+ cs->done = 1;
+ cs->mc = 0;
+ }
+ }
+
+ if(++cs->count == 100) {
+ if(!cs->done) {
+ cs->mpiece = cs->game.board[cs->game.moves[cs->mc][0]][cs->game.moves[cs->mc][1]];
+ cs->game.board[cs->game.moves[cs->mc][0]][cs->game.moves[cs->mc][1]] = NONE;
+
+ if((cs->tpiece = cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]])) {
+ cs->game.board[cs->game.moves[cs->mc][2]][cs->game.moves[cs->mc][3]] = NONE;
+ cs->take = 1;
+ }
+
+ cs->from[0] = cs->game.moves[cs->mc][0];
+ cs->from[1] = cs->game.moves[cs->mc][1];
+ cs->to[0] = cs->game.moves[cs->mc][2];
+ cs->to[1] = cs->game.moves[cs->mc][3];
+
+ cs->dz = (cs->to[0] - cs->from[0]) / 100;
+ cs->dx = (cs->to[1] - cs->from[1]) / 100;
+ cs->steps = 0;
+ cs->moving = 1;
+ }
+ else if(cs->done == 1) {
+ int newgame = cs->oldgame;
+ while(newgame == cs->oldgame)
+ newgame = random()%GAMES;
+
+ /* mod the mod */
+ cs->mod = 0.6 + (random()%20)/10.0;
+
+ /* same old game */
+ cs->oldgame = newgame;
+ cs->game = games[cs->oldgame];
+ build_colors(cs);
+ cs->done = 2;
+ cs->count = 0;
+ }
+ else {
+ cs->done = 0;
+ cs->count = 0;
+ }
+ }
+
+ /* set lighting */
+ if(cs->done) {
+ glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION,
+ cs->done == 1 ? 1.0+0.1*cs->count : 100.0/cs->count);
+ glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION,
+ cs->done == 1 ? 1.0+0.1*cs->count : 100.0/cs->count);
+ glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.14);
+ glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.14);
+ }
+
+ display(mi, cs);
+
+ if(mi->fps_p) do_fps(mi);
+ glFinish();
+ glXSwapBuffers(disp, w);
+}
+
+XSCREENSAVER_MODULE_2 ("Endgame", endgame, chess)
+
+#endif
diff --git a/hacks/glx/endgame.man b/hacks/glx/endgame.man
new file mode 100644
index 0000000..93ca5c3
--- /dev/null
+++ b/hacks/glx/endgame.man
@@ -0,0 +1,72 @@
+.TH XScreenSaver 1 "5-May-2004"
+.SH NAME
+endgame \- endgame chess screensaver
+.SH SYNOPSIS
+.B endgame
+[\-display \fIhost:display.screen\fP]
+[\-window]
+[\-root]
+[\-install]
+[\-visual \fIvisual\fP]
+[\-delay \fImicroseconds\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+endgame replays a brilliant chess ending
+.SH OPTIONS
+.I endgame
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-shadows
+Project pieces against the board with dark blend.
+.TP 8
+.B \-reflections
+Reflect pieces in light board squares.
+.TP 8
+.B \-classic
+Use the original low-polygon piece models.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH BUGS
+It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Blair Tennessy. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy , 20-April-2002.
+
diff --git a/hacks/glx/energystream.c b/hacks/glx/energystream.c
new file mode 100644
index 0000000..7221f0d
--- /dev/null
+++ b/hacks/glx/energystream.c
@@ -0,0 +1,534 @@
+/* energystream, Copyright (c) 2016 Eugene Sandulenko
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Based on Public Domain code by konrad "yoghurt" zagorowicz
+ * for Tesla demo by Sunflower (http://www.pouet.net/prod.php?which=33)
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 30 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define release_stream 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "gltrackball.h"
+#include "rotator.h"
+#include
+
+#ifdef USE_GL /* whole file */
+
+static float change_time = 0;
+static float change_time1 = 25;
+static float change_time2 = 40;
+static float change_time3 = 60;
+
+#define DEF_STREAMS "16"
+
+#include
+#include
+
+typedef struct timeval streamtime;
+
+#define GETSECS(t) ((t).tv_sec)
+#define GETMSECS(t) ((t).tv_usec/1000)
+
+#define DEF_SPIN "False"
+#define DEF_WANDER "False"
+#define DEF_SPEED "1.0"
+
+
+typedef struct {
+ float x, y, z;
+} Vector;
+
+typedef struct {
+ Vector *flares;
+ int num_flares;
+ GLuint flare_tex;
+ float speed;
+} flare_stream;
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ time_t start_time;
+
+ int num_streams;
+ flare_stream *streams;
+
+} stream_configuration;
+
+static stream_configuration *ess = NULL;
+
+static int num_streams;
+static Bool do_spin;
+static GLfloat global_speed;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-streams", ".streams", XrmoptionSepArg, 0 },
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" }
+};
+
+static argtype vars[] = {
+ {&num_streams, "streams", "Streams", DEF_STREAMS, t_Int},
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&global_speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt stream_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+static void gettime(streamtime *t)
+{
+#ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday(t, &tzp);
+#else /* !GETTIMEOFDAY_TWO_ARGS */
+ gettimeofday(t);
+#endif /* !GETTIMEOFDAY_TWO_ARGS */
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_stream (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glViewport (0, 0, (GLint) width, (GLint) height);
+
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity ();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity ();
+ gluLookAt (0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear (GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+stream_handle_event (ModeInfo *mi, XEvent *event)
+{
+ stream_configuration *es = &ess[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, es->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &es->button_down_p))
+ return True;
+
+ return False;
+}
+
+#define TEX_WIDTH 256
+#define TEX_HEIGHT 256
+#define COEFF 0.2
+
+static GLuint gen_texture (void)
+{
+ int x, y, i;
+ float color;
+ GLuint tex;
+
+ unsigned char *texture = (unsigned char *)calloc (TEX_WIDTH * TEX_HEIGHT, 4);
+ unsigned char *ptr = texture;
+
+ float tint[3];
+ for (i = 0; i < 3; i++)
+ tint[i] = 1.0 * random() / RAND_MAX;
+
+ for (y = 0; y < TEX_HEIGHT; y++) {
+ for (x = 0; x < TEX_WIDTH; x++) {
+ color = 255 - sqrt((x - TEX_WIDTH / 2) * (x - TEX_WIDTH / 2) / COEFF
+ + (y - TEX_HEIGHT / 2) * (y - TEX_HEIGHT / 2) / COEFF);
+
+ if (color < 0)
+ color = 0;
+
+ for (i = 0; i < 3; i++)
+ ptr[i] = (unsigned char)(color * tint[i]);
+ ptr[3] = color ? 255 : 0;
+
+ ptr += 4;
+ }
+ }
+
+ glGenTextures (1, &tex);
+#ifdef HAVE_GLBINDTEXTURE
+ glBindTexture (GL_TEXTURE_2D, tex);
+#endif /* HAVE_GLBINDTEXTURE */
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 4);
+ clear_gl_error ();
+ glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, TEX_WIDTH, TEX_HEIGHT,
+ 0, GL_RGBA, GL_UNSIGNED_BYTE, texture);
+ check_gl_error ("texture");
+
+ /* Texture parameters, LINEAR scaling for better texture quality */
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ free (texture);
+
+ return tex;
+}
+
+static inline void vector_copy (Vector *a, Vector *b)
+{
+ a->x = b->x;
+ a->y = b->y;
+ a->z = b->z;
+}
+
+/* a += b */
+static inline void vector_add (Vector *a, Vector *b)
+{
+ a->x += b->x;
+ a->y += b->y;
+ a->z += b->z;
+}
+
+/* a -= b */
+static inline void vector_sub (Vector *a, Vector *b)
+{
+ a->x -= b->x;
+ a->y -= b->y;
+ a->z -= b->z;
+}
+
+static void init_flare_stream (flare_stream *s, int num_flares, float bx, float by, float bz, float speed)
+{
+ int i;
+
+ s->flares = (Vector *) calloc (num_flares, sizeof (Vector));
+ s->num_flares = num_flares;
+ s->flare_tex = gen_texture();
+ s->speed = speed;
+
+ for (i = 0; i != s->num_flares; i++)
+ {
+ s->flares[i].x = -800.0f * random() / RAND_MAX - 1150 + bx;
+ s->flares[i].y = 10.0f * random() / RAND_MAX - 20 + by;
+ s->flares[i].z = 10.0f * random() / RAND_MAX - 20 + bz;
+ }
+}
+
+static void render_flare_stream (flare_stream *s, float cur_time, Vector *vx, Vector *vy, float alpha)
+{
+ float fMultipler = 1;
+ int i;
+
+ if (s->flare_tex == -1)
+ return;
+ if (!s->num_flares)
+ return;
+
+ if (cur_time < change_time)
+ return;
+
+ cur_time -= change_time;
+
+ glColor4f (1.0, 1, 1, alpha);
+#ifdef HAVE_GLBINDTEXTURE
+ glBindTexture (GL_TEXTURE_2D, s->flare_tex);
+#endif
+
+ glBegin (GL_QUADS);
+
+ if (cur_time + change_time > change_time1)
+ {
+ if (cur_time + change_time > change_time2)
+ {
+ fMultipler = 2.5;
+ }
+ else
+ fMultipler = 2;
+ }
+
+ for (i = 0; i != s->num_flares; i++)
+ {
+ Vector flare_pos;
+ Vector cc;
+
+ flare_pos.x = fmod (s->flares[i].x + cur_time * s->speed * fMultipler, 800) - 400;
+ flare_pos.y = s->flares[i].y + 2 * sin (cur_time * 7 + s->flares[i].x);
+ flare_pos.z = s->flares[i].z + 2 * cos (cur_time * 7 + i * 3.14);
+
+ glTexCoord2f (0, 0);
+ vector_copy (&cc, &flare_pos);
+ vector_sub (&cc, vx);
+ vector_add (&cc, vy);
+ glVertex3fv ((float *)&cc);
+
+ glTexCoord2f ( 1, 0 );
+ vector_copy (&cc, &flare_pos);
+ vector_add (&cc, vx);
+ vector_add (&cc, vy);
+ glVertex3fv ((float *)&cc);
+
+ glTexCoord2f ( 1, 1 );
+ vector_copy (&cc, &flare_pos);
+ vector_add (&cc, vx);
+ vector_sub (&cc, vy);
+ glVertex3fv ((float *)&cc);
+
+ glTexCoord2f ( 0, 1 );
+ vector_copy (&cc, &flare_pos);
+ vector_sub (&cc, vx);
+ vector_sub (&cc, vy);
+ glVertex3fv ((float *)&cc);
+ }
+
+ glEnd ();
+}
+
+ENTRYPOINT void
+init_stream (ModeInfo *mi)
+{
+ stream_configuration *es;
+ streamtime current_time;
+
+ MI_INIT (mi, ess);
+
+ es = &ess[MI_SCREEN(mi)];
+
+ es->glx_context = init_GL (mi);
+
+ reshape_stream (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ gettime (¤t_time);
+ es->start_time = GETSECS(current_time) * 1000 + GETMSECS(current_time);
+
+ es->num_streams = num_streams;
+
+ es->streams = (flare_stream *) calloc (es->num_streams, sizeof(flare_stream));
+
+ init_flare_stream (&es->streams[0], 150, 0, 50, 0, 300);
+ init_flare_stream (&es->streams[1], 150, 0, 0, 0, 150);
+ init_flare_stream (&es->streams[2], 150, 0, 90, 60, 250);
+ init_flare_stream (&es->streams[3], 150, 0, -100, 30, 160);
+ init_flare_stream (&es->streams[4], 150, 0, 50, -100, 340);
+ init_flare_stream (&es->streams[5], 150, 0, -50, 50, 270 );
+ init_flare_stream (&es->streams[6], 150, 0, 100, 50, 180);
+ init_flare_stream (&es->streams[7], 150, 0, -30, 90, 130);
+
+ init_flare_stream (&es->streams[8], 150, 0, 150, 10, 200);
+ init_flare_stream (&es->streams[9], 150, 0, 100, -100, 210);
+ init_flare_stream (&es->streams[10], 150, 0, 190, 160, 220);
+ init_flare_stream (&es->streams[11], 150, 0, -200, 130, 230);
+ init_flare_stream (&es->streams[12], 150, 0, 150, -200, 240);
+ init_flare_stream (&es->streams[13], 150, 0, -150, 250, 160);
+ init_flare_stream (&es->streams[14], 150, 0, 200, 150, 230);
+ init_flare_stream (&es->streams[15], 150, 0, -130, 190, 250);
+
+ {
+ double spin_speed = 0.5 * global_speed;
+ double wander_speed = 0.02 * global_speed;
+ double spin_accel = 1.1;
+
+ es->rot = make_rotator (do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ do_spin ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ True);
+ es->trackball = gltrackball_init (True);
+ }
+}
+
+ENTRYPOINT void
+free_stream (ModeInfo * mi)
+{
+ stream_configuration *es = &ess[MI_SCREEN(mi)];
+ int i;
+
+ if (es->glx_context) {
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+
+ for (i = 0; i < es->num_streams; i++) {
+ free (es->streams[i].flares);
+ glDeleteTextures (1, &es->streams[i].flare_tex);
+ }
+
+ free (es->streams);
+ }
+}
+
+
+static void inverse_matrix (float m[16]) {
+ double a,b,c,d,e,f,g,h,i,j,k,l;
+ register double dW;
+
+ a = m[ 0]; b = m[ 1]; c = m[ 2];
+ d = m[ 4]; e = m[ 5]; f = m[ 6];
+ g = m[ 8]; h = m[ 9]; i = m[10];
+ j = m[12]; k = m[13]; l = m[14];
+
+ dW = 1.0 / (a * (e * i - f * h)
+ - (b * (d * i - f * g)
+ + c * (e * g - d * h)));
+
+ m[ 0]= (float)((e * i - f * h) * dW);
+ m[ 1]= (float)((c * h - b * i) * dW);
+ m[ 2]= (float)((b * f - c * e) * dW);
+
+ m[ 4]= (float)((f * g - d * i) * dW);
+ m[ 5]= (float)((a * i - c * g) * dW);
+ m[ 6]= (float)((c * d - a * f) * dW);
+
+ m[ 8]= (float)((d * h - e * g) * dW);
+ m[ 9]= (float)((b * g - a * h) * dW);
+ m[10]= (float)((a * e - b * d) * dW);
+
+ m[12]= (float)((e * (g * l - i * j)
+ + f * (h * j - g * k)
+ - d * (h * l - i * k)) * dW);
+ m[13]= (float)((a * (h * l - i * k)
+ + b * (i * j - g * l)
+ + c * (g * k - h * j)) * dW);
+ m[14]= (float)((b * (d * l - f * j)
+ + c * (e * j - d * k)
+ - a * (e * l - f * k)) * dW);
+}
+
+ENTRYPOINT void
+draw_stream (ModeInfo *mi)
+{
+ stream_configuration *es = &ess[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ streamtime current_time;
+ float cur_time;
+ int i;
+ float alpha = 1.0;
+ Vector vx;
+ Vector vy;
+ GLfloat m[4*4];
+
+ if (!es->glx_context)
+ return;
+
+ gettime (¤t_time);
+
+ cur_time = (float)(GETSECS(current_time) * 1000 + GETMSECS(current_time) - es->start_time) / 1000.0;
+ cur_time *= global_speed;
+
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity ();
+ glFrustum (-.6f, .6f, -.45f, .45f, 1, 1000);
+
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity ();
+
+ glEnable (GL_LIGHTING);
+ glEnable (GL_TEXTURE_2D);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE);
+ glDisable (GL_CULL_FACE);
+ glDisable (GL_DEPTH_TEST);
+ glDepthMask (0);
+
+ glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
+
+ glTranslatef (0, 0, -300);
+ glRotatef (cur_time * 30, 1, 0, 0);
+ glRotatef (30 * sin(cur_time / 3) + 10, 0, 0, 1);
+
+ {
+ double x, y, z;
+ get_position (es->rot, &x, &y, &z, !es->button_down_p);
+ glTranslatef((x - 0.5) * 8,
+ (y - 0.5) * 8,
+ (z - 0.5) * 15);
+
+ gltrackball_rotate (es->trackball);
+
+ get_rotation (es->rot, &x, &y, &z, !es->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+ }
+
+ if (cur_time > change_time1)
+ {
+ if (cur_time > change_time2)
+ {
+ glRotatef (90, 0, 1, 0);
+
+ if (cur_time > change_time3)
+ es->start_time = GETSECS(current_time) * 1000 + GETMSECS(current_time) - 5000;
+ }
+ else
+ {
+ glRotatef (180, 0, 1, 0);
+ }
+ }
+
+ glEnable ( GL_FOG);
+ glFogf (GL_FOG_START, 200);
+ glFogf (GL_FOG_END, 500);
+ glFogf (GL_FOG_MODE, GL_LINEAR);
+
+ glGetFloatv (GL_MODELVIEW_MATRIX, m);
+
+ inverse_matrix (m);
+
+ vx.x = m[0] * 10;
+ vx.y = m[1] * 10;
+ vx.z = m[2] * 10;
+
+ vy.x = m[4] * 10;
+ vy.y = m[5] * 10;
+ vy.z = m[6] * 10;
+
+ mi->polygon_count = 0;
+
+ for (i = 0; i != es->num_streams; i++)
+ {
+ mi->polygon_count += es->streams[i].num_flares;
+ render_flare_stream (&es->streams[i], cur_time, &vx, &vy, alpha);
+ }
+
+ glDisable (GL_TEXTURE_2D);
+ glDisable (GL_LIGHTING);
+ glDisable (GL_FOG);
+ glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers (dpy, window);
+}
+
+XSCREENSAVER_MODULE_2("EnergyStream", energystream, stream)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/energystream.man b/hacks/glx/energystream.man
new file mode 100644
index 0000000..c2591f3
--- /dev/null
+++ b/hacks/glx/energystream.man
@@ -0,0 +1,56 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+energystream - a flow of particles which form an energy stream
+.SH SYNOPSIS
+.B energystream
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-no-wander]
+[\-no-spin]
+[\-fps]
+.SH DESCRIPTION
+Draws a set of flowing particles with camera flying around and through it.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-wander | \-no-wander
+Whether the camera should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the camera should spin.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2016 by Eugene Sandulenko. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Eugene Sandulenko.
diff --git a/hacks/glx/engine.c b/hacks/glx/engine.c
new file mode 100644
index 0000000..0f39b8d
--- /dev/null
+++ b/hacks/glx/engine.c
@@ -0,0 +1,1006 @@
+/*
+ * engine.c - GL representation of a 4 stroke engine
+ *
+ * version 2.00
+ *
+ * Copyright (C) 2001 Ben Buxton (bb@cactii.net)
+ * modified by Ed Beroset (beroset@mindspring.com)
+ * new to 2.0 version is:
+ * - command line argument to specify number of cylinders
+ * - command line argument to specify included angle of engine
+ * - removed broken command line argument to specify rotation speed
+ * - included crankshaft shapes and firing orders for real engines
+ * verified using the Bosch _Automotive Handbook_, 5th edition, pp 402,403
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*suppressRotationAnimation: True\n" \
+ "*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \
+
+# define free_engine 0
+# define release_engine 0
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#include "texfont.h"
+#include "rotator.h"
+#include "gltrackball.h"
+
+/* lifted from lament.c */
+#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+
+#ifdef USE_GL
+
+#define DEF_ENGINE "(none)"
+#define DEF_TITLES "False"
+#define DEF_SPIN "True"
+#define DEF_MOVE "True"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static char *which_engine;
+static int move;
+static int spin;
+static Bool do_titles;
+
+static XrmOptionDescRec opts[] = {
+ {"-engine", ".engine.engine", XrmoptionSepArg, DEF_ENGINE },
+ {"-move", ".engine.move", XrmoptionNoArg, "True" },
+ {"+move", ".engine.move", XrmoptionNoArg, "False" },
+ {"-spin", ".engine.spin", XrmoptionNoArg, "True" },
+ {"+spin", ".engine.spin", XrmoptionNoArg, "False" },
+ { "-titles", ".engine.titles", XrmoptionNoArg, "True" },
+ { "+titles", ".engine.titles", XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+ {&which_engine, "engine", "Engine", DEF_ENGINE, t_String},
+ {&move, "move", "Move", DEF_MOVE, t_Bool},
+ {&spin, "spin", "Spin", DEF_SPIN, t_Bool},
+ {&do_titles, "titles", "Titles", DEF_TITLES, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt engine_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct engine_description =
+{"engine", "init_engine", "draw_engine", NULL,
+ "draw_engine", "init_engine", NULL, &engine_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "A four stroke engine", 0, NULL};
+
+#endif
+
+/* these defines are used to provide symbolic means
+ * by which to refer to various portions or multiples
+ * of a cyle in degrees
+ */
+#define HALFREV 180
+#define ONEREV 360
+#define TWOREV 720
+
+#define MOVE_MULT 0.05
+
+#define RAND_RANGE(min, max) ((min) + (max - min) * f_rand())
+
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+ GLfloat x, y, z; /* position */
+ GLfloat dx, dy, dz; /* position */
+ GLfloat an1, an2, an3; /* internal angle */
+ GLfloat nx, ny, nz; /* spin vector */
+ GLfloat a; /* spin angle */
+ GLfloat da; /* spin speed */
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ texture_font_data *font_data;
+ char *engine_name;
+ int engineType;
+ int movepaused;
+
+ float crankOffset;
+ float crankWidth;
+
+ int win_w, win_h;
+
+ float sin_table[TWOREV];
+ float cos_table[TWOREV];
+ float tan_table[TWOREV];
+
+ GLfloat boom_red[4];
+ GLfloat boom_lpos[4];
+ GLfloat boom_d, boom_wd;
+ int boom_time;
+
+ GLfloat viewer[3], lookat[3];
+
+ int display_a;
+ GLfloat ln[730], yp[730], ang[730];
+ int ln_init;
+ int lastPlug;
+
+ GLuint shaft_list, piston_list;
+ int shaft_polys, piston_polys;
+
+} Engine;
+
+static Engine *engine = NULL;
+
+static const GLfloat lightpos[] = {7.0, 7.0, 12, 1.0};
+static const GLfloat light_sp[] = {0.8, 0.8, 0.8, 0.5};
+static const GLfloat red[] = {1.0, 0, 0, 1.0};
+static const GLfloat green[] = {0.0, 1, 0, 1.0};
+static const GLfloat blue[] = {0, 0, 1, 1.0};
+static const GLfloat white[] = {1.0, 1, 1, 1.0};
+static const GLfloat yellow_t[] = {1, 1, 0, 0.4};
+
+static GLvoid normal(GLfloat [], GLfloat [], GLfloat [],
+ GLfloat *, GLfloat *, GLfloat *);
+
+/*
+ * this table represents both the firing order and included angle of engine.
+ * To simplify things, we always number from 0 starting at the flywheel and
+ * moving down the crankshaft toward the back of the engine. This doesn't
+ * always match manufacturer's schemes. For example, the Porsche 911 engine
+ * is a flat six with the following configuration (Porsche's numbering):
+ *
+ * 3 2 1
+ * |= firing order is 1-6-2-4-3-5 in this diagram
+ * 6 5 4
+ *
+ * We renumber these using our scheme but preserve the effective firing order:
+ *
+ * 0 2 4
+ * |= firing order is 4-1-2-5-0-3 in this diagram
+ * 1 3 5
+ *
+ * To avoid going completely insane, we also reorder these so the newly
+ * renumbered cylinder 0 is always first: 0-3-4-1-2-5
+ *
+ * For a flat 6, the included angle is 180 degrees (0 would be a inline
+ * engine). Because these are all four-stroke engines, each piston goes
+ * through 720 degrees of rotation for each time the spark plug sparks,
+ * so in this case, we would use the following angles:
+ *
+ * cylinder firing order angle
+ * -------- ------------ -----
+ * 0 0 0
+ * 1 3 360
+ * 2 4 240
+ * 3 1 600
+ * 4 2 480
+ * 5 5 120
+ *
+ */
+
+typedef struct
+{
+ int cylinders;
+ int includedAngle;
+ int pistonAngle[12]; /* twelve cylinders should suffice... */
+ int speed; /* step size in degrees for engine speed */
+ const char *engineName; /* currently unused */
+} engine_type;
+
+static const engine_type engines[] = {
+ { 3, 0, { 0, 240, 480, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "Honda Insight" },
+ { 4, 0, { 0, 180, 540, 360, 0, 0,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "BMW M3" },
+ { 4, 180, { 0, 360, 180, 540, 0, 0,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "VW Beetle" },
+ { 5, 0, { 0, 576, 144, 432, 288, 0,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "Audi Quattro" },
+ { 6, 0, { 0, 240, 480, 120, 600, 360,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "BMW M5" },
+ { 6, 90, { 0, 360, 480, 120, 240, 600,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "Subaru XT" },
+ { 6, 180, { 0, 360, 240, 600, 480, 120,
+ 0, 0, 0, 0, 0, 0 }, 12,
+ "Porsche 911" },
+ { 8, 90, { 0, 450, 90, 180, 270, 360,
+ 540, 630, 0, 0, 0, 0 }, 15,
+ "Corvette Z06" },
+ {10, 90, { 0, 72, 432, 504, 288, 360,
+ 144, 216, 576, 648, 0, 0 }, 12,
+ "Dodge Viper" },
+ {12, 60, { 0, 300, 240, 540, 480, 60,
+ 120, 420, 600, 180, 360, 660 }, 12,
+ "Jaguar XKE" },
+};
+
+/* this define is just a little shorter way of referring to members of the
+ * table above
+ */
+#define ENG engines[e->engineType]
+
+/* given a number of cylinders and an included angle, finds matching engine */
+static int
+find_engine(char *name)
+{
+ unsigned int i;
+ char *s;
+
+ if (!name || !*name || !strcasecmp (name, "(none)"))
+ return (random() % countof(engines));
+
+ for (s = name; *s; s++)
+ if (*s == '-' || *s == '_') *s = ' ';
+
+ for (i = 0; i < countof(engines); i++) {
+ if (!strcasecmp(name, engines[i].engineName))
+ return i;
+ }
+
+ fprintf (stderr, "%s: unknown engine type \"%s\"\n", progname, name);
+ fprintf (stderr, "%s: available models are:\n", progname);
+ for (i = 0; i < countof(engines); i++) {
+ fprintf (stderr, "\t %-13s (%d cylinders",
+ engines[i].engineName, engines[i].cylinders);
+ if (engines[i].includedAngle == 0)
+ fprintf (stderr, ")\n");
+ else if (engines[i].includedAngle == 180)
+ fprintf (stderr, ", flat)\n");
+ else
+ fprintf (stderr, ", V)\n");
+ }
+ exit(1);
+}
+
+/* we use trig tables to speed things up - 200 calls to sin()
+ in one frame can be a bit harsh..
+*/
+
+static void make_tables(Engine *e)
+{
+ int i;
+ float f;
+
+ f = ONEREV / (M_PI * 2);
+ for (i = 0 ; i < TWOREV ; i++) {
+ e->sin_table[i] = sin(i/f);
+ }
+ for (i = 0 ; i < TWOREV ; i++) {
+ e->cos_table[i] = cos(i/f);
+ }
+ for (i = 0 ; i < TWOREV ; i++) {
+ e->tan_table[i] = tan(i/f);
+ }
+}
+
+/* if inner and outer are the same, we draw a cylinder, not a tube */
+/* for a tube, endcaps is 0 (none), 1 (left), 2 (right) or 3(both) */
+/* angle is how far around the axis to go (up to 360) */
+
+static int cylinder (Engine *e, GLfloat x, GLfloat y, GLfloat z,
+ float length, float outer, float inner, int endcaps, int sang, int eang)
+{
+ int polys = 0;
+ int a; /* current angle around cylinder */
+ int b = 0; /* previous */
+ int angle, norm, step, sangle;
+ float z1, y1, z2, y2, ex=0;
+ float Z1, Y1, Z2, Y2, xl;
+ GLfloat y2c[TWOREV], z2c[TWOREV];
+ int nsegs, tube = 0;
+
+ glPushMatrix();
+ nsegs = outer*(MAX(e->win_w, e->win_h)/200);
+ nsegs = MAX(nsegs, 6);
+ nsegs = MAX(nsegs, 40);
+ if (nsegs % 2)
+ nsegs += 1;
+ sangle = sang;
+ angle = eang;
+ z1 = e->cos_table[sangle]*outer+z; y1 = e->sin_table[sangle] * outer+y;
+ Z1 = e->cos_table[sangle] * inner+z; Y1 = e->sin_table[sangle]*inner+y ;
+ Z2 = z;
+ Y2 = y;
+ xl = x + length;
+ if (inner < outer && endcaps < 3) tube = 1;
+ step = ONEREV/nsegs;
+
+ glBegin(GL_QUADS);
+ for (a = sangle ; a <= angle || b <= angle ; a+= step) {
+ y2=outer*(float)e->sin_table[a]+y;
+ z2=outer*(float)e->cos_table[a]+z;
+ if (endcaps) {
+ y2c[a] = y2;
+ z2c[a] = z2; /* cache for later */
+ }
+ if (tube) {
+ Y2=inner*(float)e->sin_table[a]+y;
+ Z2=inner*(float)e->cos_table[a]+z;
+ }
+ glNormal3f(0, y1, z1);
+ glVertex3f(x,y1,z1);
+ glVertex3f(xl,y1,z1);
+ glNormal3f(0, y2, z2);
+ glVertex3f(xl,y2,z2);
+ glVertex3f(x,y2,z2);
+ polys++;
+ if (a == sangle && angle - sangle < ONEREV) {
+ if (tube)
+ glVertex3f(x, Y1, Z1);
+ else
+ glVertex3f(x, y, z);
+ glVertex3f(x, y1, z1);
+ glVertex3f(xl, y1, z1);
+ if (tube)
+ glVertex3f(xl, Z1, Z1);
+ else
+ glVertex3f(xl, y, z);
+ polys++;
+ }
+ if (tube) {
+ if (endcaps != 1) {
+ glNormal3f(-1, 0, 0); /* left end */
+ glVertex3f(x, y1, z1);
+ glVertex3f(x, y2, z2);
+ glVertex3f(x, Y2, Z2);
+ glVertex3f(x, Y1, Z1);
+ polys++;
+ }
+
+ glNormal3f(0, -Y1, -Z1); /* inner surface */
+ glVertex3f(x, Y1, Z1);
+ glVertex3f(xl, Y1, Z1);
+ glNormal3f(0, -Y2, -Z2);
+ glVertex3f(xl, Y2, Z2);
+ glVertex3f(x, Y2, Z2);
+ polys++;
+
+ if (endcaps != 2) {
+ glNormal3f(1, 0, 0); /* right end */
+ glVertex3f(xl, y1, z1);
+ glVertex3f(xl, y2, z2);
+ glVertex3f(xl, Y2, Z2);
+ glVertex3f(xl, Y1, Z1);
+ polys++;
+ }
+ }
+
+ z1=z2; y1=y2;
+ Z1=Z2; Y1=Y2;
+ b = a;
+ }
+ glEnd();
+
+ if (angle - sangle < ONEREV) {
+ GLfloat nx, ny, nz;
+ GLfloat v1[3], v2[3], v3[3];
+ v1[0] = x; v1[1] = y; v1[2] = z;
+ v2[0] = x; v2[1] = y1; v2[2] = z1;
+ v3[0] = xl; v3[1] = y1; v3[2] = z1;
+ normal(&v2[0], &v1[0], &v3[0], &nx, &ny, &nz);
+ glBegin(GL_QUADS);
+ glNormal3f(nx, ny, nz);
+ glVertex3f(x, y, z);
+ glVertex3f(x, y1, z1);
+ glVertex3f(xl, y1, z1);
+ glVertex3f(xl, y, z);
+ polys++;
+ glEnd();
+ }
+ if (endcaps) {
+ GLfloat end, start;
+ if (tube) {
+ if (endcaps == 1) {
+ end = 0;
+ start = 0;
+ } else if (endcaps == 2) {
+ start = end = length+0.01;
+ } else {
+ end = length+0.02; start = -0.01;
+ }
+ norm = (ex == length+0.01) ? -1 : 1;
+ } else {
+ end = length;
+ start = 0;
+ norm = -1;
+ }
+
+ for(ex = start ; ex <= end ; ex += length) {
+ z1 = outer*e->cos_table[sangle]+z;
+ y1 = y+e->sin_table[sangle]*outer;
+ step = ONEREV/nsegs;
+ glBegin(GL_TRIANGLES);
+ b = 0;
+ for (a = sangle ; a <= angle || b <= angle; a+= step) {
+ glNormal3f(norm, 0, 0);
+ glVertex3f(x+ex,y, z);
+ glVertex3f(x+ex,y1,z1);
+ glVertex3f(x+ex,y2c[a],z2c[a]);
+ polys++;
+ y1 = y2c[a]; z1 = z2c[a];
+ b = a;
+ }
+ if (!tube) norm = 1;
+ glEnd();
+ }
+ }
+ glPopMatrix();
+ return polys;
+}
+
+/* this is just a convenience function to make a solid rod */
+static int rod (Engine *e, GLfloat x, GLfloat y, GLfloat z, float length, float diameter)
+{
+ return cylinder(e, x, y, z, length, diameter, diameter, 3, 0, ONEREV);
+}
+
+static GLvoid normal(GLfloat v1[], GLfloat v2[], GLfloat v3[],
+ GLfloat *nx, GLfloat *ny, GLfloat *nz)
+{
+ GLfloat x, y, z, X, Y, Z;
+
+ x = v2[0]-v1[0];
+ y = v2[1]-v1[1];
+ z = v2[2]-v1[2];
+ X = v3[0]-v1[0];
+ Y = v3[1]-v1[1];
+ Z = v3[2]-v1[2];
+
+ *nx = Y*z - Z*y;
+ *ny = Z*x - X*z;
+ *nz = X*y - Y*x;
+
+}
+
+
+
+static int Rect(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h,
+ GLfloat t)
+{
+ int polys = 0;
+ GLfloat yh;
+ GLfloat xw;
+ GLfloat zt;
+
+ yh = y+h; xw = x+w; zt = z - t;
+
+ glBegin(GL_QUADS); /* front */
+ glNormal3f(0, 0, 1);
+ glVertex3f(x, y, z);
+ glVertex3f(x, yh, z);
+ glVertex3f(xw, yh, z);
+ glVertex3f(xw, y, z);
+ polys++;
+ /* back */
+ glNormal3f(0, 0, -1);
+ glVertex3f(x, y, zt);
+ glVertex3f(x, yh, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, y, zt);
+ polys++;
+ /* top */
+ glNormal3f(0, 1, 0);
+ glVertex3f(x, yh, z);
+ glVertex3f(x, yh, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, yh, z);
+ polys++;
+ /* bottom */
+ glNormal3f(0, -1, 0);
+ glVertex3f(x, y, z);
+ glVertex3f(x, y, zt);
+ glVertex3f(xw, y, zt);
+ glVertex3f(xw, y, z);
+ polys++;
+ /* left */
+ glNormal3f(-1, 0, 0);
+ glVertex3f(x, y, z);
+ glVertex3f(x, y, zt);
+ glVertex3f(x, yh, zt);
+ glVertex3f(x, yh, z);
+ polys++;
+ /* right */
+ glNormal3f(1, 0, 0);
+ glVertex3f(xw, y, z);
+ glVertex3f(xw, y, zt);
+ glVertex3f(xw, yh, zt);
+ glVertex3f(xw, yh, z);
+ polys++;
+ glEnd();
+ return polys;
+}
+
+static int makepiston(Engine *e)
+{
+ int polys = 0;
+ GLfloat colour[] = {0.6, 0.6, 0.6, 1.0};
+
+ /* if (e->piston_list) glDeleteLists(1, e->piston_list); */
+ if (! e->piston_list) e->piston_list = glGenLists(1);
+ glNewList(e->piston_list, GL_COMPILE);
+ glRotatef(90, 0, 0, 1);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colour);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, colour);
+ glMateriali(GL_FRONT, GL_SHININESS, 20);
+ polys += cylinder(e, 0, 0, 0, 2, 1, 0.7, 2, 0, ONEREV); /* body */
+ colour[0] = colour[1] = colour[2] = 0.2;
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colour);
+ polys += cylinder(e, 1.6, 0, 0, 0.1, 1.05, 1.05, 0, 0, ONEREV); /* ring */
+ polys += cylinder(e, 1.8, 0, 0, 0.1, 1.05, 1.05, 0, 0, ONEREV); /* ring */
+ glEndList();
+ return polys;
+}
+
+static int CrankBit(Engine *e, GLfloat x)
+{
+ int polys = 0;
+ polys += Rect(x, -1.4, 0.5, 0.2, 1.8, 1);
+ polys += cylinder(e, x, -0.5, 0, 0.2, 2, 2, 1, 60, 120);
+ return polys;
+}
+
+static int boom(Engine *e, GLfloat x, GLfloat y, int s)
+{
+ int polys = 0;
+ int flameOut = 720/ENG.speed/ENG.cylinders;
+
+ if (e->boom_time == 0 && s) {
+ e->boom_red[0] = e->boom_red[1] = 0;
+ e->boom_d = 0.05;
+ e->boom_time++;
+ glEnable(GL_LIGHT1);
+ } else if (e->boom_time == 0 && !s) {
+ return polys;
+ } else if (e->boom_time >= 8 && e->boom_time < flameOut && !s) {
+ e->boom_time++;
+ e->boom_red[0] -= 0.2; e->boom_red[1] -= 0.1;
+ e->boom_d-= 0.04;
+ } else if (e->boom_time >= flameOut) {
+ e->boom_time = 0;
+ glDisable(GL_LIGHT1);
+ return polys;
+ } else {
+ e->boom_red[0] += 0.2; e->boom_red[1] += 0.1;
+ e->boom_d += 0.04;
+ e->boom_time++;
+ }
+ e->boom_lpos[0] = x-e->boom_d; e->boom_lpos[1] = y;
+ glLightfv(GL_LIGHT1, GL_POSITION, e->boom_lpos);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, e->boom_red);
+ glLightfv(GL_LIGHT1, GL_SPECULAR, e->boom_red);
+ glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 1.3);
+ glLighti(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0);
+
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, e->boom_red);
+ e->boom_wd = e->boom_d*3;
+ if (e->boom_wd > 0.7) e->boom_wd = 0.7;
+ glEnable(GL_BLEND);
+ glDepthMask(GL_FALSE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ polys += rod(e, x, y, 0, e->boom_d, e->boom_wd);
+ glDepthMask(GL_TRUE);
+ glDisable(GL_BLEND);
+ return polys;
+}
+
+static int display(ModeInfo *mi)
+{
+ Engine *e = &engine[MI_SCREEN(mi)];
+ int polys = 0;
+ GLfloat zb, yb;
+ float rightSide;
+ int half;
+ int sides;
+ int j, b;
+
+ glEnable(GL_LIGHTING);
+ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+ gluLookAt(e->viewer[0], e->viewer[1], e->viewer[2],
+ e->lookat[0], e->lookat[1], e->lookat[2],
+ 0.0, 1.0, 0.0);
+ glPushMatrix();
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp);
+
+ if (move) {
+ double x, y, z;
+ get_position (e->rot, &x, &y, &z, !e->button_down_p);
+ glTranslatef(x*16-9, y*14-7, z*16-10);
+ }
+
+ if (spin) {
+ double x, y, z;
+
+ gltrackball_rotate (e->trackball);
+
+ get_rotation(e->rot, &x, &y, &z, !e->button_down_p);
+ glRotatef(x*ONEREV, 1.0, 0.0, 0.0);
+ glRotatef(y*ONEREV, 0.0, 1.0, 0.0);
+ glRotatef(x*ONEREV, 0.0, 0.0, 1.0);
+ }
+
+/* So the rotation appears around the centre of the engine */
+ glTranslatef(-5, 0, 0);
+
+/* crankshaft */
+ glPushMatrix();
+ glRotatef(e->display_a, 1, 0, 0);
+ glCallList(e->shaft_list);
+ polys += e->shaft_polys;
+ glPopMatrix();
+
+ /* init the ln[] matrix for speed */
+ if (e->ln_init == 0) {
+ for (e->ln_init = 0 ; e->ln_init < countof(e->sin_table) ; e->ln_init++) {
+ zb = e->sin_table[e->ln_init];
+ yb = e->cos_table[e->ln_init];
+ /* y ordinate of piston */
+ e->yp[e->ln_init] = yb + sqrt(25 - (zb*zb));
+ /* length of rod */
+ e->ln[e->ln_init] = sqrt(zb*zb + (yb-e->yp[e->ln_init])*(yb-e->yp[e->ln_init]));
+ /* angle of connecting rod */
+ e->ang[e->ln_init] = asin(zb/5)*57;
+ e->ang[e->ln_init] *= -1;
+ }
+ }
+
+ glPushMatrix();
+ sides = (ENG.includedAngle == 0) ? 1 : 2;
+ for (half = 0; half < sides; half++, glRotatef(ENG.includedAngle,1,0,0))
+ {
+ /* pistons */
+ /* glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white); */
+ for (j = 0; j < ENG.cylinders; j += sides)
+ {
+ b = (e->display_a + ENG.pistonAngle[j+half]) % ONEREV;
+ glPushMatrix();
+ glTranslatef(e->crankWidth/2 + e->crankOffset*(j+half), e->yp[b]-0.3, 0);
+ glCallList(e->piston_list);
+ polys += e->piston_polys;
+ glPopMatrix();
+ }
+ /* spark plugs */
+ glPushMatrix();
+ glRotatef(90, 0, 0, 1);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
+ for (j = 0; j < ENG.cylinders; j += sides)
+ {
+ polys += cylinder(e, 8.5, -e->crankWidth/2-e->crankOffset*(j+half), 0,
+ 0.5, 0.4, 0.3, 1, 0, ONEREV);
+ }
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);
+ for (j = 0; j < ENG.cylinders; j += sides)
+ {
+ polys += rod(e, 8, -e->crankWidth/2-e->crankOffset*(j+half), 0, 0.5, 0.2);
+ polys += rod(e, 9, -e->crankWidth/2-e->crankOffset*(j+half), 0, 1, 0.15);
+ }
+
+ /* rod */
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
+ for (j = 0; j < ENG.cylinders; j += sides)
+ {
+ b = (e->display_a+HALFREV+ENG.pistonAngle[j+half]) % TWOREV;
+ glPushMatrix();
+ glRotatef(e->ang[b], 0, 1, 0);
+ polys += rod(e,
+ -e->cos_table[b],
+ -e->crankWidth/2-e->crankOffset*(j+half),
+ -e->sin_table[b],
+ e->ln[b], 0.2);
+ glPopMatrix();
+ }
+ glPopMatrix();
+
+ /* engine block */
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, yellow_t);
+ glEnable(GL_BLEND);
+ glDepthMask(GL_FALSE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ rightSide = (sides > 1) ? 0 : 1.6;
+ /* left plate */
+ polys += Rect(-e->crankWidth/2, -0.5, 1, 0.2, 9, 2);
+ /* right plate */
+ polys += Rect(0.3+e->crankOffset*ENG.cylinders-rightSide, -0.5, 1, 0.2, 9, 2);
+ /* head plate */
+ polys += Rect(-e->crankWidth/2+0.2, 8.3, 1,
+ e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 2);
+ /* front rail */
+ polys += Rect(-e->crankWidth/2+0.2, 3, 1,
+ e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 0.2);
+ /* back rail */
+ polys += Rect(-e->crankWidth/2+0.2, 3, -1+0.2,
+ e->crankWidth/2+0.1+e->crankOffset*ENG.cylinders-rightSide, 0.2, 0.2);
+ /* plates between cylinders */
+ for (j=0; j < ENG.cylinders - (sides == 1); j += sides)
+ polys += Rect(0.4+e->crankWidth+e->crankOffset*(j-half), 3, 1, 1, 5.3, 2);
+ glDepthMask(GL_TRUE);
+ }
+ glPopMatrix();
+
+ /* see which of our plugs should fire now, if any */
+ for (j = 0; j < ENG.cylinders; j++)
+ {
+ if (0 == ((e->display_a + ENG.pistonAngle[j]) % TWOREV))
+ {
+ glPushMatrix();
+ if (j & 1)
+ glRotatef(ENG.includedAngle,1,0,0);
+ glRotatef(90, 0, 0, 1);
+ polys += boom(e, 8, -e->crankWidth/2-e->crankOffset*j, 1);
+ e->lastPlug = j;
+ glPopMatrix();
+ }
+ }
+
+ if (e->lastPlug != j)
+ {
+ /* this code causes the last plug explosion to dim gradually */
+ if (e->lastPlug & 1)
+ glRotatef(ENG.includedAngle, 1, 0, 0);
+ glRotatef(90, 0, 0, 1);
+ polys += boom(e, 8, -e->crankWidth/2-e->crankOffset*e->lastPlug, 0);
+ }
+ glDisable(GL_BLEND);
+
+ e->display_a += ENG.speed;
+ if (e->display_a >= TWOREV)
+ e->display_a = 0;
+ glPopMatrix();
+ glFlush();
+ return polys;
+}
+
+static int makeshaft (Engine *e)
+{
+ int polys = 0;
+ int j;
+ float crankThick = 0.2;
+ float crankDiam = 0.3;
+
+ /* if (e->shaft_list) glDeleteLists(1, e->shaft_list); */
+ if (! e->shaft_list) e->shaft_list = glGenLists(1);
+ glNewList(e->shaft_list, GL_COMPILE);
+
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
+ /* draw the flywheel */
+ polys += cylinder(e, -2.5, 0, 0, 1, 3, 2.5, 0, 0, ONEREV);
+ polys += Rect(-2, -0.3, 2.8, 0.5, 0.6, 5.6);
+ polys += Rect(-2, -2.8, 0.3, 0.5, 5.6, 0.6);
+
+ /* now make each of the shaft bits between the cranks,
+ * starting from the flywheel end which is at X-coord 0.
+ * the first cranskhaft bit is always 2 units long
+ */
+ polys += rod(e, -2, 0, 0, 2, crankDiam);
+
+ /* Each crank is crankWidth units wide and the total width of a
+ * cylinder assembly is 3.3 units. For inline engines, there is just
+ * a single crank per cylinder width. For other engine
+ * configurations, there is a crank between each pair of adjacent
+ * cylinders on one side of the engine, so the crankOffset length is
+ * halved.
+ */
+ e->crankOffset = 3.3;
+ if (ENG.includedAngle != 0)
+ e->crankOffset /= 2;
+ for (j = 0; j < ENG.cylinders - 1; j++)
+ polys += rod(e,
+ e->crankWidth - crankThick + e->crankOffset*j, 0, 0,
+ e->crankOffset - e->crankWidth + 2 * crankThick, crankDiam);
+ /* the last bit connects to the engine wall on the non-flywheel end */
+ polys += rod(e, e->crankWidth - crankThick + e->crankOffset*j, 0, 0, 0.9, crankDiam);
+
+
+ for (j = 0; j < ENG.cylinders; j++)
+ {
+ glPushMatrix();
+ if (j & 1)
+ glRotatef(HALFREV+ENG.pistonAngle[j]+ENG.includedAngle,1,0,0);
+ else
+ glRotatef(HALFREV+ENG.pistonAngle[j],1,0,0);
+ /* draw wrist pin */
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
+ polys += rod(e, e->crankOffset*j, -1.0, 0.0, e->crankWidth, crankDiam);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
+ /* draw right part of crank */
+ polys += CrankBit(e, e->crankOffset*j);
+ /* draw left part of crank */
+ polys += CrankBit(e, e->crankWidth-crankThick+e->crankOffset*j);
+ glPopMatrix();
+ }
+ glEndList();
+ return polys;
+}
+
+
+ENTRYPOINT void reshape_engine(ModeInfo *mi, int width, int height)
+{
+ Engine *e = &engine[MI_SCREEN(mi)];
+ double h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0, y, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(40, 1/h, 1.5, 70.0);
+ glMatrixMode(GL_MODELVIEW);
+ e->win_h = height;
+ e->win_w = width;
+}
+
+
+ENTRYPOINT void init_engine(ModeInfo *mi)
+{
+ int screen = MI_SCREEN(mi);
+ Engine *e;
+
+ MI_INIT(mi, engine);
+ e = &engine[screen];
+ e->window = MI_WINDOW(mi);
+
+ e->x = e->y = e->z = e->a = e->an1 = e->nx = e->ny = e->nz =
+ e->dx = e->dy = e->dz = e->da = 0;
+
+ if (move) {
+ e->dx = (float)(random() % 1000)/30000;
+ e->dy = (float)(random() % 1000)/30000;
+ e->dz = (float)(random() % 1000)/30000;
+ } else {
+ e->viewer[0] = 0; e->viewer[1] = 2; e->viewer[2] = 18;
+ e->lookat[0] = 0; e->lookat[1] = 0; e->lookat[2] = 0;
+
+ }
+ if (spin) {
+ e->da = (float)(random() % 1000)/125 - 4;
+ e->nx = (float)(random() % 100) / 100;
+ e->ny = (float)(random() % 100) / 100;
+ e->nz = (float)(random() % 100) / 100;
+ }
+
+ {
+ double spin_speed = 0.5;
+ double wander_speed = 0.01;
+
+ e->crankWidth = 1.5;
+ e->boom_red[3] = 0.9;
+ e->boom_lpos[3] = 1;
+
+ e->viewer[2] = 30;
+
+ e->rot = make_rotator (spin ? spin_speed : 0,
+ spin ? spin_speed : 0,
+ spin ? spin_speed : 0,
+ 1.0,
+ move ? wander_speed : 0,
+ True);
+
+ e->trackball = gltrackball_init (True);
+ }
+
+ if (!e->glx_context && /* re-initting breaks print_texture_label */
+ (e->glx_context = init_GL(mi)) != NULL) {
+ reshape_engine(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+ glShadeModel(GL_SMOOTH);
+ glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_NORMALIZE);
+ make_tables(e);
+ e->engineType = find_engine(which_engine);
+
+ if (!e->engine_name)
+ e->engine_name = malloc(200);
+ sprintf (e->engine_name,
+ "%s\n%s%d%s",
+ engines[e->engineType].engineName,
+ (engines[e->engineType].includedAngle == 0 ? "" :
+ engines[e->engineType].includedAngle == 180 ? "Flat " : "V"),
+ engines[e->engineType].cylinders,
+ (engines[e->engineType].includedAngle == 0 ? " Cylinder" : "")
+ );
+
+ e->shaft_polys = makeshaft(e);
+ e->piston_polys = makepiston(e);
+
+ if (!e->font_data)
+ e->font_data = load_texture_font (mi->dpy, "titleFont");
+}
+
+ENTRYPOINT Bool
+engine_handle_event (ModeInfo *mi, XEvent *event)
+{
+ Engine *e = &engine[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1) {
+ e->movepaused = 0;
+ }
+
+ if (gltrackball_event_handler (event, e->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &e->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ which_engine = NULL; /* randomize */
+ init_engine(mi);
+ return True;
+ }
+
+ return False;
+}
+
+ENTRYPOINT void draw_engine(ModeInfo *mi)
+{
+ Engine *e = &engine[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if (!e->glx_context)
+ return;
+
+ glXMakeCurrent(disp, w, *(e->glx_context));
+
+
+ mi->polygon_count = display(mi);
+
+ glColor3f (1, 1, 0);
+ if (do_titles)
+ print_texture_label (mi->dpy, e->font_data,
+ mi->xgwa.width, mi->xgwa.height,
+ 1, e->engine_name);
+
+ if(mi->fps_p) do_fps(mi);
+ glFinish();
+ glXSwapBuffers(disp, w);
+}
+
+XSCREENSAVER_MODULE ("Engine", engine)
+
+#endif
diff --git a/hacks/glx/engine.man b/hacks/glx/engine.man
new file mode 100644
index 0000000..af794e5
--- /dev/null
+++ b/hacks/glx/engine.man
@@ -0,0 +1,80 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+engine - draws a 3D four-stroke engine.
+.SH SYNOPSIS
+.B engine
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-engine \fIname\fP]
+[\-delay \fInumber\fP]
+[\-no-move]
+[\-no-spin]
+[\-no-title]
+[\-fps]
+.SH DESCRIPTION
+Draws a simple four-stroke engine that floats around the screen.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-engine \fIname\fP
+What kind of engine to draw. Default: random.
+Known models are:
+"Honda Insight" (3),
+"BMW M3" (4),
+"VW Beetle" (flat 4),
+"Audi Quattro" (5),
+"BMW M5" (6),
+"Subaru XT" (V6),
+"Porsche 911" (flat 6),
+"Corvette Z06" (V8),
+"Dodge Viper" (V10),
+and
+"Jaguar XKE" (V12).
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
+.TP 8
+.B \-move | \-no-move
+Whether the object should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-title | \-no-title
+Whether to display the name of the engine being rendered.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Ben Buxton.
diff --git a/hacks/glx/erase-gl.c b/hacks/glx/erase-gl.c
new file mode 100644
index 0000000..8515dd9
--- /dev/null
+++ b/hacks/glx/erase-gl.c
@@ -0,0 +1,38 @@
+/* Copyright (c) 2017 Dave Odell
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * xlockmore.c has references to erase_window, but it never calls these when
+ * running OpenGL hacks. Using this in place of regular utils/erase.c saves a
+ * tiny bit of code/disk space with a native X11 build, where everything is
+ * statically linked together.
+ *
+ * (Linux, amd64, CFLAGS='-O2 -g')
+ * Before: -rwxr-xr-x 1 david david 545848 Aug 9 20:42 hilbert
+ * After: -rwxr-xr-x 1 david david 519344 Aug 9 20:41 hilbert
+ *
+ * (Linux, amd64, CFLAGS=-O2)
+ * Before: -rwxr-xr-x 1 david david 150168 Aug 9 20:40 hilbert
+ * After: -rwxr-xr-x 1 david david 141256 Aug 9 20:39 hilbert
+ */
+
+#include "utils.h"
+#include "erase.h"
+
+void
+eraser_free (eraser_state *st)
+{
+}
+
+
+eraser_state *
+erase_window (Display *dpy, Window window, eraser_state *st)
+{
+ return st;
+}
diff --git a/hacks/glx/esper.c b/hacks/glx/esper.c
new file mode 100644
index 0000000..7a0bb0b
--- /dev/null
+++ b/hacks/glx/esper.c
@@ -0,0 +1,2412 @@
+/* esper, Copyright (c) 2017-2018 Jamie Zawinski
+ * Enhance 224 to 176. Pull out track right. Center in pull back.
+ * Pull back. Wait a minute. Go right. Stop. Enhance 57 19. Track 45 left.
+ * Gimme a hardcopy right there.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/*
+ The Esper machine has a 4:3 display, about 12" diagonal.
+ The display is overlayed with a 10x7 grid of blue lines.
+ The scene goes approximately like this:
+
+ "Enhance 224 To 176."
+
+ ZM 0000 NS 0000 EW 0000
+
+ The reticle is displayed centered.
+ It moves in 8 steps with 3 frame blur to move to around to grid 1,4.
+
+ ZM 0000 NS 0000 EW 0000
+ ZM 0000 NS 0001 EW 0001
+ ZM 0000 NS 0001 EW 0002
+ ZM 0000 NS 0002 EW 0003
+ ZM 0000 NS 0003 EW 0005
+ ZM 0000 NS 0004 EW 0008
+ ZM 0000 NS 0015 EW 0011
+
+ These numbers appear to have little relation to what we are
+ actually seeing on the screen. Also the same numbers are
+ repeated later when looking at totally different parts of
+ the photograph.
+
+ ZM 0000 NS 0117 EW 0334
+
+ The box appears: 8 steps, final box is 1.5x2.25 at -0.5,4.0.
+
+ ZM 4086 NS 0117 EW 0334
+
+ The box blinks yellow 5x.
+ The image's zoom-and-pan takes 8 steps, with no text on the screen.
+ The zoom is in discreet steps, with flashes.
+ The grid stays the same size the whole time.
+ The flashes look like solarization to blue.
+ When the zoom is finished, there is still no text.
+
+ "Enhance." Goes 4 more ticks down the same hole?
+ "Stop." Moves up a little bit at the end.
+
+ Then with no instructions, it goes 20 ticks by itself, off camera.
+
+ "Move in." 10 ticks.
+ "Stop." (We are looking at a fist in the picture.)
+ "Pull out track right."
+ "Stop." (We are looking at a newspaper.)
+ "Center and pull back."
+ "Stop." (We just passed the round mirror.)
+ "Track 45 right."
+ "Stop."
+ "Center and stop."
+
+ This time there was no grid until it stopped, then the grid showed up.
+ There is video tearing at the bottom.
+
+ "Enhance 34 to 36."
+
+ ZM 0000 NS 0063 EW 0185
+ ZM 0000 NS 0197 EW 0334
+ ZM 3841 NS 0197 EW 0334
+
+ It kind of zooms in to the center wobbly and willy-nilly.
+ We are now looking at a glass.
+
+ "Pan right and pull back." (There is no grid while moving again.)
+ "Stop."
+
+ Ok, at this point, we enter fantasy-land. From here on, the images
+ shown are very high resolution with no noise. And suddenly the
+ UI on the Esper is *way* higher resolution. My theory is that from
+ this point on in the scene, we are not looking at the literal Esper
+ machine, but instead the movie is presenting Decard's perception of
+ it. We're seeing the room, not the photo of the room. The map has
+ become the territory.
+
+ "Enhance 34 to 46."
+
+ ZM 0000 NS 0197 EW 0334
+
+ This has the reticle and box only, no grid, ends with no grid.
+
+ "Pull back."
+ "Wait a minute. Go right."
+ "Stop."
+ Now it's going around the corner or something.
+
+ "Enhance 57 19."
+ This has a reticle then box, but the image started zooming early.
+
+ "Track 45 left."
+ zooms out and moves left
+
+ "Stop." (O hai Zhora.)
+ "Enhance 15 to 23."
+
+ ZM 3852 NS 0197 EW 0334
+
+ "Gimme a hardcopy right there."
+
+ The printer polaroid is WAY lower resolution than the image we see on
+ the "screen" -- in keeping with my theory that we were not seeing the
+ screen.
+
+
+ TODO:
+
+ * There's a glitch at the top/bottom of the texfont textures.
+ * "Pull back" isn't quite symmetric: zoom origin is slightly off.
+ * Maybe display text like "Pull right" and "Stop".
+*/
+
+
+/* Use a small point size to keep it nice and grainy. */
+#if defined(HAVE_COCOA) || defined(HAVE_ANDROID)
+# define TITLE_FONT "OCR A Std 10, Lucida Console 10, Monaco 10"
+#elif 0 /* real X11, XQueryFont() */
+# define TITLE_FONT "-*-courier-bold-r-*-*-*-100-*-*-m-*-*-*"
+#else /* real X11, load_font_retry() */
+# define TITLE_FONT "-*-ocr a std-medium-r-*-*-*-100-*-*-m-*-*-*"
+#endif
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*wireframe: False \n" \
+ "*showFPS: False \n" \
+ "*fpsTop: True \n" \
+ "*useSHM: True \n" \
+ "*titleFont: " TITLE_FONT "\n" \
+ "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \
+ "*grabDesktopImages: False \n" \
+ "*chooseRandomImages: True \n" \
+ "*gridColor: #4444FF\n" \
+ "*reticleColor: #FFFF77\n" \
+ "*textColor: #FFFFBB\n" \
+
+# define free_esper 0
+# define refresh_esper 0
+# define release_esper 0
+# include "xlockmore.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef RANDSIGN
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+
+#ifdef USE_GL
+
+#undef SMOOTH
+
+# define DEF_GRID_SIZE "11"
+# define DEF_GRID_THICKNESS "15"
+# define DEF_TITLES "True"
+# define DEF_SPEED "1.0"
+# define DEF_DEBUG "False"
+
+#include "grab-ximage.h"
+#include "texfont.h"
+
+#ifdef HAVE_XSHM_EXTENSION
+# include "xshm.h" /* to get */
+#endif
+
+
+typedef struct {
+ double x, y, w, h;
+} rect;
+
+typedef struct {
+ ModeInfo *mi;
+ unsigned long id; /* unique */
+ char *title; /* the filename of this image */
+ int w, h; /* size in pixels of the image */
+ int tw, th; /* size in pixels of the texture */
+ XRectangle geom; /* where in the image the bits are */
+ Bool loaded_p; /* whether the image has finished loading */
+ Bool used_p; /* whether the image has yet appeared
+ on screen */
+ GLuint texid; /* which texture contains the image */
+ int refcount; /* how many sprites refer to this image */
+} image;
+
+
+typedef enum {
+ BLANK,
+ GRID_ON,
+ IMAGE_LOAD,
+ IMAGE_UNLOAD,
+ IMAGE_FORCE_UNLOAD,
+ REPOSITION,
+ RETICLE_ON,
+ RETICLE_MOVE,
+ BOX_MOVE,
+ IMAGE_ZOOM,
+ MANUAL_RETICLE_ON,
+ MANUAL_RETICLE,
+ MANUAL_BOX_ON,
+ MANUAL_BOX,
+} anim_state;
+
+typedef enum { NEW, IN, FULL, OUT, DEAD } sprite_state;
+typedef enum { IMAGE, RETICLE, BOX, GRID, FLASH, TEXT } sprite_type;
+
+typedef struct {
+ unsigned long id; /* unique */
+ sprite_type type;
+ image *img; /* type = IMAGE */
+ unsigned long text_id; /* type = TEXT */
+ char *text;
+ GLfloat opacity;
+ GLfloat thickness_scale; /* line and image types */
+ Bool throb_p;
+ double start_time; /* when this animation began */
+ double duration; /* lifetime of sprite in seconds; 0 = inf */
+ double fade_duration; /* speed of fade in and fade out */
+ double pause_duration; /* delay before fade-in starts */
+ Bool remain_p; /* pause forever before fade-out */
+ rect from, to, current; /* the journey this image is taking */
+ sprite_state state; /* the state we're in right now */
+ double state_time; /* time of last state change */
+ int frame_count; /* frames since last state change */
+ Bool fatbits_p; /* For image texture rendering */
+ Bool back_p; /* If BOX, zooming out, not in */
+} sprite;
+
+
+typedef struct {
+ GLXContext *glx_context;
+ int nimages; /* how many images are loaded or loading now */
+ image *images[10]; /* pointers to the images */
+
+ int nsprites; /* how many sprites are animating right now */
+ sprite *sprites[100]; /* pointers to the live sprites */
+
+ double now; /* current time in seconds */
+ double dawn_of_time; /* when the program launched */
+ double image_load_time; /* time when we last loaded a new image */
+
+ texture_font_data *font_data;
+
+ int sprite_id, image_id; /* debugging id counters */
+
+ GLfloat grid_color[4], reticle_color[4], text_color[4];
+
+ anim_state anim_state; /* Counters for global animation state, */
+ double anim_start, anim_duration;
+
+ Bool button_down_p;
+
+} esper_state;
+
+static esper_state *sss = NULL;
+
+
+/* Command-line arguments
+ */
+static int grid_size;
+static int grid_thickness;
+
+static Bool do_titles; /* Display image titles. */
+static GLfloat speed;
+static Bool debug_p; /* Be loud and do weird things. */
+
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-titles", ".titles", XrmoptionNoArg, "True" },
+ { "-no-titles", ".titles", XrmoptionNoArg, "False" },
+ { "-debug", ".debug", XrmoptionNoArg, "True" },
+};
+
+static argtype vars[] = {
+ { &grid_size, "gridSize", "GridSize", DEF_GRID_SIZE, t_Int},
+ { &grid_thickness,"gridThickness","GridThickness",DEF_GRID_THICKNESS, t_Int},
+ { &do_titles, "titles", "Titles", DEF_TITLES, t_Bool},
+ { &speed, "speed", "Speed", DEF_SPEED, t_Float},
+ { &debug_p, "debug", "Debug", DEF_DEBUG, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt esper_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Returns the current time in seconds as a double.
+ */
+static double
+double_time (void)
+{
+ struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday(&now, &tzp);
+# else
+ gettimeofday(&now);
+# endif
+
+ return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+static const char *
+state_name (anim_state s)
+{
+ switch (s) {
+ case BLANK: return "BLANK";
+ case GRID_ON: return "GRID_ON";
+ case IMAGE_LOAD: return "IMAGE_LOAD";
+ case IMAGE_UNLOAD: return "IMAGE_UNLOAD";
+ case IMAGE_FORCE_UNLOAD: return "IMAGE_FORCE_UNLOAD";
+ case REPOSITION: return "REPOSITION";
+ case RETICLE_ON: return "RETICLE_ON";
+ case RETICLE_MOVE: return "RETICLE_MOVE";
+ case BOX_MOVE: return "BOX_MOVE";
+ case IMAGE_ZOOM: return "IMAGE_ZOOM";
+ case MANUAL_BOX_ON: return "MANUAL_BOX_ON";
+ case MANUAL_BOX: return "MANUAL_BOX";
+ case MANUAL_RETICLE_ON: return "MANUAL_RETICLE_ON";
+ case MANUAL_RETICLE: return "MANUAL_RETICLE";
+ default: return "UNKNOWN";
+ }
+}
+
+
+static void image_loaded_cb (const char *filename, XRectangle *geom,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure);
+
+
+/* Allocate an image structure and start a file loading in the background.
+ */
+static image *
+alloc_image (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ image *img = (image *) calloc (1, sizeof (*img));
+
+ img->id = ++ss->image_id;
+ img->loaded_p = False;
+ img->used_p = False;
+ img->mi = mi;
+
+ glGenTextures (1, &img->texid);
+ if (img->texid <= 0) abort();
+
+ ss->image_load_time = ss->now;
+
+ if (wire)
+ image_loaded_cb (0, 0, 0, 0, 0, 0, img);
+ else
+ {
+ /* If possible, load images at much higher resolution than the window,
+ to facilitate deep zooms.
+ */
+ int max_max = 4096; /* ~12 megapixels */
+ int max = 0;
+
+# if defined(HAVE_XSHM_EXTENSION) && \
+ !defined(HAVE_MOBILE) && \
+ !defined(HAVE_COCOA)
+
+ /* Try not to ask for an image larger than the SHM segment size.
+ If XSHM fails in a real-X11 world, it can take a staggeringly long
+ time to transfer the image bits from the server over Xproto -- like,
+ *18 seconds* for 4096 px and 8 seconds for 3072 px on MacOS XQuartz.
+ What madness is this?
+ */
+ unsigned long shmmax = 0;
+
+# if defined(SHMMAX)
+ /* Linux 2.6 defines this to be 0x2000000, but on CentOS 6.9,
+ "sysctl kernel.shmmax" reports a luxurious 0x1000000000. */
+ shmmax = SHMMAX;
+# elif defined(__APPLE__)
+ /* MacOS 10.13 "sysctl kern.sysv.shmmax" is paltry: */
+ shmmax = 0x400000;
+# endif /* !SHMMAX */
+
+ if (shmmax)
+ {
+ /* Roughly, bytes => NxN. b = (n/8)*4n = n*n*4, so n^2 = 2b, so: */
+ unsigned long n = sqrt(shmmax)/2;
+ if (n < max_max)
+ max_max = n;
+ }
+# endif /* HAVE_XSHM_EXTENSION and real X11 */
+
+ glGetIntegerv (GL_MAX_TEXTURE_SIZE, &max);
+ if (max > max_max) max = max_max;
+
+ /* Never ask for an image smaller than the window, even if that
+ will make XSHM fall back to Xproto. */
+ if (max < MI_WIDTH(mi) || max < MI_HEIGHT(mi))
+ max = 0;
+
+ load_texture_async (mi->xgwa.screen, mi->window, *ss->glx_context,
+ max, max, False, img->texid, image_loaded_cb, img);
+ }
+
+ ss->images[ss->nimages++] = img;
+ if (ss->nimages >= countof(ss->images)) abort();
+
+ return img;
+}
+
+
+/* Callback that tells us that the texture has been loaded.
+ */
+static void
+image_loaded_cb (const char *filename, XRectangle *geom,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure)
+{
+ image *img = (image *) closure;
+ ModeInfo *mi = img->mi;
+ int ow, oh;
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+
+ int wire = MI_IS_WIREFRAME(mi);
+
+ if (wire)
+ {
+ img->w = MI_WIDTH (mi) * (0.5 + frand (1.0));
+ img->h = MI_HEIGHT (mi);
+ img->geom.width = img->w;
+ img->geom.height = img->h;
+ goto DONE;
+ }
+
+ if (image_width == 0 || image_height == 0)
+ exit (1);
+
+ img->w = image_width;
+ img->h = image_height;
+ img->tw = texture_width;
+ img->th = texture_height;
+ img->geom = *geom;
+ img->title = (filename ? strdup (filename) : 0);
+
+ ow = img->geom.width;
+ oh = img->geom.height;
+
+ /* If the image's width doesn't come back as the width of the screen,
+ then the image must have been scaled down (due to insufficient
+ texture memory.) Scale up the coordinates to stretch the image
+ to fill the window.
+ */
+ if (img->w != MI_WIDTH(mi))
+ {
+ double scale = (double) MI_WIDTH(mi) / img->w;
+ img->w *= scale;
+ img->h *= scale;
+ img->tw *= scale;
+ img->th *= scale;
+ img->geom.x *= scale;
+ img->geom.y *= scale;
+ img->geom.width *= scale;
+ img->geom.height *= scale;
+ }
+
+ /* xscreensaver-getimage returns paths relative to the image directory
+ now, so leave the sub-directory part in. Unless it's an absolute path.
+ */
+ if (img->title && img->title[0] == '/')
+ {
+ /* strip filename to part between last "/" and last ".". */
+ char *s = strrchr (img->title, '/');
+ if (s) strcpy (img->title, s+1);
+ s = strrchr (img->title, '.');
+ if (s) *s = 0;
+ }
+
+# if !(__APPLE__ && TARGET_IPHONE_SIMULATOR || !defined(__OPTIMIZE__))
+ if (debug_p)
+# endif
+ fprintf (stderr, "%s: loaded %lu \"%s\" %dx%d\n",
+ progname, img->id, (img->title ? img->title : "(null)"),
+ ow, oh);
+ DONE:
+
+ img->loaded_p = True;
+}
+
+
+
+/* Free the image and texture, after nobody is referencing it.
+ */
+static void
+destroy_image (ModeInfo *mi, image *img)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ Bool freed_p = False;
+ int i;
+
+ if (!img) abort();
+ if (!img->loaded_p) abort();
+ if (!img->used_p) abort();
+ if (img->texid <= 0) abort();
+ if (img->refcount != 0) abort();
+
+ for (i = 0; i < ss->nimages; i++) /* unlink it from the list */
+ if (ss->images[i] == img)
+ {
+ int j;
+ for (j = i; j < ss->nimages-1; j++) /* pull remainder forward */
+ ss->images[j] = ss->images[j+1];
+ ss->images[j] = 0;
+ ss->nimages--;
+ freed_p = True;
+ break;
+ }
+
+ if (!freed_p) abort();
+
+ if (debug_p)
+ fprintf (stderr, "%s: unloaded img %2lu: \"%s\"\n",
+ progname, img->id, (img->title ? img->title : "(null)"));
+
+ if (img->title) free (img->title);
+ glDeleteTextures (1, &img->texid);
+ free (img);
+}
+
+
+/* Return an image to use for a sprite.
+ If it's time for a new one, get a new one.
+ Otherwise, use an old one.
+ Might return 0 if the machine is really slow.
+ */
+static image *
+get_image (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ image *img = 0;
+ image *loading_img = 0;
+ int i;
+
+ for (i = 0; i < ss->nimages; i++)
+ {
+ image *img2 = ss->images[i];
+ if (!img2) abort();
+ if (!img2->loaded_p)
+ loading_img = img2;
+ else
+ img = img2;
+ }
+
+ /* Make sure that there is always one unused image in the pipe.
+ */
+ if (!img && !loading_img)
+ alloc_image (mi);
+
+ return img;
+}
+
+
+/* Allocate a new sprite and start its animation going.
+ */
+static sprite *
+new_sprite (ModeInfo *mi, sprite_type type)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ image *img = (type == IMAGE ? get_image (mi) : 0);
+ sprite *sp;
+
+ if (type == IMAGE && !img)
+ {
+ /* Oops, no images yet! The machine is probably hurting bad.
+ Let's give it some time before thrashing again. */
+ usleep (250000);
+ return 0;
+ }
+
+ sp = (sprite *) calloc (1, sizeof (*sp));
+ sp->id = ++ss->sprite_id;
+ sp->type = type;
+ sp->start_time = ss->now;
+ sp->state_time = sp->start_time;
+ sp->thickness_scale = 1;
+ sp->throb_p = True;
+ sp->to.x = 0.5;
+ sp->to.y = 0.5;
+ sp->to.w = 1.0;
+ sp->to.h = 1.0;
+
+ if (img)
+ {
+ sp->img = img;
+ sp->img->refcount++;
+ sp->img->used_p = True;
+ sp->duration = 0; /* forever, until further notice */
+ sp->fade_duration = 0.5;
+
+ /* Scale the sprite so that the image bits fill the window. */
+ {
+ double w = MI_WIDTH(mi);
+ double h = MI_HEIGHT(mi);
+ double r;
+ r = ((img->geom.height / (double) img->geom.width) * (w / h));
+ if (r > 1)
+ sp->to.h *= r;
+ else
+ sp->to.w /= r;
+ }
+
+ /* Pan to a random spot */
+ if (sp->to.h > 1)
+ sp->to.y += frand ((sp->to.h - 1) / 2) * RANDSIGN();
+ if (sp->to.w > 1)
+ sp->to.x += frand ((sp->to.w - 1) / 2) * RANDSIGN();
+ }
+
+ sp->from = sp->current = sp->to;
+
+ ss->sprites[ss->nsprites++] = sp;
+ if (ss->nsprites >= countof(ss->sprites)) abort();
+
+ return sp;
+}
+
+
+static sprite *
+copy_sprite (ModeInfo *mi, sprite *old)
+{
+ sprite *sp = new_sprite (mi, (sprite_type) ~0L);
+ int id;
+ double tt = sp->start_time;
+ if (!sp) abort();
+ id = sp->id;
+ memcpy (sp, old, sizeof(*sp));
+ sp->id = id;
+ sp->state = NEW;
+ sp->state_time = sp->start_time = tt;
+ if (sp->img)
+ sp->img->refcount++;
+ return sp;
+}
+
+
+/* Free the given sprite, and decrement the reference count on its image.
+ */
+static void
+destroy_sprite (ModeInfo *mi, sprite *sp)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ Bool freed_p = False;
+ image *img;
+ int i;
+
+ if (!sp) abort();
+ if (sp->state != DEAD) abort();
+ img = sp->img;
+
+ if (sp->type != IMAGE)
+ {
+ if (img) abort();
+ }
+ else
+ {
+ if (!img) abort();
+ if (!img->loaded_p) abort();
+ if (!img->used_p) abort();
+ if (img->refcount <= 0) abort();
+ }
+
+ for (i = 0; i < ss->nsprites; i++) /* unlink it from the list */
+ if (ss->sprites[i] == sp)
+ {
+ int j;
+ for (j = i; j < ss->nsprites-1; j++) /* pull remainder forward */
+ ss->sprites[j] = ss->sprites[j+1];
+ ss->sprites[j] = 0;
+ ss->nsprites--;
+ freed_p = True;
+ break;
+ }
+
+ if (!freed_p) abort();
+ if (sp->text) free (sp->text);
+ free (sp);
+ sp = 0;
+
+ if (img)
+ {
+ img->refcount--;
+ if (img->refcount < 0) abort();
+ if (img->refcount == 0)
+ destroy_image (mi, img);
+ }
+}
+
+
+/* Updates the sprite for the current frame of the animation based on
+ its creation time compared to the current wall clock.
+ */
+static void
+tick_sprite (ModeInfo *mi, sprite *sp)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ image *img = sp->img;
+ double now = ss->now;
+ double secs;
+ double ratio;
+ GLfloat visible = sp->duration + sp->fade_duration * 2;
+ GLfloat total = sp->pause_duration + visible;
+
+ if (sp->type != IMAGE)
+ {
+ if (sp->img) abort();
+ }
+ else
+ {
+ if (! sp->img) abort();
+ if (! img->loaded_p) abort();
+ }
+
+ /* pause fade duration fade
+ |------------|------------|---------|-----------|
+ ....----====##########====----....
+ from current to
+ */
+
+ secs = now - sp->start_time;
+ ratio = (visible <= 0 ? 1 : ((secs - sp->pause_duration) / visible));
+ if (ratio < 0) ratio = 0;
+ else if (ratio > 1) ratio = 1;
+
+ sp->current.x = sp->from.x + ratio * (sp->to.x - sp->from.x);
+ sp->current.y = sp->from.y + ratio * (sp->to.y - sp->from.y);
+ sp->current.w = sp->from.w + ratio * (sp->to.w - sp->from.w);
+ sp->current.h = sp->from.h + ratio * (sp->to.h - sp->from.h);
+
+ sp->thickness_scale = 1;
+
+ if (secs < sp->pause_duration)
+ {
+ sp->state = IN;
+ sp->opacity = 0;
+ }
+ else if (secs < sp->pause_duration + sp->fade_duration)
+ {
+ sp->state = IN;
+ sp->opacity = (secs - sp->pause_duration) / (GLfloat) sp->fade_duration;
+ }
+ else if (sp->duration == 0 || /* 0 means infinite lifetime */
+ sp->remain_p ||
+ secs < sp->pause_duration + sp->fade_duration + sp->duration)
+ {
+ sp->state = FULL;
+ sp->opacity = 1;
+
+ /* Just after reaching full opacity, pulse the width up and down. */
+ if (sp->fade_duration > 0 &&
+ secs < sp->pause_duration + sp->fade_duration * 2)
+ {
+ GLfloat f = ((secs - (sp->pause_duration + sp->fade_duration)) /
+ sp->fade_duration);
+ if (sp->throb_p)
+ sp->thickness_scale = 1 + 3 * (f > 0.5 ? 1-f : f);
+ }
+ }
+ else if (secs < total)
+ {
+ sp->state = OUT;
+ sp->opacity = (total - secs) / sp->fade_duration;
+ }
+ else
+ {
+ sp->state = DEAD;
+ sp->opacity = 0;
+ }
+
+ sp->frame_count++;
+}
+
+
+/* Draw the given sprite at the phase of its animation dictated by
+ its creation time compared to the current wall clock.
+ */
+static void
+draw_image_sprite (ModeInfo *mi, sprite *sp)
+{
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+ int wire = MI_IS_WIREFRAME(mi);
+ image *img = sp->img;
+
+ if (! sp->img) abort();
+ if (! img->loaded_p) abort();
+
+ glPushMatrix();
+ {
+ GLfloat s = 1 + (sp->thickness_scale - 1) / 40.0;
+ glTranslatef (0.5, 0.5, 0);
+ glScalef (s, s, 1);
+ glTranslatef (-0.5, -0.5, 0);
+
+ glTranslatef (sp->current.x, sp->current.y, 0);
+ glScalef (sp->current.w, sp->current.h, 1);
+
+ glTranslatef (-0.5, -0.5, 0);
+
+ if (wire) /* Draw a grid inside the box */
+ {
+ GLfloat dy = 0.1;
+ GLfloat dx = dy * img->w / img->h;
+ GLfloat x, y;
+
+ if (sp->id & 1)
+ glColor4f (sp->opacity, 0, 0, 1);
+ else
+ glColor4f (0, 0, sp->opacity, 1);
+
+ glBegin(GL_LINES);
+ glVertex3f (0, 0, 0); glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0); glVertex3f (0, 1, 0);
+
+ for (y = 0; y < 1+dy; y += dy)
+ {
+ GLfloat yy = (y > 1 ? 1 : y);
+ for (x = 0.5; x < 1+dx; x += dx)
+ {
+ GLfloat xx = (x > 1 ? 1 : x);
+ glVertex3f (0, xx, 0); glVertex3f (1, xx, 0);
+ glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0);
+ }
+ for (x = 0.5; x > -dx; x -= dx)
+ {
+ GLfloat xx = (x < 0 ? 0 : x);
+ glVertex3f (0, xx, 0); glVertex3f (1, xx, 0);
+ glVertex3f (yy, 0, 0); glVertex3f (yy, 1, 0);
+ }
+ }
+ glEnd();
+ }
+ else /* Draw the texture quad */
+ {
+ GLfloat texw = img->geom.width / (GLfloat) img->tw;
+ GLfloat texh = img->geom.height / (GLfloat) img->th;
+ GLfloat texx1 = img->geom.x / (GLfloat) img->tw;
+ GLfloat texy1 = img->geom.y / (GLfloat) img->th;
+ GLfloat texx2 = texx1 + texw;
+ GLfloat texy2 = texy1 + texh;
+ GLfloat o = sp->opacity;
+ GLint mag = (sp->fatbits_p ? GL_NEAREST : GL_LINEAR);
+
+ glBindTexture (GL_TEXTURE_2D, img->texid);
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mag);
+
+ /* o = 1 - sin ((1 - o*o*o) * M_PI/2); */
+ glColor4f (1, 1, 1, o);
+
+ glNormal3f (0, 0, 1);
+ glBegin (GL_QUADS);
+ glTexCoord2f (texx1, texy2); glVertex3f (0, 0, 0);
+ glTexCoord2f (texx2, texy2); glVertex3f (1, 0, 0);
+ glTexCoord2f (texx2, texy1); glVertex3f (1, 1, 0);
+ glTexCoord2f (texx1, texy1); glVertex3f (0, 1, 0);
+ glEnd();
+
+ if (debug_p) /* Draw a border around the image */
+ {
+ if (!wire) glDisable (GL_TEXTURE_2D);
+ glColor4f (sp->opacity, 0, 0, 1);
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glEnd();
+ if (!wire) glEnable (GL_TEXTURE_2D);
+ }
+ }
+ }
+ glPopMatrix();
+}
+
+
+static void
+draw_line_sprite (ModeInfo *mi, sprite *sp)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int w = MI_WIDTH(mi);
+ int h = MI_HEIGHT(mi);
+ int wh = (w > h ? w : h);
+ int gs = (sp->type == RETICLE ? grid_size+1 : grid_size);
+ int sx = wh / (gs + 1);
+ int sy;
+ int k;
+ GLfloat t = grid_thickness * sp->thickness_scale;
+ int fade;
+ GLfloat color[4];
+
+ GLfloat x = w * sp->current.x;
+ GLfloat y = h * sp->current.y;
+ GLfloat bw = w * sp->current.w;
+ GLfloat bh = h * sp->current.h;
+
+ if (MI_WIDTH(mi) > 2560) t *= 3; /* Retina displays */
+
+ if (sx < 10) sx = 10;
+ sy = sx;
+
+ if (t > sx/3) t = sx/3;
+ if (t < 1) t = 1;
+ fade = t;
+ if (fade < 1) fade = 1;
+
+ if (t <= 0 || sp->opacity <= 0) return;
+
+ glPushMatrix();
+ glLoadIdentity();
+
+ if (debug_p)
+ {
+ GLfloat s = 0.75;
+ glScalef (s, s, s);
+ }
+
+ glOrtho (0, w, 0, h, -1, 1);
+
+ switch (sp->type) {
+ case GRID: memcpy (color, ss->grid_color, sizeof(color)); break;
+ case RETICLE: memcpy (color, ss->reticle_color, sizeof(color)); break;
+ case BOX: memcpy (color, ss->reticle_color, sizeof(color)); break;
+ default: abort();
+ }
+
+ if (sp->type == GRID)
+ {
+ GLfloat s = 1 + (sp->thickness_scale - 1) / 120.0;
+ glTranslatef (w/2, h/2, 0);
+ glScalef (s, s, 1);
+ glTranslatef (-w/2, -h/2, 0);
+ }
+
+ glColor4fv (color);
+
+ if (!wire) glDisable (GL_TEXTURE_2D);
+
+ for (k = 0; k < fade; k++)
+ {
+ GLfloat t2 = t * (1 - (k / (fade * 1.0)));
+ if (t2 <= 0) break;
+ color[3] = sp->opacity / fade;
+ glColor4fv (color);
+
+ glBegin (wire ? GL_LINES : GL_QUADS);
+
+ switch (sp->type) {
+ case GRID:
+ {
+ GLfloat xoff = (w - sx * (w / sx)) / 2.0;
+ GLfloat yoff = (h - sy * (h / sy)) / 2.0;
+ for (y = -sy/2+t2/2; y < h; y += sy)
+ for (x = -sx/2-t2/2; x < w; x += sx)
+ {
+ glVertex3f (xoff+x+t2, yoff+y, 0);
+ glVertex3f (xoff+x+t2, yoff+y+sy-t2, 0);
+ glVertex3f (xoff+x, yoff+y+sy-t2, 0);
+ glVertex3f (xoff+x, yoff+y, 0);
+ mi->polygon_count++;
+
+ glVertex3f (xoff+x, yoff+y-t2, 0);
+ glVertex3f (xoff+x+sx, yoff+y-t2, 0);
+ glVertex3f (xoff+x+sx, yoff+y, 0);
+ glVertex3f (xoff+x, yoff+y, 0);
+ mi->polygon_count++;
+ }
+ }
+ break;
+
+ case BOX:
+ glVertex3f (x-bw/2-t2/2, y-bh/2-t2/2, 0);
+ glVertex3f (x+bw/2+t2/2, y-bh/2-t2/2, 0);
+ glVertex3f (x+bw/2+t2/2, y-bh/2+t2/2, 0);
+ glVertex3f (x-bw/2-t2/2, y-bh/2+t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x-bw/2-t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x+bw/2+t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x+bw/2+t2/2, y+bh/2+t2/2, 0);
+ glVertex3f (x-bw/2-t2/2, y+bh/2+t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x-bw/2+t2/2, y-bh/2+t2/2, 0);
+ glVertex3f (x-bw/2+t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x-bw/2-t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x-bw/2-t2/2, y-bh/2+t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x+bw/2+t2/2, y-bh/2+t2/2, 0);
+ glVertex3f (x+bw/2+t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x+bw/2-t2/2, y+bh/2-t2/2, 0);
+ glVertex3f (x+bw/2-t2/2, y-bh/2+t2/2, 0);
+ mi->polygon_count++;
+ break;
+
+ case RETICLE:
+ glVertex3f (x+t2/2, y+sy/2-t2/2, 0);
+ glVertex3f (x+t2/2, h, 0);
+ glVertex3f (x-t2/2, h, 0);
+ glVertex3f (x-t2/2, y+sy/2-t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x-t2/2, y-sy/2+t2/2, 0);
+ glVertex3f (x-t2/2, 0, 0);
+ glVertex3f (x+t2/2, 0, 0);
+ glVertex3f (x+t2/2, y-sy/2+t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x-sx/2+t2/2, y+t2/2, 0);
+ glVertex3f (0, y+t2/2, 0);
+ glVertex3f (0, y-t2/2, 0);
+ glVertex3f (x-sx/2+t2/2, y-t2/2, 0);
+ mi->polygon_count++;
+
+ glVertex3f (x+sx/2-t2/2, y-t2/2, 0);
+ glVertex3f (w, y-t2/2, 0);
+ glVertex3f (w, y+t2/2, 0);
+ glVertex3f (x+sx/2-t2/2, y+t2/2, 0);
+ mi->polygon_count++;
+ break;
+
+ default: abort();
+ }
+ glEnd();
+ }
+
+ glPopMatrix();
+
+ if (!wire) glEnable (GL_TEXTURE_2D);
+}
+
+
+static sprite * find_newest_sprite (ModeInfo *, sprite_type);
+static void compute_image_rect (rect *, sprite *, Bool);
+
+static void
+draw_text_sprite (ModeInfo *mi, sprite *sp)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat w = MI_WIDTH(mi);
+ GLfloat h = MI_HEIGHT(mi);
+ GLfloat s;
+ int x, y, z;
+ XCharStruct e;
+ sprite *target = 0;
+ char text[255];
+ GLfloat color[4];
+ int i;
+
+ if (sp->opacity <= 0)
+ return;
+
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp2 = ss->sprites[i];
+ if (sp2->id == sp->text_id && sp2->state != DEAD)
+ {
+ target = sp2;
+ break;
+ }
+ }
+
+ if (target)
+ {
+ rect r;
+ sprite *img;
+
+ if (target->opacity <= 0 &&
+ (target->state == NEW || target->state == IN))
+ return;
+
+ r = target->current;
+
+ img = find_newest_sprite (mi, IMAGE);
+ if (img)
+ compute_image_rect (&r, img, target->back_p);
+
+ mi->recursion_depth = (img
+ ? MIN (img->current.w, img->current.h)
+ : 0);
+
+ x = abs ((int) (r.x * 10000)) % 10000;
+ y = abs ((int) (r.y * 10000)) % 10000;
+ z = abs ((int) (r.w * 10000)) % 10000;
+
+ sprintf (text, "ZM %04d NS %04d EW %04d", z, y, x);
+
+ if ((x == 0 || x == 5000) && /* startup */
+ (y == 0 || y == 5000) &&
+ (z == 0 || z == 5000))
+ *text = 0;
+
+ if (do_titles &&
+ target->type == IMAGE &&
+ target->remain_p) /* The initial background image */
+ {
+ char *s = (target->img &&
+ target->img->title && *target->img->title
+ ? target->img->title
+ : "Loading");
+ int L = strlen (s);
+ int i = (L > 23 ? L-23 : 0);
+ sprintf (text, ">>%-23s", target->img->title + i);
+ for (s = text; *s; s++)
+ if (*s >= 'a' && *s <= 'z') *s += ('A'-'a');
+ else if (*s == '/' || *s == '-' || *s == '.') *s = '_';
+ }
+
+ if (!*text) return;
+
+ if (sp->text) free (sp->text);
+ sp->text = strdup (text);
+ }
+ else if (sp->text && *sp->text)
+ /* The target sprite might be dead, but we saved our last text. */
+ strcpy (text, sp->text);
+ else
+ /* No target, no saved text. */
+ return;
+
+ texture_string_metrics (ss->font_data, text, &e, 0, 0);
+
+ glPushMatrix();
+ glLoadIdentity();
+ glOrtho (0, 1, 0, 1, -1, 1);
+
+ /* Scale the text to fit N characters horizontally. */
+ {
+# ifdef HAVE_MOBILE
+ GLfloat c = 25;
+# else /* desktop */
+ GLfloat c = (MI_WIDTH(mi) <= 640 ? 25 :
+ MI_WIDTH(mi) <= 1280 ? 32 : 64);
+# endif
+ s = w / (e.ascent * c);
+ }
+ w /= s;
+ h /= s;
+ x = (w - e.width) / 2;
+ y = e.ascent + e.descent * 2;
+
+ glScalef (1.0/w, 1.0/h, 1);
+ glTranslatef (x, y, 0);
+
+ memcpy (color, ss->text_color, sizeof(color));
+ color[3] = sp->opacity;
+ glColor4fv (color);
+
+ if (wire)
+ glEnable (GL_TEXTURE_2D);
+
+ print_texture_string (ss->font_data, text);
+ mi->polygon_count++;
+
+ if (wire)
+ glDisable (GL_TEXTURE_2D);
+ glPopMatrix();
+}
+
+
+static void
+draw_flash_sprite (ModeInfo *mi, sprite *sp)
+{
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+ GLfloat o = sp->opacity;
+
+ if (o <= 0) return;
+ o = 0.7; /* Too fast to see, so keep it consistent */
+
+ glPushMatrix();
+ int wire = MI_IS_WIREFRAME(mi);
+ if (!wire)
+ glDisable (GL_TEXTURE_2D);
+ glColor4f (0, 0, 1, o);
+ glColorMask (0, 0, 1, 1); /* write only into blue and alpha channels */
+ glBegin (GL_QUADS);
+ glVertex3f (0, 0, 0);
+ glVertex3f (1, 0, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (0, 1, 0);
+ glEnd();
+ glColorMask (1, 1, 1, 1);
+ if (!wire)
+ glEnable (GL_TEXTURE_2D);
+ glPopMatrix();
+}
+
+
+static void
+draw_sprite (ModeInfo *mi, sprite *sp)
+{
+ switch (sp->type) {
+ case IMAGE:
+ draw_image_sprite (mi, sp);
+ break;
+ case RETICLE:
+ case BOX:
+ case GRID:
+ draw_line_sprite (mi, sp);
+ break;
+ case TEXT:
+ draw_text_sprite (mi, sp);
+ break;
+ case FLASH:
+ draw_flash_sprite (mi, sp);
+ break;
+ default:
+ abort();
+ }
+}
+
+
+static void
+tick_sprites (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < ss->nsprites; i++)
+ tick_sprite (mi, ss->sprites[i]);
+
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp = ss->sprites[i];
+ if (sp->state == DEAD)
+ {
+ destroy_sprite (mi, sp);
+ i--;
+ }
+ }
+}
+
+
+static void
+draw_sprites (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+
+/*
+ {
+ GLfloat rot = current_device_rotation();
+ glTranslatef (0.5, 0.5, 0);
+ glRotatef(rot, 0, 0, 1);
+ if ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135))
+ {
+ GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+ glScalef (s, 1/s, 1);
+ }
+ glTranslatef (-0.5, -0.5, 0);
+ }
+*/
+
+ /* Draw the images first, then the overlays. */
+ for (i = 0; i < ss->nsprites; i++)
+ if (ss->sprites[i]->type == IMAGE)
+ draw_sprite (mi, ss->sprites[i]);
+ for (i = 0; i < ss->nsprites; i++)
+ if (ss->sprites[i]->type != IMAGE)
+ draw_sprite (mi, ss->sprites[i]);
+
+ glPopMatrix();
+
+ if (debug_p) /* draw a white box (the "screen") */
+ {
+ int wire = MI_IS_WIREFRAME(mi);
+
+ if (!wire) glDisable (GL_TEXTURE_2D);
+
+ glColor4f (1, 1, 1, 1);
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glEnd();
+
+ if (!wire) glEnable (GL_TEXTURE_2D);
+ }
+}
+
+
+static void
+fadeout_sprite (ModeInfo *mi, sprite *sp)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+
+ /* If it hasn't faded in yet, don't fade out. */
+ if (ss->now <= sp->start_time + sp->pause_duration)
+ sp->fade_duration = 0;
+
+ /* Pretend it's at the point where it should fade out. */
+ sp->pause_duration = 0;
+ sp->duration = 9999;
+ sp->remain_p = False;
+ sp->start_time = ss->now - sp->duration;
+}
+
+static void
+fadeout_sprites (ModeInfo *mi, sprite_type type)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp = ss->sprites[i];
+ if (sp->type == type)
+ fadeout_sprite (mi, sp);
+ }
+}
+
+
+static sprite *
+find_newest_sprite (ModeInfo *mi, sprite_type type)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ sprite *sp = 0;
+ int i;
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp2 = ss->sprites[i];
+ if (sp2->type == type &&
+ (!sp ||
+ (sp->start_time < sp2->start_time &&
+ ss->now >= sp2->start_time + sp2->pause_duration)))
+ sp = sp2;
+ }
+ return sp;
+}
+
+
+/* Enqueue a text sprite describing the given sprite that runs at the
+ same time.
+ */
+static sprite *
+push_text_sprite (ModeInfo *mi, sprite *sp)
+{
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+ sprite *sp2 = new_sprite (mi, TEXT);
+ if (!sp2) abort();
+ sp2->text_id = sp->id;
+ sp2->fade_duration = sp->fade_duration;
+ sp2->duration = sp->duration;
+ sp2->pause_duration = sp->pause_duration;
+ return sp2;
+}
+
+
+/* Enqueue a flash sprite that fires at the same time.
+ */
+#ifndef SMOOTH
+static sprite *
+push_flash_sprite (ModeInfo *mi, sprite *sp)
+{
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+ sprite *sp2 = new_sprite (mi, FLASH);
+ if (!sp2) abort();
+ if (sp->type != IMAGE) abort();
+ sp2->text_id = sp->id;
+ sp2->duration = MAX (0.07 / speed, 0.07);
+ sp2->fade_duration = 0; /* Fading these is too fast to see */
+ sp2->pause_duration = sp->pause_duration + (sp->fade_duration * 0.3);
+ return sp2;
+}
+#endif /* !SMOOTH */
+
+
+/* Set the sprite's duration based on distance travelled.
+ */
+static void
+compute_sprite_duration (ModeInfo *mi, sprite *sp, Bool blink_p)
+{
+ /* Compute max distance traveled by any point (corners or center). */
+ /* (cpp is the devil) */
+# define L(F) (sp->F.x - sp->F.w/2) /* delta of left edge, from/to */
+# define R(F) (1-(sp->F.x + sp->F.w/2)) /* right */
+# define B(F) (sp->F.y - sp->F.h/2) /* top */
+# define T(F) (1-(sp->F.y + sp->F.h/2)) /* bottom */
+# define D(F,G) sqrt(F(from)*F(from) + G(to)*G(to)) /* corner traveled */
+ double BL = D(B,L);
+ double BR = D(B,R);
+ double TL = D(T,L);
+ double TR = D(T,R);
+ double cx = sp->to.x - sp->from.x;
+ double cy = sp->to.y - sp->from.y;
+ double C = sqrt(cx*cx + cy*cy);
+ double dist = MAX (BL, MAX (BR, MAX (TL, MAX (TR, C))));
+# undef L
+# undef R
+# undef B
+# undef T
+# undef D
+
+ int steps = 1 + dist * 28;
+ if (steps > 10) steps = 10;
+
+ sp->duration = steps * 0.2 / speed;
+
+# ifndef SMOOTH
+ sp->duration += 1.5 / speed; /* For linger added by animate_sprite_path() */
+ if (blink_p) sp->duration += 0.6 / speed;
+# endif
+}
+
+
+/* Convert the sprite to a jerky transition.
+ Instead of smoothly animating, move in discrete steps,
+ using multiple staggered sprites.
+ */
+static void
+animate_sprite_path (ModeInfo *mi, sprite *sp, Bool blink_p)
+{
+# ifndef SMOOTH
+ /* esper_state *ss = &sss[MI_SCREEN(mi)]; */
+ double dx = sp->to.x - sp->from.x;
+ double dy = sp->to.y - sp->from.y;
+ double dw = sp->to.w - sp->from.w;
+ double dh = sp->to.h - sp->from.h;
+ double linger = 1.5 / speed;
+ double blinger = 0.6 / speed;
+ double dur = sp->duration - linger - (blink_p ? blinger : 0);
+ int steps = dur / 0.3 * speed; /* step duration in seconds */
+ int i;
+
+ if (sp->type == IMAGE)
+ steps *= 0.8;
+
+ if (steps < 2) steps = 2;
+ if (steps > 10) steps = 10;
+
+ /* if (dur <= 0.01) abort(); */
+ if (dur < 0.01)
+ linger = blinger = 0;
+
+ for (i = 0; i <= steps; i++)
+ {
+ sprite *sp2 = copy_sprite (mi, sp);
+ if (!sp2) abort();
+
+ sp2->to.x = (sp->current.x + i * dx / steps);
+ sp2->to.y = (sp->current.y + i * dy / steps);
+ sp2->to.w = (sp->current.w + i * dw / steps);
+ sp2->to.h = (sp->current.h + i * dh / steps);
+ sp2->current = sp2->from = sp2->to;
+ sp2->duration = dur / steps;
+ sp2->pause_duration += i * sp2->duration;
+ sp2->remain_p = False;
+ sp2->fatbits_p = True;
+
+ if (i == steps)
+ sp2->duration += linger; /* last one lingers for a bit */
+
+ if (i == steps && !blink_p)
+ {
+ sp2->remain_p = sp->remain_p;
+ sp2->fatbits_p = False;
+ }
+
+ if (sp2->type == IMAGE && i > 0)
+ push_flash_sprite (mi, sp2);
+
+ if (sp2->type == RETICLE || sp2->type == BOX)
+ {
+ sp2 = push_text_sprite (mi, sp2);
+ if (i == steps)
+ sp2->duration += linger * 2;
+ }
+ }
+
+ if (blink_p && blinger) /* last one blinks before vanishing */
+ {
+ int blinkers = 3;
+ for (i = 1; i <= blinkers; i++)
+ {
+ sprite *sp2 = copy_sprite (mi, sp);
+ if (!sp2) abort();
+
+ sp2->current = sp2->from = sp->to;
+ sp2->duration = blinger / blinkers;
+ sp2->pause_duration += dur + linger + i * sp2->duration;
+ sp2->remain_p = False;
+ if (i == blinkers)
+ {
+ sp2->remain_p = sp->remain_p;
+ sp2->fatbits_p = False;
+ }
+ }
+ }
+
+ /* Fade out the template sprite. It might not have even appeared yet. */
+ fadeout_sprite (mi, sp);
+# endif
+}
+
+
+/* Input rect is of a reticle or box.
+ Output rect is what the image's rect should be so that the only part
+ visible is the part indicated by the input rect.
+ */
+static void
+compute_image_rect (rect *r, sprite *img, Bool inverse_p)
+{
+ double scale = (inverse_p ? 1/r->w : r->w);
+ double dx = r->x - 0.5;
+ double dy = r->y - 0.5;
+
+ /* Adjust size and center by zoom factor */
+ r->w = img->current.w / scale;
+ r->h = img->current.h / scale;
+ r->x = 0.5 + (img->current.x - 0.5) / scale;
+ r->y = 0.5 + (img->current.y - 0.5) / scale;
+
+ /* Move center */
+
+ if (inverse_p)
+ {
+ dx = -dx; /* #### Close but not quite right */
+ dy = -dy;
+ }
+
+ r->x -= dx / scale;
+ r->y -= dy / scale;
+}
+
+
+/* Sets 'to' such that the image zooms out so that the only part visible
+ is the part indicated by the box.
+ */
+static void
+track_box_with_image (ModeInfo *mi, sprite *sp, sprite *img)
+{
+ rect r = sp->current;
+ compute_image_rect (&r, img, sp->back_p);
+ img->to = r;
+
+ /* Never zoom out too far. */
+ if (img->to.w < 1 && img->to.h < 1)
+ {
+ if (img->to.w > img->to.h)
+ {
+ img->to.w = img->to.w / img->to.h;
+ img->to.h = 1;
+ }
+ else
+ {
+ img->to.h = img->to.h / img->to.w;
+ img->to.w = 1;
+ }
+ }
+
+ /* Never pan beyond the bounds of the image. */
+ if (img->to.x < -img->to.w/2+1) img->to.x = -img->to.w/2+1;
+ if (img->to.x > img->to.w/2) img->to.x = img->to.w/2;
+ if (img->to.y < -img->to.h/2+1) img->to.y = -img->to.h/2+1;
+ if (img->to.y > img->to.h/2) img->to.y = img->to.h/2;
+}
+
+
+static void
+tick_animation (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ anim_state prev_state = ss->anim_state;
+ sprite *sp = 0;
+ int i;
+
+ switch (ss->anim_state) {
+ case BLANK:
+ ss->anim_state = GRID_ON;
+ break;
+ case GRID_ON:
+ ss->anim_state = IMAGE_LOAD;
+ break;
+ case IMAGE_LOAD:
+ /* Only advance once an image has loaded. */
+ if (find_newest_sprite (mi, IMAGE))
+ ss->anim_state = RETICLE_ON;
+ else
+ ss->anim_state = IMAGE_LOAD;
+ break;
+ case RETICLE_ON:
+ ss->anim_state = RETICLE_MOVE;
+ break;
+ case RETICLE_MOVE:
+ if (random() % 6)
+ ss->anim_state = BOX_MOVE;
+ else
+ ss->anim_state = IMAGE_ZOOM;
+ break;
+ case BOX_MOVE:
+ ss->anim_state = IMAGE_ZOOM;
+ break;
+ case IMAGE_ZOOM:
+ {
+ sprite *sp = find_newest_sprite (mi, IMAGE);
+ double depth = (sp
+ ? MIN (sp->current.w, sp->current.h)
+ : 0);
+ if (depth > 20)
+ ss->anim_state = IMAGE_UNLOAD;
+ else
+ ss->anim_state = RETICLE_ON;
+ }
+ break;
+ case IMAGE_FORCE_UNLOAD:
+ ss->anim_state = IMAGE_UNLOAD;
+ break;
+ case IMAGE_UNLOAD:
+ ss->anim_state = IMAGE_LOAD;
+ break;
+ case MANUAL_BOX_ON:
+ ss->anim_state = MANUAL_BOX;
+ break;
+ case MANUAL_BOX:
+ break;
+ case MANUAL_RETICLE_ON:
+ ss->anim_state = MANUAL_RETICLE;
+ break;
+ case MANUAL_RETICLE:
+ break;
+ default:
+ abort();
+ break;
+ }
+
+ ss->anim_start = ss->now;
+ ss->anim_duration = 0;
+
+ if (debug_p)
+ fprintf (stderr, "%s: entering %s\n",
+ progname, state_name (ss->anim_state));
+
+ switch (ss->anim_state) {
+
+ case GRID_ON: /* Start the grid fading in. */
+ if (! find_newest_sprite (mi, GRID))
+ {
+ sp = new_sprite (mi, GRID);
+ if (!sp) abort();
+ sp->fade_duration = 1.0 / speed;
+ sp->duration = 2.0 / speed;
+ sp->remain_p = True;
+ ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 +
+ sp->duration);
+ }
+ break;
+
+ case IMAGE_LOAD:
+ fadeout_sprites (mi, IMAGE);
+ sp = new_sprite (mi, IMAGE);
+ if (! sp)
+ {
+ if (debug_p) fprintf (stderr, "%s: image load failed\n", progname);
+ break;
+ }
+
+ sp->fade_duration = 0.5 / speed;
+ sp->duration = sp->fade_duration * 3;
+ sp->remain_p = True;
+ /* If we zoom in, we lose the pulse at the end. */
+ /* sp->from.w = sp->from.h = 0.0001; */
+ sp->current = sp->from;
+
+ ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 +
+ sp->duration);
+
+ sp = push_text_sprite (mi, sp);
+ sp->fade_duration = 0.2 / speed;
+ sp->pause_duration = 0;
+ sp->duration = 2.5 / speed;
+ break;
+
+ case IMAGE_FORCE_UNLOAD:
+ break;
+
+ case IMAGE_UNLOAD:
+ sp = find_newest_sprite (mi, IMAGE);
+ if (sp)
+ sp->fade_duration = ((prev_state == IMAGE_FORCE_UNLOAD ? 0.2 : 3.0)
+ / speed);
+ fadeout_sprites (mi, IMAGE);
+ fadeout_sprites (mi, RETICLE);
+ fadeout_sprites (mi, BOX);
+ fadeout_sprites (mi, TEXT);
+ ss->anim_duration = (sp ? sp->fade_duration : 0) + 3.5 / speed;
+ break;
+
+ case RETICLE_ON: /* Display reticle at center. */
+ fadeout_sprites (mi, TEXT);
+ sp = new_sprite (mi, RETICLE);
+ if (!sp) abort();
+ sp->fade_duration = 0.2 / speed;
+ sp->pause_duration = 1.0 / speed;
+ sp->duration = 1.5 / speed;
+ ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 +
+ sp->duration);
+ ss->anim_duration -= sp->fade_duration * 2;
+ break;
+
+ case RETICLE_MOVE:
+ /* Reticle has faded in. Now move it to somewhere else.
+ Create N new reticle sprites, wih staggered pause_durations.
+ */
+ {
+ GLfloat ox = 0.5;
+ GLfloat oy = 0.5;
+ GLfloat nx, ny, dist;
+
+ do { /* pick a new position not too near the old */
+ nx = 0.3 + BELLRAND(0.4);
+ ny = 0.3 + BELLRAND(0.4);
+ dist = sqrt ((nx-ox)*(nx-ox) + (ny-oy)*(ny-oy));
+ } while (dist < 0.1);
+
+ sp = new_sprite (mi, RETICLE);
+ if (!sp) abort();
+
+ sp->from.x = ox;
+ sp->from.y = oy;
+ sp->current = sp->to = sp->from;
+ sp->to.x = nx;
+ sp->to.y = ny;
+ sp->fade_duration = 0.2 / speed;
+ sp->pause_duration = 0;
+ compute_sprite_duration (mi, sp, False);
+
+ ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 +
+ sp->duration - 0.1);
+ animate_sprite_path (mi, sp, False);
+ }
+ break;
+
+ case BOX_MOVE:
+ /* Reticle has moved, and faded out.
+ Start the box zooming into place.
+ */
+ {
+ GLfloat ox = 0.5;
+ GLfloat oy = 0.5;
+ GLfloat nx, ny;
+ GLfloat z;
+
+ /* Find the last-added reticle, for our destination position. */
+ sp = 0;
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp2 = ss->sprites[i];
+ if (sp2->type == RETICLE &&
+ (!sp || sp->start_time < sp2->start_time))
+ sp = sp2;
+ }
+ if (sp)
+ {
+ nx = sp->to.x;
+ ny = sp->to.y;
+ }
+ else
+ {
+ nx = ny = 0.5;
+ if (debug_p)
+ fprintf (stderr, "%s: no reticle before box?\n", progname);
+ }
+
+ z = 0.3 + frand(0.5);
+
+ /* Ensure that the selected box is contained within the screen */
+ {
+ double margin = 0.005;
+ double maxw = 2 * MIN (1 - margin - nx, nx - margin);
+ double maxh = 2 * MIN (1 - margin - ny, ny - margin);
+ double max = MIN (maxw, maxh);
+ if (z > max) z = max;
+ }
+
+ sp = new_sprite (mi, BOX);
+ if (!sp) abort();
+ sp->from.x = ox;
+ sp->from.y = oy;
+ sp->from.w = 1.0;
+ sp->from.h = 1.0;
+ sp->current = sp->from;
+ sp->to.x = nx;
+ sp->to.y = ny;
+ sp->to.w = z;
+ sp->to.h = z;
+
+ /* Maybe zoom out instead of in.
+ */
+ {
+ sprite *img = find_newest_sprite (mi, IMAGE);
+ double depth = MIN (img->current.w, img->current.h);
+ if (depth > 1 && /* if zoomed in */
+ (depth < 6 ? !(random() % 5) : /* 20% */
+ depth < 12 ? !(random() % 2) : /* 50% */
+ (random() % 3))) /* 66% */
+ {
+ sp->back_p = True;
+ if (depth < 1.5 && z < 0.8)
+ {
+ z = 0.8; /* don't zoom out much past 100% */
+ sp->to.w = z;
+ sp->to.h = z;
+ }
+ }
+ }
+
+ sp->fade_duration = 0.2 / speed;
+ sp->pause_duration = 2.0 / speed;
+ compute_sprite_duration (mi, sp, True);
+ ss->anim_duration = (sp->pause_duration + sp->fade_duration * 2 +
+ sp->duration - 0.1);
+ animate_sprite_path (mi, sp, True);
+ }
+ break;
+
+ case IMAGE_ZOOM:
+
+ /* Box has moved, and faded out.
+ Or, if no box, then just a reticle.
+ Zoom the underlying image to track the box's position. */
+ {
+ sprite *img, *img2;
+
+ /* Find latest box or reticle, for our destination position. */
+ sp = find_newest_sprite (mi, BOX);
+ if (! sp)
+ sp = find_newest_sprite (mi, RETICLE);
+ if (! sp)
+ {
+ if (debug_p)
+ fprintf (stderr, "%s: no box or reticle before image\n",
+ progname);
+ break;
+ }
+
+ img = find_newest_sprite (mi, IMAGE);
+ if (!img)
+ {
+ if (debug_p)
+ fprintf (stderr, "%s: no image?\n", progname);
+ break;
+ }
+
+ img2 = copy_sprite (mi, img);
+ if (!img2) abort();
+
+ img2->from = img->current;
+
+ fadeout_sprite (mi, img);
+
+ track_box_with_image (mi, sp, img2);
+
+ img2->fade_duration = 0.2 / speed;
+ img2->pause_duration = 0.5 / speed;
+ img2->remain_p = True;
+ img2->throb_p = False;
+ compute_sprite_duration (mi, img2, False);
+
+ img->start_time += img2->pause_duration;
+
+ ss->anim_duration = (img2->pause_duration + img2->fade_duration * 2 +
+ img2->duration);
+ animate_sprite_path (mi, img2, False);
+ fadeout_sprites (mi, TEXT);
+ }
+ break;
+
+ case MANUAL_BOX_ON:
+ case MANUAL_RETICLE_ON:
+ break;
+
+ case MANUAL_BOX:
+ case MANUAL_RETICLE:
+ {
+ sprite_type tt = (ss->anim_state == MANUAL_BOX ? BOX : RETICLE);
+ sprite *osp = find_newest_sprite (mi, tt);
+ fadeout_sprites (mi, RETICLE);
+ fadeout_sprites (mi, BOX);
+
+ sp = new_sprite (mi, tt);
+ if (!sp) abort();
+ if (osp)
+ sp->from = osp->current;
+ else
+ {
+ sp->from.x = 0.5;
+ sp->from.y = 0.5;
+ sp->from.w = 0.5;
+ sp->from.h = 0.5;
+ }
+ sp->to = sp->current = sp->from;
+ sp->fade_duration = 0.2 / speed;
+ sp->duration = 0.2 / speed;
+ sp->remain_p = True;
+ sp->throb_p = False;
+ ss->anim_duration = 9999;
+ }
+ break;
+
+ default:
+ fprintf (stderr,"%s: unknown state %d\n",
+ progname, (int) ss->anim_state);
+ abort();
+ }
+}
+
+
+/* Copied from gltrackball.c, sigh.
+ */
+static void
+adjust_for_device_rotation (double *x, double *y, double *w, double *h)
+{
+ int rot = (int) current_device_rotation();
+ int swap;
+
+ while (rot <= -180) rot += 360;
+ while (rot > 180) rot -= 360;
+
+ if (rot > 135 || rot < -135) /* 180 */
+ {
+ *x = *w - *x;
+ *y = *h - *y;
+ }
+ else if (rot > 45) /* 90 */
+ {
+ swap = *x; *x = *y; *y = swap;
+ swap = *w; *w = *h; *h = swap;
+ *x = *w - *x;
+ }
+ else if (rot < -45) /* 270 */
+ {
+ swap = *x; *x = *y; *y = swap;
+ swap = *w; *w = *h; *h = swap;
+ *y = *h - *y;
+ }
+}
+
+
+ENTRYPOINT Bool
+esper_handle_event (ModeInfo *mi, XEvent *event)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+
+ if (event->xany.type == Expose ||
+ event->xany.type == GraphicsExpose ||
+ event->xany.type == VisibilityNotify)
+ {
+ return False;
+ }
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ sprite *sp = 0;
+ double delta = 0.025;
+ double margin = 0.005;
+ Bool ok = False;
+
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+
+ if (c == '\t')
+ {
+ ss->anim_state = IMAGE_FORCE_UNLOAD;
+ return True;
+ }
+
+ if (! find_newest_sprite (mi, IMAGE))
+ return False; /* Too early */
+
+ ss->now = double_time();
+
+# define BONK() do { \
+ if (ss->anim_state != MANUAL_BOX_ON && \
+ ss->anim_state != MANUAL_BOX) { \
+ ss->anim_state = MANUAL_BOX_ON; \
+ tick_animation (mi); \
+ } \
+ sp = find_newest_sprite (mi, BOX); \
+ if (!sp) abort() ; \
+ sp->from = sp->current; \
+ sp->to = sp->from; \
+ sp->start_time = ss->now - sp->fade_duration; \
+ ok = True; \
+ } while(0)
+
+ if (keysym == XK_Left || c == ',' || c == '<')
+ {
+ BONK();
+ sp->to.x -= delta;
+ }
+ else if (keysym == XK_Right || c == '.' || c == '>')
+ {
+ BONK();
+ sp->to.x += delta;
+ }
+ else if (keysym == XK_Down || c == '-')
+ {
+ BONK();
+ sp->to.y -= delta;
+ }
+ else if (keysym == XK_Up || c == '=')
+ {
+ BONK();
+ sp->to.y += delta, ok = True;
+ }
+ else if (keysym == XK_Prior || c == '+')
+ {
+ BONK();
+ sp->to.w += delta;
+ sp->to.h = sp->to.w * sp->from.w / sp->from.h;
+ }
+ else if (keysym == XK_Next || c == '_')
+ {
+ BONK();
+ sp->to.w -= delta;
+ sp->to.h = sp->to.w * sp->from.w / sp->from.h;
+ }
+ else if ((c == ' ' || c == '\t') && debug_p &&
+ ss->anim_state == MANUAL_BOX)
+ {
+ BONK(); /* Null motion: just flash the current image. */
+ }
+ else if ((keysym == XK_Home || c == ' ' || c == '\t') &&
+ ss->anim_state == MANUAL_BOX)
+ {
+ BONK();
+ sp->to.x = 0.5;
+ sp->to.y = 0.5;
+ sp->to.w = 0.5;
+ sp->to.h = 0.5;
+ }
+ else if ((c == '\r' || c == '\n' || c == 033) &&
+ ss->anim_state == MANUAL_BOX)
+ {
+ BONK();
+ ss->anim_state = BOX_MOVE;
+ ss->anim_duration = 9999;
+ ss->anim_start = ss->now - ss->anim_duration;
+ fadeout_sprite (mi, sp);
+ return True;
+ }
+ else
+ return False;
+
+ if (! ok)
+ return False;
+
+ /* Keep it on screen */
+ if (sp->to.w > 1 - margin)
+ {
+ GLfloat r = sp->to.h / sp->to.w;
+ sp->to.w = 1-margin;
+ sp->to.h = (1-margin) * r;
+ }
+ if (sp->to.h > 1)
+ {
+ GLfloat r = sp->to.h / sp->to.w;
+ sp->to.w = (1-margin) / r;
+ sp->to.h = 1-margin;
+ }
+
+ if (sp->to.x - sp->to.w/2 < margin)
+ sp->to.x = sp->to.w/2 + margin;
+ if (sp->to.y - sp->to.h/2 < margin)
+ sp->to.y = sp->to.h/2 + margin;
+
+ if (sp->to.x + sp->to.w/2 >= 1 + margin)
+ sp->to.x = 1 - (sp->to.w/2 + margin);
+ if (sp->to.y + sp->to.h/2 >= 1 + margin)
+ sp->to.y = 1 - (sp->to.h/2 + margin);
+
+ /* Now let's give a momentary glimpse of what the image would do. */
+ if (debug_p)
+ {
+ sprite *img = 0;
+ int i;
+
+ /* Find the lingering image */
+ /* img = find__sprite (mi, IMAGE); */
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp2 = ss->sprites[i];
+ if (sp2->type == IMAGE &&
+ sp2->remain_p &&
+ (!img ||
+ (img->start_time < sp2->start_time &&
+ ss->now >= sp2->start_time + sp2->pause_duration)))
+ img = sp2;
+ }
+
+ if (!img) abort();
+ img = copy_sprite (mi, img);
+ img->pause_duration = 0;
+ img->fade_duration = 0.1 / speed;
+ img->duration = 0.5 / speed;
+ img->start_time = ss->now;
+ img->remain_p = False;
+ track_box_with_image (mi, sp, img);
+ img->from = img->current = img->to;
+ }
+
+ return True;
+ }
+ else if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ ss->button_down_p = 1;
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1)
+ {
+ ss->button_down_p = 0;
+
+ if (ss->anim_state == MANUAL_BOX)
+ {
+ sprite *sp = find_newest_sprite (mi, BOX);
+ if (sp) fadeout_sprite (mi, sp);
+ ss->anim_state = BOX_MOVE;
+ ss->anim_duration = 9999;
+ ss->anim_start = ss->now - ss->anim_duration;
+ }
+ else if (ss->anim_state == MANUAL_RETICLE)
+ {
+ sprite *sp = find_newest_sprite (mi, RETICLE);
+ if (sp) fadeout_sprite (mi, sp);
+ ss->anim_state = RETICLE_MOVE;
+ ss->anim_duration = 9999;
+ ss->anim_start = ss->now - ss->anim_duration;
+ }
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ ss->button_down_p &&
+ (ss->anim_state == MANUAL_RETICLE ||
+ ss->anim_state == RETICLE_MOVE))
+ {
+ sprite *sp = 0;
+ double x = event->xmotion.x;
+ double y = event->xmotion.y;
+ double w = MI_WIDTH(mi);
+ double h = MI_HEIGHT(mi);
+
+ adjust_for_device_rotation (&x, &y, &w, &h);
+ x = x/w;
+ y = 1-y/h;
+
+ if (ss->anim_state != MANUAL_RETICLE_ON &&
+ ss->anim_state != MANUAL_RETICLE)
+ {
+ ss->anim_state = MANUAL_RETICLE_ON;
+ tick_animation (mi);
+ }
+ sp = find_newest_sprite (mi, RETICLE);
+ if (!sp) abort();
+ sp->from = sp->current;
+ sp->to = sp->from;
+ sp->start_time = ss->now - sp->fade_duration;
+ sp->remain_p = True;
+
+ sp->current.x = MIN (0.95, MAX (0.05, x));
+ sp->current.y = MIN (0.95, MAX (0.05, y));
+ sp->from = sp->to = sp->current;
+
+ /* Don't update the text sprite more often than once a second. */
+ {
+ sprite *sp2 = find_newest_sprite (mi, TEXT);
+ if (!sp2 || sp2->start_time < ss->now-1)
+ {
+ fadeout_sprites (mi, TEXT);
+ sp = push_text_sprite (mi, sp);
+ sp->remain_p = True;
+ }
+ }
+
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ ss->button_down_p &&
+ (ss->anim_state == MANUAL_BOX ||
+ ss->anim_state == BOX_MOVE))
+ {
+ sprite *sp = 0;
+ double x = event->xmotion.x;
+ double y = event->xmotion.y;
+ double w = MI_WIDTH(mi);
+ double h = MI_HEIGHT(mi);
+ double max;
+ Bool ok = True;
+
+ adjust_for_device_rotation (&x, &y, &w, &h);
+ x = x/w;
+ y = 1-y/h;
+
+ BONK();
+ max = (2 * (0.5 - MAX (fabs (sp->current.x - 0.5),
+ fabs (sp->current.y - 0.5)))
+ * 0.95);
+
+ x = fabs (x - sp->current.x);
+ y = fabs (y - sp->current.y);
+
+ if (x > y)
+ sp->current.w = sp->current.h = MIN (max, MAX (0.05, 2*x));
+ else
+ sp->current.w = sp->current.h = MIN (max, MAX (0.05, 2*y));
+ sp->from = sp->to = sp->current;
+
+ /* Don't update the text sprite more often than once a second. */
+ {
+ sprite *sp2 = find_newest_sprite (mi, TEXT);
+ if (!sp2 || sp2->start_time < ss->now-1)
+ {
+ fadeout_sprites (mi, TEXT);
+ sp = push_text_sprite (mi, sp);
+ sp->remain_p = True;
+ }
+ }
+
+ return ok;
+ }
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ ss->anim_state = IMAGE_FORCE_UNLOAD;
+ return True;
+ }
+# undef BONK
+
+ return False;
+}
+
+
+ENTRYPOINT void
+reshape_esper (ModeInfo *mi, int width, int height)
+{
+ GLfloat s;
+
+ glViewport (0, 0, width, height);
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity();
+ glRotatef (current_device_rotation(), 0, 0, 1);
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity();
+
+ s = 2;
+
+ if (debug_p)
+ {
+ s *= 0.75;
+ if (s < 0.1) s = 0.1;
+ }
+
+ glScalef (s, s, s);
+ glTranslatef (-0.5, -0.5, 0);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ /* Stretch each existing image to match new window aspect. */
+ {
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ for (i = 0; i < ss->nsprites; i++)
+ {
+ sprite *sp = ss->sprites[i];
+ if (sp && sp->type == IMAGE && sp->img && sp->img->loaded_p)
+ {
+ GLfloat sp_asp = sp->current.h / sp->current.w;
+ GLfloat img_asp = (sp->img->geom.height /
+ (GLfloat) sp->img->geom.width);
+ GLfloat new_win = (MI_WIDTH(mi) / (double) MI_HEIGHT(mi));
+ GLfloat old_win = sp_asp / img_asp;
+ GLfloat r = old_win / new_win;
+ if (img_asp > 1)
+ {
+ sp->from.h /= r;
+ sp->current.h /= r;
+ sp->to.h /= r;
+ }
+ else
+ {
+ sp->from.w *= r;
+ sp->current.w *= r;
+ sp->to.w *= r;
+ }
+ }
+ }
+ }
+}
+
+
+static void
+parse_color (ModeInfo *mi, char *key, GLfloat color[4])
+{
+ XColor xcolor;
+ char *string = get_string_resource (mi->dpy, key, "EsperColor");
+ if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor))
+ {
+ fprintf (stderr, "%s: unparsable color in %s: %s\n", progname,
+ key, string);
+ exit (1);
+ }
+
+ color[0] = xcolor.red / 65536.0;
+ color[1] = xcolor.green / 65536.0;
+ color[2] = xcolor.blue / 65536.0;
+ color[3] = 1;
+}
+
+
+ENTRYPOINT void
+init_esper (ModeInfo *mi)
+{
+ int screen = MI_SCREEN(mi);
+ esper_state *ss;
+ int wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT (mi, sss);
+ ss = &sss[screen];
+
+ if ((ss->glx_context = init_GL(mi)) != NULL) {
+ reshape_esper (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+
+ parse_color (mi, "gridColor", ss->grid_color);
+ parse_color (mi, "reticleColor", ss->reticle_color);
+ parse_color (mi, "textColor", ss->text_color);
+
+ glDisable (GL_LIGHTING);
+ glDisable (GL_DEPTH_TEST);
+ glDepthMask (GL_FALSE);
+ glEnable (GL_CULL_FACE);
+ glCullFace (GL_BACK);
+
+ if (! wire)
+ {
+ glEnable (GL_TEXTURE_2D);
+ glShadeModel (GL_SMOOTH);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ ss->font_data = load_texture_font (mi->dpy, "titleFont");
+
+ ss->now = double_time();
+ ss->dawn_of_time = ss->now;
+
+ alloc_image (mi);
+
+ ss->anim_state = BLANK;
+ ss->anim_start = 0;
+ ss->anim_duration = 0;
+}
+
+
+ENTRYPOINT void
+draw_esper (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+
+ if (!ss->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+
+ mi->polygon_count = 0;
+
+ ss->now = double_time();
+
+ tick_sprites (mi);
+ draw_sprites (mi);
+ if (ss->now >= ss->anim_start + ss->anim_duration)
+ tick_animation (mi);
+
+ if (mi->fps_p) do_fps (mi);
+
+ glFinish();
+ glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
+XSCREENSAVER_MODULE ("Esper", esper)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/esper.man b/hacks/glx/esper.man
new file mode 100644
index 0000000..4d994d9
--- /dev/null
+++ b/hacks/glx/esper.man
@@ -0,0 +1,68 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+esper - Enhance 224 to 176. Go right. Enhance 57 19. Track 45 left.
+.SH SYNOPSIS
+.B esper
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-titles]
+[\-fps]
+.SH DESCRIPTION
+"Enhance 224 to 176. Pull out track right. Center in pull back. Pull back.
+Wait a minute. Go right. Stop. Enhance 57 19. Track 45 left. Gimme a
+hardcopy right there."
+
+The Esper Machine was a voice-controlled forensic device used by LAPD
+in 2019, as documented in the 1982 film, \fIBlade Runner.\fP It was
+capable of enhancing photographs to an extreme degree, including
+reconstructing different viewpoints within the space from the
+reflections on various objects in the photograph.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-titles | \-no-titles
+Show file names. Boolean.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the top of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2017 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/extrusion-helix2.c b/hacks/glx/extrusion-helix2.c
new file mode 100644
index 0000000..7a7152f
--- /dev/null
+++ b/hacks/glx/extrusion-helix2.c
@@ -0,0 +1,47 @@
+
+/*
+ * helicoid (gernalized torus) demo
+ *
+ * FUNCTION:
+ * This code provides a very simple example of the helicoid primitive.
+ * Most of this code is required to set up OpenGL and GLUT, and very
+ * very little to set up the helix drawer. Don't blink!
+ *
+ * =======> MOUSE HOOKED UP TO RADIUS, DELTA-RADIUS < ========
+ *
+ * HISTORY:
+ * Written by Linas Vepstas, March 1995
+ */
+
+#include "extrusion.h"
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+void InitStuff_helix2 (void)
+{
+}
+
+/* draw the helix shape */
+void DrawStuff_helix2 (void)
+{
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glColor3f (0.6, 0.3, 0.8);
+
+ /* set up some matrices so that the object spins with the mouse */
+ glPushMatrix ();
+/* glTranslatef (0.0, 0.0, -80.0); */
+/* glRotatef (220.0, 0.0, 1.0, 0.0); */
+/* glRotatef (65.0, 1.0, 0.0, 0.0); */
+
+ /* Phew. FINALLY, Draw the helix -- */
+ gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
+ gleHelicoid (0.01*lastx,
+ 6.0, (0.01*lasty - 2.0),
+ -3.0, 4.0, 0x0, 0x0, 0.0, 1080.0);
+
+ glPopMatrix ();
+
+}
+/* ------------------------- end of file ----------------- */
diff --git a/hacks/glx/extrusion-helix3.c b/hacks/glx/extrusion-helix3.c
new file mode 100644
index 0000000..7650f46
--- /dev/null
+++ b/hacks/glx/extrusion-helix3.c
@@ -0,0 +1,46 @@
+
+/*
+ * helicoid (gernalized torus) demo
+ *
+ * FUNCTION:
+ * This code provides a very simple example of the helicoid primitive.
+ * Most of this code is required to set up OpenGL and GLUT, and very
+ * very little to set up the helix drawer. Don't blink!
+ *
+ * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ========
+ *
+ * HISTORY:
+ * Written by Linas Vepstas, March 1995
+ */
+
+#include "extrusion.h"
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+void InitStuff_helix3 (void)
+{
+}
+
+/* draw the helix shape */
+void DrawStuff_helix3 (void)
+{
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glColor3f (0.8, 0.3, 0.6);
+
+ /* set up some matrices so that the object spins with the mouse */
+ glPushMatrix ();
+/* glTranslatef (0.0, 0.0, -80.0); */
+/* glRotatef (220.0, 0.0, 1.0, 0.0); */
+/* glRotatef (65.0, 1.0, 0.0, 0.0); */
+
+ /* Phew. FINALLY, Draw the helix -- */
+ gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
+ gleHelicoid (1.0, 6.0, -1.0,
+ 0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx);
+
+ glPopMatrix ();
+
+}
+/* ------------------------- end of file ----------------- */
diff --git a/hacks/glx/extrusion-helix4.c b/hacks/glx/extrusion-helix4.c
new file mode 100644
index 0000000..fbf1602
--- /dev/null
+++ b/hacks/glx/extrusion-helix4.c
@@ -0,0 +1,63 @@
+
+/*
+ * helicoid (gernalized torus) demo
+ *
+ * FUNCTION:
+ * This code provides a very simple example of the helicoid primitive.
+ * Most of this code is required to set up OpenGL and GLUT, and very
+ * very little to set up the helix drawer. Don't blink!
+ *
+ * =======> MOUSE HOOKED UP TO AFFINE < ========
+ *
+ * HISTORY:
+ * Written by Linas Vepstas, March 1995
+ */
+
+#include "extrusion.h"
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+void InitStuff_helix4 (void)
+{
+}
+
+/* draw the helix shape */
+void DrawStuff_helix4 (void)
+{
+ double affine[2][3];
+ double delta_affine[2][3];
+
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glColor3f (0.7, 0.5, 0.3);
+
+ /* set up some matrices so that the object spins with the mouse */
+ glPushMatrix ();
+/* glTranslatef (0.0, 0.0, -80.0); */
+/* glRotatef (220.0, 0.0, 1.0, 0.0); */
+/* glRotatef (65.0, 1.0, 0.0, 0.0); */
+
+ /* Phew. FINALLY, Draw the helix -- */
+ affine [0][0] = 1.0/ (0.01*lastx);
+ affine [1][0] = 0.0;
+ affine [0][1] = 0.0;
+ affine [1][1] = 0.01*lastx;
+ affine [0][2] = 0.0;
+ affine [1][2] = 0.0;
+
+ delta_affine [0][0] = 0.0;
+ delta_affine [1][0] = 0.03*lasty;
+ delta_affine [0][1] = -0.03*lasty;
+ delta_affine [1][1] = 0.0;
+ delta_affine [0][2] = 0.0;
+ delta_affine [1][2] = 0.0;
+
+ gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
+ gleHelicoid (1.0, 7.0, -1.0,
+ -4.0, 6.0, affine, delta_affine, 0.0, 980.0);
+
+ glPopMatrix ();
+
+}
+/* ------------------------- end of file ----------------- */
diff --git a/hacks/glx/extrusion-joinoffset.c b/hacks/glx/extrusion-joinoffset.c
new file mode 100644
index 0000000..89a60e2
--- /dev/null
+++ b/hacks/glx/extrusion-joinoffset.c
@@ -0,0 +1,148 @@
+
+/* cylinder drawing demo */
+/* this demo demonstrates the various join styles */
+
+#include "extrusion.h"
+
+/* ------------------------------------------------------- */
+
+/* the arrays in which we will store the polyline */
+#define NPTS 100
+static double points [NPTS][3];
+static float colors [NPTS][3];
+static int idx = 0;
+
+/* some utilities for filling that array */
+#define PSCALE 0.5
+#define PNT(x,y,z) { \
+ points[idx][0] = PSCALE * x; \
+ points[idx][1] = PSCALE * y; \
+ points[idx][2] = PSCALE * z; \
+ idx ++; \
+}
+
+#define COL(r,g,b) { \
+ colors[idx][0] = r; \
+ colors[idx][1] = g; \
+ colors[idx][2] = b; \
+}
+
+/* the arrays in which we will store the contour */
+#define NCONTOUR 100
+static double contour_points [NCONTOUR][2];
+static int cidx = 0;
+
+/* some utilities for filling that array */
+#define C_PNT(x,y) { \
+ contour_points[cidx][0] = x; \
+ contour_points[cidx][1] = y; \
+ cidx ++; \
+}
+
+
+/* ------------------------------------------------------- */
+/*
+ * Initialize a bent shape with three segments.
+ * The data format is a polyline.
+ *
+ * NOTE that neither the first, nor the last segment are drawn.
+ * The first & last segment serve only to determine that angle
+ * at which the endcaps are drawn.
+ */
+
+void InitStuff_joinoffset (void)
+{
+ COL (0.0, 0.0, 0.0);
+ PNT (16.0, 0.0, 0.0);
+
+ COL (0.2, 0.8, 0.5);
+ PNT (0.0, -16.0, 0.0);
+
+ COL (0.0, 0.8, 0.3);
+ PNT (-16.0, 0.0, 0.0);
+
+ COL (0.8, 0.3, 0.0);
+ PNT (0.0, 16.0, 0.0);
+
+ COL (0.2, 0.3, 0.9);
+ PNT (16.0, 0.0, 0.0);
+
+ COL (0.2, 0.8, 0.5);
+ PNT (0.0, -16.0, 0.0);
+
+ COL (0.0, 0.0, 0.0);
+ PNT (-16.0, 0.0, 0.0);
+
+ C_PNT (-0.8, -0.5);
+ C_PNT (-1.8, 0.0);
+ C_PNT (-1.2, 0.3);
+ C_PNT (-0.7, 0.8);
+ C_PNT (-0.2, 1.3);
+ C_PNT (0.0, 1.6);
+ C_PNT (0.2, 1.3);
+ C_PNT (0.7, 0.8);
+ C_PNT (1.2, 0.3);
+ C_PNT (1.8, 0.0);
+ C_PNT (0.8, -0.5);
+
+ gleSetJoinStyle (TUBE_JN_ANGLE | TUBE_CONTOUR_CLOSED | TUBE_JN_CAP);
+}
+
+static double up_vector[3] = {1.0, 0.0, 0.0};
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+/* ------------------------------------------------------- */
+/* draw the extrusion */
+
+void DrawStuff_joinoffset (void)
+{
+ double moved_contour [NCONTOUR][2];
+ int style, save_style;
+ int i;
+
+ for (i=0; i
+#include
+
+/* =========================================================== */
+
+#define SCALE 1.3
+#define CONTOUR(x,y) { \
+ double ax, ay, alen; \
+ contour[i][0] = SCALE * (x); \
+ contour[i][1] = SCALE * (y); \
+ if (i!=0) { \
+ ax = contour[i][0] - contour[i-1][0]; \
+ ay = contour[i][1] - contour[i-1][1]; \
+ alen = 1.0 / sqrt (ax*ax + ay*ay); \
+ ax *= alen; ay *= alen; \
+ norms [i-1][0] = ay; \
+ norms [i-1][1] = -ax; \
+ } \
+ i++; \
+}
+
+#define NUM_PTS (25)
+
+static double contour [NUM_PTS][2];
+static double norms [NUM_PTS][2];
+
+static void init_contour (void)
+{
+ int i;
+
+ /* outline of extrusion */
+ i=0;
+ CONTOUR (1.0, 1.0);
+ CONTOUR (1.0, 2.9);
+ CONTOUR (0.9, 3.0);
+ CONTOUR (-0.9, 3.0);
+ CONTOUR (-1.0, 2.9);
+
+ CONTOUR (-1.0, 1.0);
+ CONTOUR (-2.9, 1.0);
+ CONTOUR (-3.0, 0.9);
+ CONTOUR (-3.0, -0.9);
+ CONTOUR (-2.9, -1.0);
+
+ CONTOUR (-1.0, -1.0);
+ CONTOUR (-1.0, -2.9);
+ CONTOUR (-0.9, -3.0);
+ CONTOUR (0.9, -3.0);
+ CONTOUR (1.0, -2.9);
+
+ CONTOUR (1.0, -1.0);
+ CONTOUR (2.9, -1.0);
+ CONTOUR (3.0, -0.9);
+ CONTOUR (3.0, 0.9);
+ CONTOUR (2.9, 1.0);
+
+ CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */
+}
+
+/* =========================================================== */
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+void InitStuff_screw (void)
+{
+ int style;
+
+ /* configure the pipeline */
+ style = TUBE_JN_CAP;
+ style |= TUBE_CONTOUR_CLOSED;
+ style |= TUBE_NORM_FACET;
+ style |= TUBE_JN_ANGLE;
+ gleSetJoinStyle (style);
+
+ init_contour();
+}
+
+/* =========================================================== */
+
+void DrawStuff_screw (void) {
+
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glColor3f (0.5, 0.6, 0.6);
+
+ /* set up some matrices so that the object spins with the mouse */
+ glPushMatrix ();
+ /* glTranslatef (0.0, 0.0, -80.0); */
+ /* glRotatef (130.0, 0.0, 1.0, 0.0); */
+ /* glRotatef (65.0, 1.0, 0.0, 0.0); */
+
+ /* draw the brand and the handle */
+ gleScrew (20, contour, norms,
+ NULL, -6.0, 9.0, lasty);
+
+ glPopMatrix ();
+}
+
+/* ===================== END OF FILE ================== */
diff --git a/hacks/glx/extrusion-taper.c b/hacks/glx/extrusion-taper.c
new file mode 100644
index 0000000..d2d05a1
--- /dev/null
+++ b/hacks/glx/extrusion-taper.c
@@ -0,0 +1,218 @@
+/*
+ * taper.c
+ *
+ * FUNCTION:
+ * Draws a tapered screw shape.
+ *
+ * HISTORY:
+ * -- created by Linas Vepstas October 1991
+ * -- heavily modified to draw more texas shapes, Feb 1993, Linas
+ * -- converted to use GLUT -- December 1995, Linas
+ *
+ */
+
+#include "extrusion.h"
+
+#include
+#include
+
+#ifndef NULL
+#define NULL ((void *) 0x0)
+#endif /* NULL */
+
+/* Some files do not define M_PI... */
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+/* =========================================================== */
+
+#define SCALE 3.33333
+#define CONTOUR(x,y) { \
+ double ax, ay, alen; \
+ contour[i][0] = SCALE * (x); \
+ contour[i][1] = SCALE * (y); \
+ if (i!=0) { \
+ ax = contour[i][0] - contour[i-1][0]; \
+ ay = contour[i][1] - contour[i-1][1]; \
+ alen = 1.0 / sqrt (ax*ax + ay*ay); \
+ ax *= alen; ay *= alen; \
+ norms [i-1][0] = ay; \
+ norms [i-1][1] = -ax; \
+ } \
+ i++; \
+}
+
+#define NUM_PTS (25)
+
+static double contour [NUM_PTS][2];
+static double norms [NUM_PTS][2];
+
+static void init_contour (void)
+{
+ int i;
+
+ /* outline of extrusion */
+ i=0;
+ CONTOUR (1.0, 1.0);
+ CONTOUR (1.0, 2.9);
+ CONTOUR (0.9, 3.0);
+ CONTOUR (-0.9, 3.0);
+ CONTOUR (-1.0, 2.9);
+
+ CONTOUR (-1.0, 1.0);
+ CONTOUR (-2.9, 1.0);
+ CONTOUR (-3.0, 0.9);
+ CONTOUR (-3.0, -0.9);
+ CONTOUR (-2.9, -1.0);
+
+ CONTOUR (-1.0, -1.0);
+ CONTOUR (-1.0, -2.9);
+ CONTOUR (-0.9, -3.0);
+ CONTOUR (0.9, -3.0);
+ CONTOUR (1.0, -2.9);
+
+ CONTOUR (1.0, -1.0);
+ CONTOUR (2.9, -1.0);
+ CONTOUR (3.0, -0.9);
+ CONTOUR (3.0, 0.9);
+ CONTOUR (2.9, 1.0);
+
+ CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */
+}
+
+/* =========================================================== */
+
+#define PSIZE 40
+static double path[PSIZE][3];
+static double twist[PSIZE];
+static double taper[PSIZE];
+
+static void init_taper (void) {
+ int j;
+ double z, deltaz;
+ double ang, dang;
+
+ z = -10.0;
+ deltaz = 0.5;
+
+ ang = 0.0;
+ dang = 20.0;
+ for (j=0; j<40; j++) {
+ path[j][0] = 0x0;
+ path[j][1] = 0x0;
+ path[j][2] = z;
+
+ twist[j] = ang;
+ ang += dang;
+
+ taper[j] = 0.1 * sqrt (9.51*9.51 - z*z);
+
+ z += deltaz;
+ }
+
+ taper[0] = taper[1];
+ taper[39] = taper[38];
+
+}
+
+/* =========================================================== */
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+void InitStuff_taper (void)
+{
+ int style;
+
+ /* configure the pipeline */
+ style = TUBE_JN_CAP;
+ style |= TUBE_CONTOUR_CLOSED;
+ style |= TUBE_NORM_FACET;
+ style |= TUBE_JN_ANGLE;
+ gleSetJoinStyle (style);
+
+ init_contour();
+ init_taper();
+}
+
+/* =========================================================== */
+
+static void gleTaper (int ncp,
+ gleDouble contour[][2],
+ gleDouble cont_normal[][2],
+ gleDouble up[3],
+ int npoints,
+ gleDouble point_array[][3],
+ float color_array[][3],
+ gleDouble taper[],
+ gleDouble twist[])
+{
+ int j;
+ gleAffine *xforms;
+ double co, si, angle;
+
+ /* malloc the extrusion array and the twist array */
+ xforms = (gleAffine *) malloc (npoints * sizeof(gleAffine));
+
+ for (j=0; j
+#include
+
+/* Some files do not define M_PI... */
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+/* controls shape of object */
+extern float lastx;
+extern float lasty;
+
+#define OPENGL_10
+/* =========================================================== */
+
+#define NUM_TOID1_PTS 5
+static double toid1_points[NUM_TOID1_PTS][3];
+static float toid1_colors [NUM_TOID1_PTS][3];
+static double toid1_twists [NUM_TOID1_PTS];
+
+#define TSCALE (6.0)
+
+#define TPTS(x,y) { \
+ toid1_points[i][0] = TSCALE * (x); \
+ toid1_points[i][1] = TSCALE * (y); \
+ toid1_points[i][2] = TSCALE * (0.0); \
+ i++; \
+}
+
+#define TCOLS(r,g,b) { \
+ toid1_colors[i][0] = (r); \
+ toid1_colors[i][1] = (g); \
+ toid1_colors[i][2] = (b); \
+ i++; \
+}
+
+#define TXZERO() { \
+ toid1_twists[i] = 0.0; \
+ i++; \
+}
+
+static void init_toid1_line (void)
+{
+ int i;
+
+ i=0;
+ TPTS (-1.1, 0.0);
+ TPTS (-1.0, 0.0);
+ TPTS (0.0, 0.0);
+ TPTS (1.0, 0.0);
+ TPTS (1.1, 0.0);
+
+ i=0;
+ TCOLS (0.8, 0.8, 0.5);
+ TCOLS (0.8, 0.4, 0.5);
+ TCOLS (0.8, 0.8, 0.3);
+ TCOLS (0.4, 0.4, 0.5);
+ TCOLS (0.8, 0.8, 0.5);
+
+ i=0;
+ TXZERO ();
+ TXZERO ();
+ TXZERO ();
+ TXZERO ();
+ TXZERO ();
+}
+
+/* =========================================================== */
+
+#define SCALE 0.6
+#define TWIST(x,y) { \
+ double ax, ay, alen; \
+ twistation[i][0] = SCALE * (x); \
+ twistation[i][1] = SCALE * (y); \
+ if (i!=0) { \
+ ax = twistation[i][0] - twistation[i-1][0]; \
+ ay = twistation[i][1] - twistation[i-1][1]; \
+ alen = 1.0 / sqrt (ax*ax + ay*ay); \
+ ax *= alen; ay *= alen; \
+ twist_normal [i-1][0] = - ay; \
+ twist_normal [i-1][1] = ax; \
+ } \
+ i++; \
+}
+
+#define NUM_TWIS_PTS (20)
+
+static double twistation [NUM_TWIS_PTS][2];
+static double twist_normal [NUM_TWIS_PTS][2];
+
+static void init_tripples (void)
+{
+ int i;
+ double angle;
+ double co, si;
+
+ /* outline of extrusion */
+ i=0;
+ /* first, draw a semi-curcular "hump" */
+ while (i< 11) {
+ angle = M_PI * ((double) i) / 10.0;
+ co = cos (angle);
+ si = sin (angle);
+ TWIST ((-7.0 -3.0*co), 1.8*si);
+ }
+
+ /* now, a zig-zag corrugation */
+ while (1) {
+ if (i >= NUM_TWIS_PTS) break;
+ TWIST ((-10.0 +(double) i), 0.0);
+ if (i >= NUM_TWIS_PTS) break;
+ TWIST ((-9.5 +(double) i), 1.0);
+ }
+}
+
+
+/* =========================================================== */
+
+#define V3F(x,y,z) { \
+ float vvv[3]; \
+ vvv[0] = x; vvv[1] = y; vvv[2] = z; v3f (vvv); \
+}
+
+#define N3F(x,y,z) { \
+ float nnn[3]; \
+ nnn[0] = x; nnn[1] = y; nnn[2] = z; n3f (nnn); \
+}
+
+/* =========================================================== */
+
+void DrawStuff_twistoid (void) {
+ int i;
+
+ toid1_twists[2] = (lastx-121.0) / 8.0;
+
+ i=3;
+/*
+ TPTS (1.0, lasty /400.0);
+ TPTS (1.1, 1.1 * lasty / 400.0);
+*/
+ TPTS (1.0, -(lasty-121.0) /200.0);
+ TPTS (1.1, -1.1 * (lasty-121.0) / 200.0);
+
+#ifdef IBM_GL_32
+ rotate (230, 'x');
+ rotate (230, 'y');
+ scale (1.8, 1.8, 1.8);
+
+ if (mono_color) {
+ RGBcolor (178, 178, 204);
+ twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal,
+ NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists);
+ } else {
+ twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal,
+ NULL, NUM_TOID1_PTS, toid1_points, toid1_colors, toid1_twists);
+ }
+#endif
+
+#ifdef OPENGL_10
+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glFrontFace(GL_CW); /* jwz */
+
+ /* set up some matrices so that the object spins with the mouse */
+ glPushMatrix ();
+/* glTranslatef (0.0, 0.0, -80.0); */
+/* glRotated (43.0, 1.0, 0.0, 0.0); */
+/* glRotated (43.0, 0.0, 1.0, 0.0); */
+ glScaled (1.8, 1.8, 1.8);
+ gleTwistExtrusion (NUM_TWIS_PTS, twistation, twist_normal,
+ NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists);
+ glPopMatrix ();
+#endif
+
+}
+
+/* =========================================================== */
+
+void InitStuff_twistoid (void)
+{
+ int js;
+
+ init_toid1_line ();
+ init_tripples ();
+
+#ifdef IBM_GL_32
+ js = getjoinstyle ();
+ js &= ~TUBE_CONTOUR_CLOSED;
+ setjoinstyle (js);
+#endif
+
+#ifdef OPENGL_10
+ js = gleGetJoinStyle ();
+ js &= ~TUBE_CONTOUR_CLOSED;
+ gleSetJoinStyle (js);
+#endif
+
+}
+
+/* ------------------ end of file -------------------- */
diff --git a/hacks/glx/extrusion.c b/hacks/glx/extrusion.c
new file mode 100644
index 0000000..3dee71c
--- /dev/null
+++ b/hacks/glx/extrusion.c
@@ -0,0 +1,556 @@
+/* -*- Mode: C; tab-width: 4 -*- */
+/* extrusion --- extrusion module for xscreensaver */
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+
+ * Revision History:
+ * Tue Oct 19 22:24:47 PDT 1999 Initial creation by David Konerding
+ *
+ *
+ * Notes:
+ * This screensaver requires the GLE ("OpenGL Tubing and Extrusion Library")
+ * which can be obtained from http://www.linas.org/gle/index.html
+ */
+
+#ifdef HAVE_CONFIG_H
+#include
+#endif
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n"
+
+# define free_extrusion 0
+# define release_extrusion 0
+# include "xlockmore.h" /* from the xscreensaver distribution */
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+#ifdef USE_GL /* whole file */
+
+#ifdef HAVE_XMU
+# ifndef VMS
+# include
+#else /* VMS */
+# include
+# endif /* VMS */
+#endif
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "ximage-loader.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "extrusion.h"
+
+#define checkImageWidth 64
+#define checkImageHeight 64
+
+
+#define WIDTH 640
+#define HEIGHT 480
+
+#define DEF_LIGHT "True"
+#define DEF_TEXTURE "False"
+#define DEF_TEX_QUAL "False"
+#define DEF_MIPMAP "False"
+#define DEF_NAME "RANDOM"
+#define DEF_IMAGE "BUILTIN"
+
+static int do_light;
+static int do_texture;
+static int do_tex_qual;
+static int do_mipmap;
+static char *which_name;
+static char *which_image;
+
+static XrmOptionDescRec opts[] = {
+ {"-light", ".extrusion.light", XrmoptionNoArg, "true" },
+ {"+light", ".extrusion.light", XrmoptionNoArg, "false" },
+ {"-texture", ".extrusion.texture", XrmoptionNoArg, "true" },
+ {"+texture", ".extrusion.texture", XrmoptionNoArg, "false" },
+ {"-texture", ".extrusion.texture", XrmoptionNoArg, "true" },
+ {"+texture_quality", ".extrusion.texture", XrmoptionNoArg, "false" },
+ {"-texture_quality", ".extrusion.texture", XrmoptionNoArg, "true" },
+ {"+mipmap", ".extrusion.mipmap", XrmoptionNoArg, "false" },
+ {"-mipmap", ".extrusion.mipmap", XrmoptionNoArg, "true" },
+ {"-name", ".extrusion.name", XrmoptionSepArg, 0 },
+ {"-image", ".extrusion.image", XrmoptionSepArg, 0 },
+};
+
+
+static argtype vars[] = {
+ {&do_light, "light", "Light", DEF_LIGHT, t_Bool},
+ {&do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool},
+ {&do_tex_qual, "texture_quality", "Texture_Quality", DEF_TEX_QUAL, t_Bool},
+ {&do_mipmap, "mipmap", "Mipmap", DEF_MIPMAP, t_Bool},
+ {&which_name, "name", "Name", DEF_NAME, t_String},
+ {&which_image, "image", "Image", DEF_IMAGE, t_String},
+};
+
+
+static OptionStruct desc[] =
+{
+ {"-name num", "example 'name' to draw (helix2, helix3, helix4, joinoffset, screw, taper, twistoid)"},
+ {"-/+ light", "whether to do enable lighting (slower)"},
+ {"-/+ texture", "whether to apply a texture (slower)"},
+ {"-image ", "texture image to load"},
+ {"-/+ texture_quality", "whether to use texture smoothing (slower)"},
+ {"-/+ mipmap", "whether to use texture mipmap (slower)"},
+};
+
+ENTRYPOINT ModeSpecOpt extrusion_opts = {countof(opts), opts, countof(vars), vars, desc};
+
+#ifdef USE_MODULES
+ModStruct extrusion_description =
+{"extrusion", "init_extrusion", "draw_extrusion", NULL,
+ "draw_extrusion", "init_extrusion", NULL, &extrusion_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "OpenGL extrusion", 0, NULL};
+#endif
+
+
+/* structure for holding the extrusion data */
+typedef struct {
+ int screen_width, screen_height;
+ GLXContext *glx_context;
+ rotator *rot;
+ trackball_state *trackball;
+ Bool button_down_p;
+ Bool button2_down_p;
+ int mouse_start_x, mouse_start_y;
+ int mouse_x, mouse_y;
+ int mouse_dx, mouse_dy;
+ Window window;
+ XColor fg, bg;
+ int extrusion_number;
+} extrusionstruct;
+
+static extrusionstruct *Extrusion = NULL;
+
+
+
+/* set up a light */
+static const GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0};
+static const GLfloat lightOneColor[] = {0.99, 0.99, 0.00, 1.0};
+
+static const GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0};
+static const GLfloat lightTwoColor[] = {0.00, 0.99, 0.99, 1.0};
+
+float rot_x=0, rot_y=0, rot_z=0;
+float lastx=0, lasty=0;
+
+static float max_lastx=400, max_lasty=400;
+static float min_lastx=-400, min_lasty=-400;
+
+struct functions {
+ void (*InitStuff)(void);
+ void (*DrawStuff)(void);
+ char *name;
+};
+
+/* currently joinoffset and twistoid look funny-
+ like we're looking at them from the back or something
+*/
+
+static const struct functions funcs_ptr[] = {
+ {InitStuff_helix2, DrawStuff_helix2, "helix2"},
+ {InitStuff_helix3, DrawStuff_helix3, "helix3"},
+ {InitStuff_helix4, DrawStuff_helix4, "helix4"},
+ {InitStuff_joinoffset, DrawStuff_joinoffset, "joinoffset"},
+ {InitStuff_screw, DrawStuff_screw, "screw"},
+ {InitStuff_taper, DrawStuff_taper, "taper"},
+ {InitStuff_twistoid, DrawStuff_twistoid, "twistoid"},
+};
+
+static int num_extrusions = countof(funcs_ptr);
+
+
+/* BEGINNING OF FUNCTIONS */
+
+
+static GLubyte *
+Generate_Image(int *width, int *height, int *format)
+{
+ GLubyte *result;
+ int i, j, c;
+ int counter=0;
+
+ *width = checkImageWidth;
+ *height = checkImageHeight;
+ result = (GLubyte *)malloc(4 * (*width) * (*height));
+
+ counter = 0;
+ for (i = 0; i < checkImageWidth; i++) {
+ for (j = 0; j < checkImageHeight; j++) {
+ c = (((((i&0x8)==0))^(((j&0x8))==0)))*255;
+ result[counter++] = (GLubyte) c;
+ result[counter++] = (GLubyte) c;
+ result[counter++] = (GLubyte) c;
+ result[counter++] = (GLubyte) 255;
+ }
+ }
+
+ *format = GL_RGBA;
+ return result;
+}
+
+
+/* Create a texture in OpenGL. First an image is loaded
+ and stored in a raster buffer, then it's */
+static void Create_Texture(ModeInfo *mi, const char *filename)
+{
+ int height, width;
+ GLubyte *image;
+ int format;
+
+ if ( !strncmp(filename, "BUILTIN", 7))
+ {
+ BUILTIN:
+ image = Generate_Image(&width, &height, &format);
+ }
+ else
+ {
+ XImage *ximage = file_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi),
+ filename);
+ if (!ximage)
+ goto BUILTIN;
+ image = (GLubyte *) ximage->data;
+ width = ximage->width;
+ height = ximage->height;
+ format = GL_RGBA;
+ }
+
+ /* GL_MODULATE or GL_DECAL depending on what you want */
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ /* perhaps we can edge a bit more speed at the expense of quality */
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
+
+ if (do_tex_qual) {
+ /* with texture_quality, the min and mag filters look *much* nice but are *much* slower */
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+ }
+ else {
+ /* default is to do it quick and dirty */
+ /* if you have mipmaps turned on, but not texture quality, nothing will happen! */
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ }
+
+ /* mipmaps make the image look much nicer */
+ if (do_mipmap)
+ {
+ int status;
+ clear_gl_error();
+ status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, format,
+ GL_UNSIGNED_BYTE, image);
+ if (status)
+ {
+ const char *s = (char *) gluErrorString (status);
+ fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n",
+ progname, width, height,
+ (s ? s : "(unknown)"));
+ exit (1);
+ }
+ check_gl_error("mipmapping");
+ }
+ else
+ {
+ clear_gl_error();
+ glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0,
+ format, GL_UNSIGNED_BYTE, image);
+ check_gl_error("texture");
+ }
+}
+
+
+static void
+init_rotation (ModeInfo *mi)
+{
+ extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+ double spin_speed = 0.5;
+ gp->rot = make_rotator (spin_speed, spin_speed, spin_speed,
+ 0.2,
+ 0.005,
+ True);
+ gp->trackball = gltrackball_init (True);
+
+ lastx = (random() % (int) (max_lastx - min_lastx)) + min_lastx;
+ lasty = (random() % (int) (max_lasty - min_lasty)) + min_lasty;
+}
+
+
+/* draw the extrusion once */
+ENTRYPOINT void
+draw_extrusion(ModeInfo * mi)
+{
+ extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+ Display *display = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+
+ static const GLfloat color[4] = {0.6, 0.6, 0.4, 1.0};
+ /* static const GLfloat spec[4] = {0.6, 0.6, 0.6, 1.0}; */
+ /* static const GLfloat shiny = 40.0; */
+
+ double x, y, z;
+
+ if (!gp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+
+ glPushMatrix();
+
+ gltrackball_rotate (gp->trackball);
+
+ get_rotation (gp->rot, &x, &y, &z,
+ !(gp->button_down_p || gp->button2_down_p));
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);
+
+ /* track the mouse only if a button is down. */
+ if (gp->button2_down_p)
+ {
+ gp->mouse_dx += gp->mouse_x - gp->mouse_start_x;
+ gp->mouse_dy += gp->mouse_y - gp->mouse_start_y;
+ gp->mouse_start_x = gp->mouse_x;
+ gp->mouse_start_y = gp->mouse_y;
+ }
+
+ {
+ float scale = (max_lastx - min_lastx);
+ get_position (gp->rot, &x, &y, &z,
+ !(gp->button_down_p || gp->button2_down_p));
+ lastx = x * scale + min_lastx + gp->mouse_dx;
+ lasty = y * scale + min_lasty + gp->mouse_dy;
+ }
+
+ glScalef(0.5, 0.5, 0.5);
+
+ /* glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, spec); */
+ /* glMateriali (GL_FRONT_AND_BACK, GL_SHININESS, shiny); */
+
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glFrontFace(GL_CCW);
+
+ funcs_ptr[gp->extrusion_number].DrawStuff();
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glXSwapBuffers(display, window);
+}
+
+
+/* set up lighting conditions */
+static void
+SetupLight(void)
+{
+ glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition);
+ glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor);
+ glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition);
+ glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor);
+
+ glEnable (GL_LIGHT0);
+ glEnable (GL_LIGHT1);
+ glEnable (GL_LIGHTING);
+
+ glColorMaterial (GL_FRONT, GL_DIFFUSE);
+ glColorMaterial (GL_BACK, GL_DIFFUSE);
+ glEnable (GL_COLOR_MATERIAL);
+}
+
+/* Standard reshape function */
+ENTRYPOINT void
+reshape_extrusion (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+/* decide which extrusion example to run */
+static void
+chooseExtrusionExample (ModeInfo *mi)
+{
+ extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+ int i;
+ /* call the extrusion init routine */
+
+ if (!strncmp(which_name, "RANDOM", strlen(which_name))) {
+ gp->extrusion_number = random() % num_extrusions;
+ }
+ else {
+ gp->extrusion_number=-1;
+ for (i=0; i < num_extrusions; i++) {
+ if (!strncmp(which_name, funcs_ptr[i].name, strlen(which_name))) {
+ gp->extrusion_number = i;
+ }
+ }
+ }
+
+ if (gp->extrusion_number < 0 || gp->extrusion_number >= num_extrusions) {
+ fprintf(stderr, "%s: invalid extrusion example number!\n", progname);
+ fprintf(stderr, "%s: known extrusions:\n", progname);
+ for (i=0; i < num_extrusions; i++)
+ fprintf(stderr,"\t%s\n", funcs_ptr[i].name);
+ exit(1);
+ }
+ init_rotation(mi);
+ funcs_ptr[gp->extrusion_number].InitStuff();
+}
+
+
+/* main OpenGL initialization routine */
+static void
+initializeGL(ModeInfo *mi, GLsizei width, GLsizei height)
+{
+ int style;
+ int mode;
+
+ reshape_extrusion(mi, width, height);
+ glViewport( 0, 0, width, height );
+
+ glEnable(GL_DEPTH_TEST);
+ glDisable (GL_CULL_FACE);
+ glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, True);
+ glShadeModel(GL_SMOOTH);
+
+# ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
+ MI_IS_WIREFRAME(mi) = 0;
+# endif
+
+ if (do_light)
+ SetupLight();
+ if (MI_IS_WIREFRAME(mi)) {
+ glPolygonMode(GL_FRONT,GL_LINE);
+ glPolygonMode(GL_BACK,GL_LINE);
+ }
+ if (do_texture) {
+ Create_Texture(mi, which_image);
+ glEnable(GL_TEXTURE_2D);
+
+ /* configure the pipeline */
+ style = TUBE_JN_CAP;
+ style |= TUBE_CONTOUR_CLOSED;
+ style |= TUBE_NORM_FACET;
+ style |= TUBE_JN_ANGLE;
+ gleSetJoinStyle (style);
+
+ if (do_texture) {
+ mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_FLAT;
+ glMatrixMode (GL_TEXTURE); glLoadIdentity ();
+ glScalef (0.25, 0.1, 1); glMatrixMode (GL_MODELVIEW);
+ gleTextureMode (mode);
+ }
+ }
+
+}
+
+ENTRYPOINT Bool
+extrusion_handle_event (ModeInfo *mi, XEvent *event)
+{
+ extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ (event->xbutton.button == Button4 ||
+ event->xbutton.button == Button5 ||
+ event->xbutton.button == Button6 ||
+ event->xbutton.button == Button7))
+ {
+ }
+ else if (event->xany.type == ButtonPress && /* rotate with left button */
+ !event->xbutton.state) /* if no modifier keys */
+ {
+ }
+ else if (event->xany.type == ButtonPress) /* deform with other buttons */
+ { /* or with modifier keys */
+ gp->button2_down_p = True;
+ }
+ else if (event->xany.type == ButtonRelease)
+ {
+ gp->button_down_p = False;
+ gp->button2_down_p = False;
+ }
+ else if (event->xany.type == MotionNotify)
+ {
+ if (gp->button2_down_p)
+ {
+ gp->mouse_x = event->xmotion.x;
+ gp->mouse_y = event->xmotion.y;
+ }
+ }
+
+ if (gltrackball_event_handler (event, gp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &gp->button_down_p))
+ return True;
+
+ return False;
+}
+
+
+/* xextrusion initialization routine */
+ENTRYPOINT void
+init_extrusion (ModeInfo * mi)
+{
+ int screen = MI_SCREEN(mi);
+ extrusionstruct *gp;
+
+ if (MI_IS_WIREFRAME(mi)) do_light = 0;
+
+ MI_INIT(mi, Extrusion);
+ gp = &Extrusion[screen];
+
+ gp->window = MI_WINDOW(mi);
+ if ((gp->glx_context = init_GL(mi)) != NULL) {
+ reshape_extrusion(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ initializeGL(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ chooseExtrusionExample(mi);
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+
+}
+
+XSCREENSAVER_MODULE ("Extrusion", extrusion)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/extrusion.h b/hacks/glx/extrusion.h
new file mode 100644
index 0000000..226a442
--- /dev/null
+++ b/hacks/glx/extrusion.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C; tab-width: 4 -*- */
+/* extrusion --- extrusion module for xscreensaver */
+/*-
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind. The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof. In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ */
+
+#ifndef __XSCREENSAVER_EXTRUSION_H__
+#define __XSCREENSAVER_EXTRUSION_H__
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#ifdef HAVE_COCOA
+# include /* gle is included with GLUT on OSX */
+#else /* !HAVE_COCOA */
+# include
+# include
+# ifdef HAVE_GLE3
+# include
+# else
+# include
+# endif
+#endif /* !HAVE_COCOA */
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
+
+extern void InitStuff_helix2(void);
+extern void DrawStuff_helix2(void);
+extern void InitStuff_helix3(void);
+extern void DrawStuff_helix3(void);
+extern void InitStuff_helix4(void);
+extern void DrawStuff_helix4(void);
+extern void InitStuff_joinoffset(void);
+extern void DrawStuff_joinoffset(void);
+extern void InitStuff_screw(void);
+extern void DrawStuff_screw(void);
+extern void InitStuff_taper(void);
+extern void DrawStuff_taper(void);
+extern void InitStuff_twistoid(void);
+extern void DrawStuff_twistoid(void);
+
+#endif /* __XSCREENSAVER_EXTRUSION_H__ */
diff --git a/hacks/glx/extrusion.man b/hacks/glx/extrusion.man
new file mode 100644
index 0000000..e01d573
--- /dev/null
+++ b/hacks/glx/extrusion.man
@@ -0,0 +1,71 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+extrusion - various rotating extruded shapes.
+.SH SYNOPSIS
+.B extrusion
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-name \fIwhich\fP]
+[\-no-light]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Draws various rotating extruded shapes that twist around, lengthen, and
+turn inside out.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
+.TP 8
+.B \-name \fIwhich\fP
+Which object to draw. Choices are: helix2, helix3, helix4, joinoffset,
+screw, taper, and twistoid.
+.TP 8
+.B \-light | \-no-light
+Whether to light the scene, or use flat coloring.
+.TP 8
+.B \-bitmap \fIfile\fP
+The texture map to use.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Linas Vepstas and David Konerding. Permission
+to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation. No representations are made about the suitability of
+this software for any purpose. It is provided "as is" without express
+or implied warranty.
+.SH AUTHOR
+This screensaver was created by David Konerding from the samples that
+come with the GL Extrusion library by Linas Vepstas.
diff --git a/hacks/glx/flipflop.c b/hacks/glx/flipflop.c
new file mode 100644
index 0000000..c26458c
--- /dev/null
+++ b/hacks/glx/flipflop.c
@@ -0,0 +1,859 @@
+/* flipflop, Copyright (c) 2003 Kevin Ogden
+ * (c) 2006 Sergio Gutirrez "Sergut"
+ * (c) 2008 Andrew Galante
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ *
+ * 2003 Kevin Odgen First version
+ * 2006 Sergio Gutirrez "Sergut" Made several parameters dynamic and selectable
+ * from the command line: size of the board,
+ * rotation speed and number of free squares; also
+ * added the "sticks" mode.
+ * 2008 Andrew Galante Added -textured option: textures the board with
+ * an image which gets scrambled as the tiles move
+ *
+ */
+
+#define DEF_MODE "tiles" /* Default mode (options: "tiles", "sticks") */
+#define DEF_SIZEX "9" /* Default width of the board */
+#define DEF_SIZEY "9" /* Default length of the board */
+
+#define DEF_BOARD_SIZE "0" /* "0" means "no value selected by user". It is changed */
+#define DEF_NUMSQUARES "0" /* in function init_flipflop() to its correct value (that */
+#define DEF_FREESQUARES "0" /* is a function of the size of the board and the mode)*/
+
+#define DEF_SPIN "0.1" /* Default angular velocity: PI/10 rads/s */
+
+#define DEF_TEXTURED "False" /* Default: do not grab an image for texturing */
+
+#define DEF_STICK_THICK 54 /* Thickness for the sticks mode (over 100) */
+#define DEF_STICK_RATIO 80 /* Ratio of sticks/total squares (over 100) */
+#define DEF_TILE_THICK 4 /* Thickness for the tiles mode (over 100) */
+#define DEF_TILE_RATIO 95 /* Ratio of tiles/total squares (over 100) */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n"
+
+# define release_flipflop 0
+# include "xlockmore.h"
+
+#else
+# include "xlock.h"
+#endif /* STANDALONE */
+
+#ifdef USE_GL
+
+#include "gltrackball.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static XrmOptionDescRec opts[] = {
+ {"-sticks", ".mode", XrmoptionNoArg, "sticks"},
+ {"-tiles", ".mode", XrmoptionNoArg, "tiles" },
+ {"-mode", ".mode", XrmoptionSepArg, 0 },
+ {"-size", ".size", XrmoptionSepArg, 0 },
+ {"-size-x", ".sizex", XrmoptionSepArg, 0 },
+ {"-size-y", ".sizey", XrmoptionSepArg, 0 },
+ {"-count", ".numsquares", XrmoptionSepArg, 0 },
+ {"-free", ".freesquares", XrmoptionSepArg, 0 },
+ {"-spin", ".spin", XrmoptionSepArg, 0 },
+ {"-texture", ".textured", XrmoptionNoArg, "True" },
+ {"+texture", ".textured", XrmoptionNoArg, "False" },
+};
+
+static int wire, clearbits;
+static int board_x_size, board_y_size, board_avg_size;
+static int numsquares, freesquares;
+static float half_thick;
+static float spin;
+static char* flipflopmode_str="tiles";
+static int textured;
+
+static argtype vars[] = {
+ { &flipflopmode_str, "mode", "Mode", DEF_MODE, t_String},
+ { &board_avg_size, "size", "Integer", DEF_BOARD_SIZE, t_Int},
+ { &board_x_size, "sizex", "Integer", DEF_SIZEX, t_Int},
+ { &board_y_size, "sizey", "Integer", DEF_SIZEY, t_Int},
+ { &numsquares, "numsquares", "Integer", DEF_NUMSQUARES, t_Int},
+ { &freesquares, "freesquares", "Integer", DEF_NUMSQUARES, t_Int},
+ { &spin, "spin", "Float", DEF_SPIN, t_Float},
+ { &textured, "textured", "Bool", DEF_TEXTURED, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt flipflop_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct flipflop_description =
+ {"flipflop", "init_flipflop", "draw_flipflop", NULL,
+ "draw_flipflop", "init_flipflop", "free_flipflop", &flipflop_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Flipflop", 0, NULL};
+
+#endif /* USE_MODULES */
+
+typedef struct {
+ /* array specifying which squares are where (to avoid collisions) */
+ /* -1 means empty otherwise integer represents square index 0 - n-1 */
+ /* occupied[x*board_y_size+y] is the tile [x][y] (i.e. that starts at column x and row y)*/
+ int *occupied; /* size: size_x * size_y */
+ /* an array of xpositions of the squares */
+ int *xpos; /* size: numsquares */
+ /* array of y positions of the squares */
+ int *ypos; /* size: numsquares */
+ /* integer representing the direction of movement of a square */
+ int *direction; /* 0 not, 1 x+, 2 y+, 3 x-, 4 y-*/ /* size: numsquares */
+ /* angle of moving square (during a flip) */
+ float *angle; /* size: numsquares */
+ /* array of colors for a square (RGB) */
+ /* eg. color[ 3*3 + 0 ] is the red component of square 3 */
+ /* eg. color[ 4*3 + 1 ] is the green component of square 4 */
+ /* eg. color[ 5*3 + 2 ] is the blue component of square 5 */
+ /* ^-- n is the number of square */
+ float *color; /* size: numsquares * 3 */
+ /* array of texcoords for each square */
+ /* tex[ n*4 + 0 ] is x texture coordinate of square n's left side */
+ /* tex[ n*4 + 1 ] is y texture coordinate of square n's top side */
+ /* tex[ n*4 + 2 ] is x texture coordinate of square n's right side */
+ /* tex[ n*4 + 3 ] is y texture coordinate of square n's bottom side */
+ float *tex; /* size: numsquares * 4 */
+} randsheet;
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ randsheet *sheet;
+
+ float theta; /* angle of rotation of the board */
+ float flipspeed; /* amount of flip; 1 is a entire flip */
+ float reldist; /* relative distace of camera from center */
+ float energy; /* likelyhood that a square will attempt to move */
+
+ /* texture rectangle */
+ float tex_x;
+ float tex_y;
+ float tex_width;
+ float tex_height;
+
+ /* id of texture in use */
+ GLuint texid;
+
+ Bool mipmap;
+ Bool got_texture;
+
+ GLfloat anisotropic;
+
+} Flipflopcreen;
+
+static Flipflopcreen *qs = NULL;
+
+#include "grab-ximage.h"
+
+static void randsheet_create( randsheet *rs );
+static void randsheet_initialize( randsheet *rs );
+static void randsheet_free( randsheet *rs );
+static int randsheet_new_move( randsheet* rs );
+static void randsheet_move( randsheet *rs, float rot );
+static int randsheet_draw( randsheet *rs );
+static void setup_lights(void);
+static int drawBoard(Flipflopcreen *);
+static int display(ModeInfo *mi);
+static int draw_sheet(float *tex);
+
+
+/* configure lighting */
+static void
+setup_lights(void)
+{
+ /* GLfloat position0[] = { board_avg_size*0.5, board_avg_size*0.1, board_avg_size*0.5, 1.0 }; */
+
+ /* GLfloat position0[] = { -board_avg_size*0.5, 0.2*board_avg_size, -board_avg_size*0.5, 1.0 }; */
+ GLfloat position0[4];
+ position0[0] = 0;
+ position0[1] = board_avg_size*0.3;
+ position0[2] = 0;
+ position0[3] = 1;
+
+ if (wire) return;
+
+ glEnable(GL_LIGHTING);
+ glLightfv(GL_LIGHT0, GL_POSITION, position0);
+ glEnable(GL_LIGHT0);
+}
+
+static void get_texture(ModeInfo *);
+
+
+ENTRYPOINT Bool
+flipflop_handle_event (ModeInfo *mi, XEvent *event)
+{
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, c->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &c->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ if (!textured || c->got_texture)
+ {
+ textured = 1;
+ c->got_texture = False;
+ get_texture (mi);
+ return True;
+ }
+ }
+
+ return False;
+}
+
+/* draw board */
+static int
+drawBoard(Flipflopcreen *c)
+{
+ int i;
+ for( i=0; i < (c->energy) ; i++ ) {
+ randsheet_new_move( c->sheet );
+ }
+ randsheet_move( c->sheet, c->flipspeed * 3.14159 );
+ return randsheet_draw( c->sheet );
+}
+
+
+static int
+display(ModeInfo *mi)
+{
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+ GLfloat amb[] = { 0.8, 0.8, 0.8, 1.0 };
+ int polys = 0;
+
+
+ glClear(clearbits);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.2);
+ glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.15/board_avg_size );
+ glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.15/board_avg_size );
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ /** setup perspectif */
+ glTranslatef(0.0, 0.0, -c->reldist*board_avg_size);
+ glRotatef(22.5, 1.0, 0.0, 0.0);
+ gltrackball_rotate (c->trackball);
+ glRotatef(c->theta*100, 0.0, 1.0, 0.0);
+ glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */
+
+ /* set texture */
+ if(textured)
+ glBindTexture(GL_TEXTURE_2D, c->texid);
+
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi);
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+# endif
+
+ polys = drawBoard(c);
+
+ if (!c->button_down_p) {
+ c->theta += .01 * spin;
+ }
+
+ return polys;
+}
+
+ENTRYPOINT void
+reshape_flipflop(ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport(0,y, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1/h, 1.0, 300.0);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+static void
+image_loaded_cb (const char *filename, XRectangle *geometry,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure)
+{
+ Flipflopcreen *c = (Flipflopcreen *)closure;
+ int i, j;
+ int index = 0;
+ randsheet *rs = c->sheet;
+
+ c->tex_x = (float)geometry->x / (float)texture_width;
+ c->tex_y = (float)geometry->y / (float)texture_height;
+ c->tex_width = (float)geometry->width / (float)texture_width;
+ c->tex_height = (float)geometry->height / (float)texture_height;
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+ (c->mipmap ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR));
+
+ if(c->anisotropic >= 1)
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, c->anisotropic);
+
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ for(i = 0; i < board_x_size && index < numsquares; i++)
+ for(j = 0; j < board_y_size && index < numsquares; j++)
+ {
+ /* arrange squares to form loaded image */
+ rs->tex[ index*4 + 0 ] = c->tex_x + c->tex_width / board_x_size * (i + 0);
+ rs->tex[ index*4 + 1 ] = c->tex_y + c->tex_height / board_y_size * (j + 1);
+ rs->tex[ index*4 + 2 ] = c->tex_x + c->tex_width / board_x_size * (i + 1);
+ rs->tex[ index*4 + 3 ] = c->tex_y + c->tex_height / board_y_size * (j + 0);
+ rs->color[ index*3 + 0 ] = 1;
+ rs->color[ index*3 + 1 ] = 1;
+ rs->color[ index*3 + 2 ] = 1;
+ index++;
+ }
+
+ c->got_texture = True;
+}
+
+static void
+get_texture(ModeInfo *modeinfo)
+{
+ Flipflopcreen *c = &qs[MI_SCREEN(modeinfo)];
+
+ c->got_texture = False;
+ c->mipmap = True;
+ load_texture_async (modeinfo->xgwa.screen, modeinfo->window,
+ *c->glx_context, 0, 0, c->mipmap, c->texid,
+ image_loaded_cb, c);
+}
+
+ENTRYPOINT void
+init_flipflop(ModeInfo *mi)
+{
+ int screen;
+ Flipflopcreen *c;
+
+ if (MI_IS_WIREFRAME(mi)) textured = 0;
+
+ /* Set all constants to their correct values */
+ if (board_avg_size != 0) { /* general size specified by user */
+ board_x_size = board_avg_size;
+ board_y_size = board_avg_size;
+ } else {
+ board_avg_size = (board_x_size + board_y_size) / 2;
+ }
+ if ((numsquares == 0) && (freesquares != 0)) {
+ numsquares = board_x_size * board_y_size - freesquares;
+ }
+ if (strcmp(flipflopmode_str, "tiles")) {
+ textured = 0; /* textures look dumb in stick mode */
+ half_thick = 1.0 * DEF_STICK_THICK / 100.0;
+ if (numsquares == 0) { /* No value defined by user */
+ numsquares = board_x_size * board_y_size * DEF_STICK_RATIO / 100;
+ }
+ } else {
+ half_thick = 1.0 * DEF_TILE_THICK / 100.0;
+ if (numsquares == 0) { /* No value defined by user */
+ numsquares = board_x_size * board_y_size * DEF_TILE_RATIO/ 100;;
+ }
+ }
+ if (board_avg_size < 2) {
+ fprintf (stderr,"%s: the board must be at least 2x2.\n", progname);
+ exit(1);
+ }
+ if ((board_x_size < 1) || (board_y_size < 1) || (numsquares < 1)) {
+ fprintf (stderr,"%s: the number of elements ('-count') and the dimensions of the board ('-size-x', '-size-y') must be positive integers.\n", progname);
+ exit(1);
+ }
+ if (board_x_size * board_y_size <= numsquares) {
+ fprintf (stderr,"%s: the number of elements ('-count') that you specified is too big \n for the dimensions of the board ('-size-x', '-size-y'). Nothing will move.\n", progname);
+ }
+
+ screen = MI_SCREEN(mi);
+ wire = MI_IS_WIREFRAME(mi);
+
+ MI_INIT(mi, qs);
+
+ c = &qs[screen];
+ c->window = MI_WINDOW(mi);
+ c->trackball = gltrackball_init (False);
+
+ c->flipspeed = 0.03;
+ c->reldist = 1;
+ c->energy = 40;
+
+ if((c->glx_context = init_GL(mi)))
+ reshape_flipflop(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ else
+ MI_CLEARWINDOW(mi);
+
+ /* At this point, all the constants have already been set, */
+ /* so we can create the board */
+ c->sheet = (randsheet*) malloc(sizeof(randsheet));
+ randsheet_create( c->sheet );
+
+ clearbits = GL_COLOR_BUFFER_BIT;
+
+ glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+ glEnable(GL_COLOR_MATERIAL);
+ setup_lights();
+
+ glEnable(GL_DEPTH_TEST);
+ clearbits |= GL_DEPTH_BUFFER_BIT;
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+
+ randsheet_initialize( c->sheet );
+ if( textured ){
+ /* check for anisotropic filtering */
+ if(strstr((char *)glGetString(GL_EXTENSIONS),
+ "GL_EXT_texture_filter_anisotropic"))
+ glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &c->anisotropic);
+ else
+ c->anisotropic = 0;
+
+ /* allocate a new texture and get it */
+ glGenTextures(1, &c->texid);
+ get_texture(mi);
+ }
+}
+
+ENTRYPOINT void
+draw_flipflop(ModeInfo *mi)
+{
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if(!c->glx_context || (textured && !c->got_texture))
+ return;
+
+ glXMakeCurrent(disp, w, *(c->glx_context));
+
+ mi->polygon_count = display(mi);
+
+ if(mi->fps_p){
+ do_fps(mi);
+ }
+
+ glFinish();
+ glXSwapBuffers(disp, w);
+
+
+}
+
+ENTRYPOINT void
+free_flipflop(ModeInfo *mi)
+{
+ Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+ if (c->sheet) {
+ randsheet_free(c->sheet);
+ free (c->sheet);
+ }
+}
+
+/*** ADDED RANDSHEET FUNCTIONS ***/
+
+static int
+draw_sheet(float *tex)
+{
+ int polys = 0;
+ glBegin( wire ? GL_LINE_LOOP : GL_QUADS );
+
+ glNormal3f( 0, -1, 0 );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, -half_thick, half_thick );
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, -half_thick, half_thick );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, -half_thick, 1-half_thick);
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, -half_thick, 1-half_thick );
+ polys++;
+
+ if (wire) { glEnd(); glBegin (GL_LINE_LOOP); }
+
+ /* back */
+ glNormal3f( 0, 1, 0 );
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, half_thick, 1-half_thick );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, half_thick, 1-half_thick);
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, half_thick, half_thick );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, half_thick, half_thick );
+ polys++;
+
+ if (wire) { glEnd(); return polys; }
+
+ /* 4 edges!!! weee.... */
+ glNormal3f( 0, 0, -1 );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, half_thick, half_thick );
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, half_thick, half_thick );
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, -half_thick, half_thick );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, -half_thick, half_thick );
+ polys++;
+ glNormal3f( 0, 0, 1 );
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, half_thick, 1-half_thick );
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, -half_thick, 1-half_thick );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, -half_thick, 1-half_thick );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, half_thick, 1-half_thick );
+ polys++;
+ glNormal3f( 1, 0, 0 );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, half_thick, 1-half_thick );
+ glTexCoord2f(tex[2], tex[1]);
+ glVertex3f( 1-half_thick, -half_thick, 1-half_thick );
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, -half_thick, half_thick );
+ glTexCoord2f(tex[2], tex[3]);
+ glVertex3f( 1-half_thick, half_thick, half_thick );
+ polys++;
+ glNormal3f( -1, 0, 0 );
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, half_thick, 1-half_thick );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, half_thick, half_thick );
+ glTexCoord2f(tex[0], tex[3]);
+ glVertex3f( half_thick, -half_thick, half_thick );
+ glTexCoord2f(tex[0], tex[1]);
+ glVertex3f( half_thick, -half_thick, 1-half_thick );
+ polys++;
+ glEnd();
+
+ return polys;
+}
+
+/* Reserve memory for the randsheet */
+static void
+randsheet_create( randsheet *rs )
+{
+ rs -> occupied = (int*) malloc(board_x_size*board_y_size * sizeof(int));
+ rs -> xpos = (int*) malloc(numsquares * sizeof(int));
+ rs -> ypos = (int*) malloc(numsquares * sizeof(int));
+ rs -> direction = (int*) malloc(numsquares * sizeof(int));
+ rs -> angle = (float*) malloc(numsquares * sizeof(float));
+ rs -> color = (float*) malloc(numsquares*3 * sizeof(float));
+ rs -> tex = (float*) malloc(numsquares*4 * sizeof(float));
+}
+
+/* Free reserved memory for the randsheet */
+static void
+randsheet_free( randsheet *rs )
+{
+ free(rs->occupied);
+ free(rs->xpos);
+ free(rs->ypos);
+ free(rs->direction);
+ free(rs->angle);
+ free(rs->color);
+ free(rs->tex);
+}
+
+static void
+randsheet_initialize( randsheet *rs )
+{
+ int i, j, index;
+ index = 0;
+ /* put the moving sheets on the board */
+ for( i = 0; i < board_x_size; i++ )
+ {
+ for( j = 0; j < board_y_size; j++ )
+ {
+ /* initially fill up a corner with the moving squares */
+ if( index < numsquares )
+ {
+ rs->occupied[ i * board_y_size + j ] = index;
+ rs->xpos[ index ] = i;
+ rs->ypos[ index ] = j;
+ /* have the square colors start out as a pattern */
+ rs->color[ index*3 + 0 ] = ((i+j)%3 == 0)||((i+j+1)%3 == 0);
+ rs->color[ index*3 + 1 ] = ((i+j+1)%3 == 0);
+ rs->color[ index*3 + 2 ] = ((i+j+2)%3 == 0);
+ index++;
+ }
+ /* leave everything else empty*/
+ else
+ {
+ rs->occupied[ i * board_y_size + j ] = -1;
+ }
+ }
+ }
+ /* initially everything is at rest */
+ for( i=0; idirection[ i ] = 0;
+ rs->angle[ i ] = 0;
+ }
+}
+
+/* Pick and random square and direction and try to move it. */
+/* May not actually move anything, just attempt a random move. */
+/* Returns true if move was sucessful. */
+/* This could probably be implemented faster in a dequeue */
+/* to avoid trying to move a square which is already moving */
+/* but speed is most likely bottlenecked by rendering anyway... */
+static int
+randsheet_new_move( randsheet* rs )
+{
+ int i, j;
+ int num, dir;
+ /* pick a random square */
+ num = random( ) % numsquares;
+ i = rs->xpos[ num ];
+ j = rs->ypos[ num ];
+ /* pick a random direction */
+ dir = ( random( )% 4 ) + 1;
+
+ if( rs->direction[ num ] == 0 )
+ {
+ switch( dir )
+ {
+ case 1:
+ /* move up in x */
+ if( ( i + 1 ) < board_x_size )
+ {
+ if( rs->occupied[ (i + 1) * board_y_size + j ] == -1 )
+ {
+ rs->direction[ num ] = dir;
+ rs->occupied[ (i + 1) * board_y_size + j ] = num;
+ rs->occupied[ i * board_y_size + j ] = -1;
+ return 1;
+ }
+ }
+ return 0;
+ break;
+ case 2:
+ /* move up in y */
+ if( ( j + 1 ) < board_y_size )
+ {
+ if( rs->occupied[ i * board_y_size + (j + 1) ] == -1 )
+ {
+ rs->direction[ num ] = dir;
+ rs->occupied[ i * board_y_size + (j + 1) ] = num;
+ rs->occupied[ i * board_y_size + j ] = -1;
+ return 1;
+ }
+ }
+ return 0;
+ break;
+ case 3:
+ /* move down in x */
+ if( ( i - 1 ) >= 0 )
+ {
+ if( rs->occupied[ (i - 1) * board_y_size + j ] == -1 )
+ {
+ rs->direction[ num ] = dir;
+ rs->occupied[ (i - 1) * board_y_size + j ] = num;
+ rs->occupied[ i * board_y_size + j ] = -1;
+ return 1;
+ }
+ }
+ return 0;
+ break;
+ case 4:
+ /* move down in y */
+ if( ( j - 1 ) >= 0 )
+ {
+ if( rs->occupied[ i * board_y_size + (j - 1) ] == -1 )
+ {
+ rs->direction[ num ] = dir;
+ rs->occupied[ i * board_y_size + (j - 1) ] = num;
+ rs->occupied[ i * board_y_size + j ] = -1;
+ return 1;
+ }
+ }
+ return 0;
+ break;
+ default:
+ break;
+ }
+ }
+ return 0;
+}
+
+/* move a single frame. */
+/* Pass in the angle in rads the square rotates in a frame. */
+static void
+randsheet_move( randsheet *rs, float rot )
+{
+ int index;
+ float tmp;
+ for( index = 0 ; index < numsquares; index++ )
+ {
+ switch( rs->direction[ index ] )
+ {
+ case 0:
+ /* not moving */
+ break;
+ case 1:
+ /* move up in x */
+ if( textured && rs->angle[ index ] == 0 )
+ {
+ tmp = rs->tex[ index * 4 + 0 ];
+ rs->tex[ index * 4 + 0 ] = rs->tex[ index * 4 + 2 ];
+ rs->tex[ index * 4 + 2 ] = tmp;
+ }
+ rs->angle[ index ] += rot;
+ /* check to see if we have finished moving */
+ if( rs->angle[ index ] >= M_PI )
+ {
+ rs->xpos[ index ] += 1;
+ rs->direction[ index ] = 0;
+ rs->angle[ index ] = 0;
+ }
+ break;
+ case 2:
+ /* move up in y */
+ if( textured && rs->angle[ index ] == 0 )
+ {
+ tmp = rs->tex[ index * 4 + 1 ];
+ rs->tex[ index * 4 + 1 ] = rs->tex[ index * 4 + 3 ];
+ rs->tex[ index * 4 + 3 ] = tmp;
+ }
+ rs->angle[ index ] += rot;
+ /* check to see if we have finished moving */
+ if( rs->angle[ index ] >= M_PI )
+ {
+ rs->ypos[ index ] += 1;
+ rs->direction[ index ] = 0;
+ rs->angle[ index ] = 0;
+ }
+ break;
+ case 3:
+ /* down in x */
+ rs->angle[ index ] += rot;
+ /* check to see if we have finished moving */
+ if( rs->angle[ index ] >= M_PI )
+ {
+ rs->xpos[ index ] -= 1;
+ rs->direction[ index ] = 0;
+ rs->angle[ index ] = 0;
+ if( textured )
+ {
+ tmp = rs->tex[ index * 4 + 0 ];
+ rs->tex[ index * 4 + 0 ] = rs->tex[ index * 4 + 2 ];
+ rs->tex[ index * 4 + 2 ] = tmp;
+ }
+ }
+ break;
+ case 4:
+ /* down in y */
+ rs->angle[ index ] += rot;
+ /* check to see if we have finished moving */
+ if( rs->angle[ index ] >= M_PI )
+ {
+ rs->ypos[ index ] -= 1;
+ rs->direction[ index ] = 0;
+ rs->angle[ index ] = 0;
+ if( textured )
+ {
+ tmp = rs->tex[ index * 4 + 1 ];
+ rs->tex[ index * 4 + 1 ] = rs->tex[ index * 4 + 3 ];
+ rs->tex[ index * 4 + 3 ] = tmp;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+
+/* draw all the moving squares */
+static int
+randsheet_draw( randsheet *rs )
+{
+ int i, j, polys = 0;
+ int index;
+
+ /* for all moving squares ... */
+ for( index = 0; index < numsquares; index++ )
+ {
+ /* set color */
+ glColor3f( rs->color[ index*3 + 0 ],
+ rs->color[ index*3 + 1 ],
+ rs->color[ index*3 + 2 ] );
+ /* find x and y position */
+ i = rs->xpos[ index ];
+ j = rs->ypos[ index ];
+ glPushMatrix();
+ switch( rs->direction[ index ] )
+ {
+ case 0:
+
+ /* not moving */
+ /* front */
+ glTranslatef( i, 0, j );
+ break;
+ case 1:
+ glTranslatef( i+1, 0, j );
+ glRotatef( 180 - rs->angle[ index ]*180/M_PI, 0, 0, 1 );
+
+ break;
+ case 2:
+ glTranslatef( i, 0, j+1 );
+ glRotatef( 180 - rs->angle[ index ]*180/M_PI, -1, 0, 0 );
+
+ break;
+ case 3:
+ glTranslatef( i, 0, j );
+ glRotatef( rs->angle[ index ]*180/M_PI, 0, 0, 1 );
+ break;
+ case 4:
+ glTranslatef( i, 0, j );
+ glRotatef( rs->angle[ index ]*180/M_PI, -1, 0, 0 );
+ break;
+ default:
+ break;
+ }
+ polys += draw_sheet( rs->tex + index*4 );
+ glPopMatrix();
+
+ }
+ return polys;
+}
+
+/**** END RANDSHEET_BAK FUNCTIONS ***/
+
+XSCREENSAVER_MODULE ("FlipFlop", flipflop)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/flipflop.man b/hacks/glx/flipflop.man
new file mode 100644
index 0000000..17691bc
--- /dev/null
+++ b/hacks/glx/flipflop.man
@@ -0,0 +1,95 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+flipflop - draws a grid of 3D squares that change positions
+.SH SYNOPSIS
+.B flipflop
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-count \fInumber\fP | \-free \fInumber\fP]
+[\-size \fInumber\fP]
+[\-size-x \fInumber\fP]
+[\-size-y \fInumber\fP]
+[\-spin \fInumber\fP]
+[\-mode sticks | tiles]
+[\-delay \fInumber\fP]
+[\-wireframe]
+[\-fps]
+[\-texture]
+.SH DESCRIPTION
+Flipflop draws a grid of 3D colored tiles that change positions with
+each other.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-count \fInumber\fP
+Number of tiles on the board. A value of "0" means "default". The
+default number of tiles depends on the size of the board and the mode:
+95% of total tiles for "tiles" mode and 80% of total sticks for
+"sticks" mode (e.g. 76 tiles or 64 sticks for a 9x9 board).
+.TP 8
+.B \-free \fInumber\fP
+Number of tiles missing from the board. See -count.
+.TP 8
+.B \-size \fInumber\fP
+Number of tiles on each side of the board. Takes precedence over
+-size-x and -size-y. Default: 9.
+.TP 8
+.B \-size-x \fInumber\fP
+Width (in tiles) of the board. Default: 9.
+.TP 8
+.B \-size-y \fInumber\fP
+Length (in tiles) of the board. Default: 9.
+.TP 8
+.B \-spin \fInumber\fP
+Angular velocity for the rotation of the board.
+.TP 8
+.B \-mode sticks
+Draw hopping sticks instead of flipping tiles.
+.TP 8
+.B \-mode tiles
+Draw flipping tiles. This is the default.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-fps | \-no\-fps
+Display the current frame rate, CPU load, and polygon count.
+.TP 8
+.B \-wireframe
+Only draw outlines.
+.TP 8
+.B \-texture | \-no\-texture
+Whether to texture the tiles with a screen grab or an image.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2003 by Kevin Ogden. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Kevin Ogden . Some additional code by Sergio
+Gutierrez .
diff --git a/hacks/glx/flipscreen3d.c b/hacks/glx/flipscreen3d.c
new file mode 100644
index 0000000..e4db5df
--- /dev/null
+++ b/hacks/glx/flipscreen3d.c
@@ -0,0 +1,518 @@
+/*
+ * flipscreen3d - takes snapshots of the screen and flips it around
+ *
+ * version 1.0 - Oct 24, 2001
+ *
+ * Copyright (C) 2001 Ben Buxton (bb@cactii.net)
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef STANDALONE
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*useSHM: True \n" \
+ "*suppressRotationAnimation: True\n" \
+
+# define free_screenflip 0
+# define release_screenflip 0
+# include "xlockmore.h" /* from the xscreensaver distribution */
+# include "gltrackball.h"
+#else /* !STANDALONE */
+# include "xlock.h" /* from the xlockmore distribution */
+#endif /* !STANDALONE */
+
+/* lifted from lament.c */
+#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+
+#ifdef USE_GL
+
+/* Should be in */
+# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+# endif
+# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+# endif
+
+#define DEF_ROTATE "True"
+static int rotate;
+
+#define QW 12
+#define QH 12
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+
+static XrmOptionDescRec opts[] = {
+ {"+rotate", ".screenflip.rotate", XrmoptionNoArg, "false" },
+ {"-rotate", ".screenflip.rotate", XrmoptionNoArg, "true" },
+};
+
+
+static argtype vars[] = {
+ {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool},
+};
+
+
+
+ENTRYPOINT ModeSpecOpt screenflip_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+#ifdef USE_MODULES
+ModStruct screenflip_description =
+{"screenflip", "init_screenflip", "draw_screenflip", NULL,
+ "draw_screenflip", "init_screenflip", NULL, &screenflip_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Screenflips", 0, NULL};
+
+#endif
+
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+
+ int winw, winh;
+ int tw, th; /* texture width, height */
+ GLfloat min_tx, min_ty;
+ GLfloat max_tx, max_ty;
+ GLfloat qx, qy, qw, qh; /* the quad we'll draw */
+
+ int regrab;
+ int fadetime; /* fade before regrab */
+
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ GLfloat show_colors[4];
+ GLfloat stretch_val_x, stretch_val_y;
+ GLfloat stretch_val_dx, stretch_val_dy;
+
+ GLfloat curx, cury, curz;
+
+ GLfloat rx, ry, rz;
+ GLfloat rot, drot, odrot, ddrot, orot;
+ float theta, rho, dtheta, drho, gamma, dgamma;
+
+ GLuint texid;
+ Bool mipmap_p;
+ Bool waiting_for_image_p;
+ Bool first_image_p;
+
+ GLfloat anisotropic;
+
+} Screenflip;
+
+static Screenflip *screenflip = NULL;
+
+#include "grab-ximage.h"
+
+static const GLfloat viewer[] = {0.0, 0.0, 15.0};
+
+
+static void getSnapshot (ModeInfo *);
+
+
+ENTRYPOINT Bool
+screenflip_handle_event (ModeInfo *mi, XEvent *event)
+{
+ Screenflip *c = &screenflip[MI_SCREEN(mi)];
+
+ if (gltrackball_event_handler (event, c->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &c->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ if (!c->waiting_for_image_p)
+ {
+ getSnapshot (mi);
+ return True;
+ }
+ }
+
+ return False;
+}
+
+
+/* draw the texture mapped quad (actually two back to back)*/
+static void showscreen(Screenflip *c, int frozen, int wire)
+{
+ GLfloat x, y, w, h;
+
+ if (c->fadetime) {
+/* r -= 0.02; g -= 0.02; b -= 0.02; */
+ c->show_colors[3] -= 0.02;
+ if (c->show_colors[3] < 0) {
+ c->regrab = 1;
+ c->fadetime = 0;
+ }
+ } else if (c->show_colors[3] < 0) {
+ c->show_colors[0] = c->show_colors[1] =
+ c->show_colors[2] = c->show_colors[3] = 1;
+ c->stretch_val_x = c->stretch_val_y =
+ c->stretch_val_dx = c->stretch_val_dy = 0;
+ }
+ if (c->stretch_val_dx == 0 && !frozen && !(random() % 25))
+ c->stretch_val_dx = (float)(random() % 100) / 5000;
+ if (c->stretch_val_dy == 0 && !frozen && !(random() % 25))
+ c->stretch_val_dy = (float)(random() % 100) / 5000;
+
+ x = c->qx;
+ y = c->qy;
+ w = c->qx+c->qw;
+ h = c->qy-c->qh;
+
+ if (!frozen) {
+ w *= sin (c->stretch_val_x) + 1;
+ x *= sin (c->stretch_val_x) + 1;
+ if (!c->button_down_p) {
+ if (!c->fadetime) c->stretch_val_x += c->stretch_val_dx;
+ if (c->stretch_val_x > 2*M_PI && !(random() % 5))
+ c->stretch_val_dx = (float)(random() % 100) / 5000;
+ else
+ c->stretch_val_x -= 2*M_PI;
+ }
+
+ if (!c->button_down_p && !c->fadetime) c->stretch_val_y += c->stretch_val_dy;
+ h *= sin (c->stretch_val_y) / 2 + 1;
+ y *= sin (c->stretch_val_y) / 2 + 1;
+ if (!c->button_down_p) {
+ if (c->stretch_val_y > 2*M_PI && !(random() % 5))
+ c->stretch_val_dy = (float)(random() % 100) / 5000;
+ else
+ c->stretch_val_y -= 2*M_PI;
+ }
+ }
+
+ glColor4f(c->show_colors[0], c->show_colors[1],
+ c->show_colors[2], c->show_colors[3]);
+
+ if (!wire)
+ {
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glDepthMask(GL_FALSE);
+ }
+
+ glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
+
+ glNormal3f(0, 0, 1);
+ glTexCoord2f(c->max_tx, c->max_ty); glVertex3f(w, h, 0);
+ glTexCoord2f(c->max_tx, c->min_ty); glVertex3f(w, y, 0);
+ glTexCoord2f(c->min_tx, c->min_ty); glVertex3f(x, y, 0);
+ glTexCoord2f(c->min_tx, c->max_ty); glVertex3f(x, h, 0);
+
+ glNormal3f(0, 0, -1);
+ glTexCoord2f(c->min_tx, c->min_ty); glVertex3f(x, y, -0.05);
+ glTexCoord2f(c->max_tx, c->min_ty); glVertex3f(w, y, -0.05);
+ glTexCoord2f(c->max_tx, c->max_ty); glVertex3f(w, h, -0.05);
+ glTexCoord2f(c->min_tx, c->max_ty); glVertex3f(x, h, -0.05);
+ glEnd();
+
+
+ glDisable(GL_TEXTURE_2D);
+ glDepthMask(GL_TRUE);
+
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(x, y, 0);
+ glVertex3f(x, h, 0);
+ glVertex3f(w, h, 0);
+ glVertex3f(w, y, 0);
+ glEnd();
+ glDisable(GL_BLEND);
+
+}
+
+/* This function is responsible for 'zooming back' the square after
+ * a new chunk has been grabbed with getSnapshot(), and positioning
+ * it suitably on the screen. Once positioned (where we begin to rotate),
+ * it just does a glTranslatef() and returns 1
+ */
+
+static int inposition(Screenflip *c)
+{
+ GLfloat wx;
+ GLfloat wy;
+ wx = 0 - (c->qw/2);
+ wy = (c->qh/2);
+
+ if (c->curx == 0) c->curx = c->qx;
+ if (c->cury == 0) c->cury = c->qy;
+ if (c->regrab) {
+ c->curz = 0;
+ c->curx = c->qx;
+ c->cury = c->qy;
+ c->regrab = 0;
+ }
+ if (c->curz > -10 || c->curx > wx + 0.1 || c->curx < wx - 0.1 ||
+ c->cury > wy + 0.1 || c->cury < wy - 0.1) {
+ if (c->curz > -10)
+ c->curz -= 0.05;
+ if (c->curx > wx) {
+ c->qx -= 0.02;
+ c->curx -= 0.02;
+ }
+ if (c->curx < wx) {
+ c->qx += 0.02;
+ c->curx += 0.02;
+ }
+ if (c->cury > wy) {
+ c->qy -= 0.02;
+ c->cury -= 0.02;
+ }
+ if (c->cury < wy) {
+ c->qy += 0.02;
+ c->cury += 0.02;
+ }
+ glTranslatef(0, 0, c->curz);
+ return 0;
+ }
+ glTranslatef(0, 0, c->curz);
+ return 1;
+
+}
+
+#if 0
+static void drawgrid(void)
+{
+ int i;
+
+ glColor3f(0, 0.7, 0);
+ glBegin(GL_LINES);
+ for (i = 0 ; i <= 50; i+=2) {
+ glVertex3f( -25, -15, i-70);
+ glVertex3f( 25, -15, i-70);
+ glVertex3f( i-25, -15, -70);
+ glVertex3f( i-25, -15, -20);
+ }
+ glEnd();
+}
+#endif
+
+
+static void display(Screenflip *c, int wire)
+{
+ int frozen;
+ GLfloat rot = current_device_rotation();
+
+ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+ gluLookAt(viewer[0], viewer[1], viewer[2], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
+ glPushMatrix();
+
+/*
+ glRotatef(rot, 0, 0, 1);
+ if ((rot > 45 && rot < 135) ||
+ (rot < -45 && rot > -135))
+ {
+ GLfloat s = c->winw / (GLfloat) c->winh;
+ glScalef (s, 1/s, 1);
+ }
+*/
+
+ if (inposition(c)) {
+ frozen = 0;
+ glTranslatef(5 * sin(c->theta), 5 * sin(c->rho), 10 * cos(c->gamma) - 10);
+/* randomly change the speed */
+ if (!c->button_down_p && !(random() % 300)) {
+ if (random() % 2)
+ c->drho = 1/60 - (float)(random() % 100)/3000;
+ if (random() % 2)
+ c->dtheta = 1/60 - (float)(random() % 100)/3000;
+ if (random() % 2)
+ c->dgamma = 1/60 - (float)(random() % 100)/3000;
+ }
+ glRotatef(rot, 0, 0, 1);
+ gltrackball_rotate (c->trackball);
+ glRotatef(-rot, 0, 0, 1);
+ if (rotate) glRotatef(c->rot, c->rx, c->ry, c->rz);
+/* update variables with each frame */
+ if(!c->button_down_p && !c->fadetime) {
+ c->theta += c->dtheta;
+ c->rho += c->drho;
+ c->gamma += c->dgamma;
+ c->rot += c->drot;
+ c->drot += c->ddrot;
+ }
+/* dont let our rotation speed get too high */
+ if (c->drot > 5 && c->ddrot > 0)
+ c->ddrot = 0 - (GLfloat)(random() % 100) / 1000;
+ else if (c->drot < -5 && c->ddrot < 0)
+ c->ddrot = (GLfloat)(random() % 100) / 1000;
+ } else { /* reset some paramaters */
+ c->ddrot = 0.05 - (GLfloat)(random() % 100) / 1000;
+ c->theta = c->rho = c->gamma = 0;
+ c->rot = 0;
+ frozen = 1;
+ }
+ if (!c->button_down_p && !c->fadetime && (c->rot >= 360 || c->rot <= -360) && !(random() % 7)) { /* rotate change */
+ c->rx = (GLfloat)(random() % 100) / 100;
+ c->ry = (GLfloat)(random() % 100) / 100;
+ c->rz = (GLfloat)(random() % 100) / 100;
+ }
+ if (c->odrot * c->drot < 0 && c->tw < c->winw && !(random() % 10)) {
+ c->fadetime = 1; /* randomly fade and get new snapshot */
+ }
+ c->orot = c->rot;
+ c->odrot = c->drot;
+ if (c->rot > 360 || c->rot < -360) /* dont overflow rotation! */
+ c->rot -= c->rot;
+ showscreen(c, frozen, wire);
+ glPopMatrix();
+ glFlush();
+}
+
+ENTRYPOINT void reshape_screenflip(ModeInfo *mi, int width, int height)
+{
+ Screenflip *c = &screenflip[MI_SCREEN(mi)];
+ glViewport(0,0,(GLint)width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1, 2.0, 85);
+ glMatrixMode(GL_MODELVIEW);
+ c->winw = width;
+ c->winh = height;
+}
+
+static void
+image_loaded_cb (const char *filename, XRectangle *geometry,
+ int image_width, int image_height,
+ int texture_width, int texture_height,
+ void *closure)
+{
+ Screenflip *c = (Screenflip *) closure;
+
+ c->tw = texture_width;
+ c->th = texture_height;
+ c->min_tx = (GLfloat) geometry->x / c->tw;
+ c->min_ty = (GLfloat) geometry->y / c->th;
+ c->max_tx = (GLfloat) (geometry->x + geometry->width) / c->tw;
+ c->max_ty = (GLfloat) (geometry->y + geometry->height) / c->th;
+
+ c->qx = -QW/2 + ((GLfloat) geometry->x * QW / image_width);
+ c->qy = QH/2 - ((GLfloat) geometry->y * QH / image_height);
+ c->qw = QW * ((GLfloat) geometry->width / image_width);
+ c->qh = QH * ((GLfloat) geometry->height / image_height);
+
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+ (c->mipmap_p ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR));
+
+ if (c->anisotropic >= 1.0)
+ glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT,
+ c->anisotropic);
+
+ c->waiting_for_image_p = False;
+ c->first_image_p = False;
+}
+
+
+static void getSnapshot (ModeInfo *modeinfo)
+{
+ Screenflip *c = &screenflip[MI_SCREEN(modeinfo)];
+
+ if (MI_IS_WIREFRAME(modeinfo))
+ return;
+
+ c->waiting_for_image_p = True;
+ c->mipmap_p = True;
+ load_texture_async (modeinfo->xgwa.screen, modeinfo->window,
+ *c->glx_context, 0, 0, c->mipmap_p, c->texid,
+ image_loaded_cb, c);
+}
+
+ENTRYPOINT void init_screenflip(ModeInfo *mi)
+{
+ int screen = MI_SCREEN(mi);
+ Screenflip *c;
+
+ MI_INIT(mi, screenflip);
+ c = &screenflip[screen];
+ c->window = MI_WINDOW(mi);
+
+ c->trackball = gltrackball_init (False);
+
+ if ((c->glx_context = init_GL(mi)) != NULL) {
+ reshape_screenflip(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ } else {
+ MI_CLEARWINDOW(mi);
+ }
+ c->winh = MI_WIN_HEIGHT(mi);
+ c->winw = MI_WIN_WIDTH(mi);
+ c->qw = QW;
+ c->qh = QH;
+ c->qx = -6;
+ c->qy = 6;
+
+ c->rx = c->ry = 1;
+ c->odrot = 1;
+
+ c->show_colors[0] = c->show_colors[1] =
+ c->show_colors[2] = c->show_colors[3] = 1;
+
+ if (! MI_IS_WIREFRAME(mi))
+ {
+ glShadeModel(GL_SMOOTH);
+ glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+ glDisable(GL_LIGHTING);
+ }
+
+ if (strstr ((char *) glGetString(GL_EXTENSIONS),
+ "GL_EXT_texture_filter_anisotropic"))
+ glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &c->anisotropic);
+ else
+ c->anisotropic = 0.0;
+
+ glGenTextures(1, &c->texid);
+
+ c->first_image_p = True;
+ getSnapshot(mi);
+}
+
+ENTRYPOINT void draw_screenflip(ModeInfo *mi)
+{
+ Screenflip *c = &screenflip[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if (!c->glx_context)
+ return;
+
+ /* Wait for the first image; for subsequent images, load them in the
+ background while animating. */
+ if (c->waiting_for_image_p && c->first_image_p)
+ return;
+
+ glXMakeCurrent(disp, w, *(c->glx_context));
+
+ glBindTexture(GL_TEXTURE_2D, c->texid);
+
+ if (c->regrab)
+ getSnapshot(mi);
+
+ display(c, MI_IS_WIREFRAME(mi));
+
+ if(mi->fps_p) do_fps(mi);
+ glFinish();
+ glXSwapBuffers(disp, w);
+}
+
+XSCREENSAVER_MODULE_2 ("FlipScreen3D", flipscreen3d, screenflip)
+
+#endif
diff --git a/hacks/glx/flipscreen3d.man b/hacks/glx/flipscreen3d.man
new file mode 100644
index 0000000..fecd005
--- /dev/null
+++ b/hacks/glx/flipscreen3d.man
@@ -0,0 +1,61 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+flipscreen3d - rotates an image of the screen through 3 dimensions.
+.SH SYNOPSIS
+.B flipscreen3d
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-no-rotate]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+Grabs an image of the desktop, turns it into a GL texture map, and spins it
+around and deforms it in various ways.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-rotate | \-no-rotate
+Whether to rotate.
+.TP 8
+.B \-wireframe
+Just render boxes instead of textures (for debugging).
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Ben Buxton. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Ben Buxton.
diff --git a/hacks/glx/fliptext.c b/hacks/glx/fliptext.c
new file mode 100644
index 0000000..c233e8b
--- /dev/null
+++ b/hacks/glx/fliptext.c
@@ -0,0 +1,1001 @@
+/*
+ * fliptext, Copyright (c) 2005-2015 Jamie Zawinski
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#define DEF_FONT "-*-utopia-bold-r-normal-*-*-720-*-*-*-*-*-*"
+#define DEF_COLOR "#00CCFF"
+
+#define DEFAULTS "*delay: 10000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*usePty: False \n" \
+ "*texFontCacheSize: 60 \n" \
+ "*font: " DEF_FONT "\n" \
+ ".foreground: " DEF_COLOR "\n" \
+ "*program: xscreensaver-text --cols 0" /* don't wrap */
+
+# define release_fliptext 0
+# define fliptext_handle_event xlockmore_no_events
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+
+#include "xlockmore.h"
+#include "texfont.h"
+#include "textclient.h"
+
+#ifdef USE_GL /* whole file */
+
+/* Should be in */
+# ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+# endif
+# ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
+# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+# endif
+
+
+#define DEF_LINES "8"
+#define DEF_FONT_SIZE "20"
+#define DEF_COLUMNS "80"
+#define DEF_ALIGNMENT "random"
+#define DEF_SPEED "1.0"
+#define TAB_WIDTH 8
+
+#define FONT_WEIGHT 14
+#define KEEP_ASPECT
+
+typedef enum { NEW, HESITATE, IN, LINGER, OUT, DEAD } line_state;
+typedef enum { SCROLL_BOTTOM, SCROLL_TOP, SPIN } line_anim_type;
+
+typedef struct { GLfloat x, y, z; } XYZ;
+
+typedef struct {
+ char *text;
+ GLfloat width, height; /* size */
+ XYZ from, to, current; /* start, end, and current position */
+ GLfloat fth, tth, cth; /* rotation around Z */
+
+ int cluster_size; /* how many lines in this cluster */
+ int cluster_pos; /* position of this line in the cluster */
+
+ line_state state; /* current motion model */
+ int step, steps; /* progress along this path */
+ GLfloat color[4];
+
+} line;
+
+
+typedef struct {
+ Display *dpy;
+ GLXContext *glx_context;
+
+ texture_font_data *texfont;
+ text_data *tc;
+
+ int alignment;
+
+ char *buf;
+ int buf_size;
+ int buf_tail;
+
+ int char_width; /* in font units */
+ int line_height; /* in font units */
+ double font_scale; /* convert font units to display units */
+
+ int font_wrap_pixels; /* in font units (for wrapping text) */
+
+ int top_margin, bottom_margin;
+ int left_margin, right_margin;
+
+ int nlines;
+ int lines_size;
+ line **lines;
+
+ line_anim_type anim_type;
+ XYZ in, mid, out;
+ XYZ rotation;
+ GLfloat color[4];
+
+} fliptext_configuration;
+
+
+static fliptext_configuration *scs = NULL;
+
+static int max_lines, min_lines;
+static float font_size;
+static int target_columns;
+static char *alignment_str;
+static int alignment_random_p;
+static GLfloat speed;
+
+static XrmOptionDescRec opts[] = {
+ {"-lines", ".lines", XrmoptionSepArg, 0 },
+ {"-size", ".fontSize", XrmoptionSepArg, 0 },
+ {"-columns", ".columns", XrmoptionSepArg, 0 },
+ {"-speed", ".speed", XrmoptionSepArg, 0 },
+/*{"-font", ".font", XrmoptionSepArg, 0 },*/
+ {"-alignment", ".alignment", XrmoptionSepArg, 0 },
+ {"-left", ".alignment", XrmoptionNoArg, "Left" },
+ {"-right", ".alignment", XrmoptionNoArg, "Right" },
+ {"-center", ".alignment", XrmoptionNoArg, "Center" },
+};
+
+static argtype vars[] = {
+ {&max_lines, "lines", "Integer", DEF_LINES, t_Int},
+ {&font_size, "fontSize", "Float", DEF_FONT_SIZE, t_Float},
+ {&target_columns, "columns", "Integer", DEF_COLUMNS, t_Int},
+ {&alignment_str, "alignment", "Alignment", DEF_ALIGNMENT, t_String},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt fliptext_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+
+/* Tabs are bad, mmmkay? */
+
+static char *
+untabify (const char *string)
+{
+ const char *ostring = string;
+ char *result = (char *) malloc ((strlen(string) * 8) + 1);
+ char *out = result;
+ int col = 0;
+ while (*string)
+ {
+ if (*string == '\t')
+ {
+ do {
+ col++;
+ *out++ = ' ';
+ } while (col % TAB_WIDTH);
+ string++;
+ }
+ else if (*string == '\r' || *string == '\n')
+ {
+ *out++ = *string++;
+ col = 0;
+ }
+ else if (*string == '\010') /* backspace */
+ {
+ if (string > ostring)
+ out--, string++;
+ }
+ else
+ {
+ *out++ = *string++;
+ col++;
+ }
+ }
+ *out = 0;
+
+ return result;
+}
+
+static void
+strip (char *s, Bool leading, Bool trailing)
+{
+ int L = strlen(s);
+ if (trailing)
+ while (L > 0 && (s[L-1] == ' ' || s[L-1] == '\t'))
+ s[L--] = 0;
+ if (leading)
+ {
+ char *s2 = s;
+ while (*s2 == ' ' || *s2 == '\t')
+ s2++;
+ if (s == s2)
+ return;
+ while (*s2)
+ *s++ = *s2++;
+ *s = 0;
+ }
+}
+
+
+static int
+char_width (fliptext_configuration *sc, char c)
+{
+ XCharStruct e;
+ char s[2];
+ s[0] = c;
+ s[1] = 0;
+ texture_string_metrics (sc->texfont, s, &e, 0, 0);
+ return e.width;
+}
+
+
+/* Returns a single line of text from the output buffer of the subprocess,
+ taking into account wrapping, centering, etc. Returns 0 if no complete
+ line is currently available.
+ */
+static char *
+get_one_line (fliptext_configuration *sc)
+{
+ char *result = 0;
+ int wrap_pix = sc->font_wrap_pixels;
+ int col = 0;
+ int col_pix = 0;
+ char *s = sc->buf;
+ int target = sc->buf_size - sc->buf_tail - 2;
+
+ /* Fill as much as we can into sc->buf, but stop at newline.
+ */
+ while (target > 0)
+ {
+ int c = textclient_getc (sc->tc);
+ if (c <= 0)
+ break;
+ sc->buf[sc->buf_tail++] = (char) c;
+ sc->buf[sc->buf_tail] = 0;
+ target--;
+ if (c == '\r' || c == '\n')
+ break;
+ }
+
+ while (!result)
+ {
+ int cw;
+
+ if (s >= sc->buf + sc->buf_tail)
+ /* Reached end of buffer before end of line. Bail. */
+ return 0;
+
+ cw = char_width (sc, *s);
+
+ if (*s == '\r' || *s == '\n' ||
+ col_pix + cw >= wrap_pix)
+ {
+ int L = s - sc->buf;
+
+ if (*s == '\r' || *s == '\n')
+ {
+ if (*s == '\r' && s[1] == '\n') /* swallow CRLF too */
+ *s++ = 0;
+
+ *s++ = 0;
+ }
+ else
+ {
+ /* We wrapped -- try to back up to the previous word boundary. */
+ char *s2 = s;
+ int n = 0;
+ while (s2 > sc->buf && *s2 != ' ' && *s2 != '\t')
+ s2--, n++;
+ if (s2 > sc->buf)
+ {
+ s = s2;
+ *s++ = 0;
+ L = s - sc->buf;
+ }
+ }
+
+ if (result) abort();
+ result = (char *) malloc (L+1);
+ memcpy (result, sc->buf, L);
+ result[L] = 0;
+
+ {
+ char *t = result;
+ char *ut = untabify (t);
+ strip (ut, (sc->alignment == 0), 1); /* if centering, strip
+ leading whitespace too */
+ result = ut;
+ free (t);
+ }
+
+ if (sc->buf_tail > (s - sc->buf))
+ {
+ int i = sc->buf_tail - (s - sc->buf);
+ memmove (sc->buf, s, i);
+ sc->buf_tail = i;
+ sc->buf[sc->buf_tail] = 0;
+ }
+ else
+ {
+ sc->buf_tail = 0;
+ }
+
+ sc->buf[sc->buf_tail] = 0;
+ s = sc->buf;
+ col = 0;
+ col_pix = 0;
+ }
+ else
+ {
+ col++;
+ col_pix += cw;
+ if (*s == '\t')
+ {
+ int tab_pix = TAB_WIDTH * sc->char_width;
+ col = TAB_WIDTH * ((col / TAB_WIDTH) + 1);
+ col_pix = tab_pix * ((col / tab_pix) + 1);
+ }
+ s++;
+ }
+ }
+
+ return result;
+}
+
+
+static Bool
+blank_p (const char *s)
+{
+ for (; *s; s++)
+ if (*s != ' ' && *s != '\t' && *s != '\r' && *s != '\n')
+ return False;
+ return True;
+}
+
+/* Reads some text from the subprocess, and creates and returns a `line'
+ object. Adds that object to the lines list. Returns 0 if no text
+ available yet.
+
+ If skip_blanks_p, then keep trying for new lines of text until we
+ get one that is not empty.
+ */
+static line *
+make_line (fliptext_configuration *sc, Bool skip_blanks_p)
+{
+ XCharStruct e;
+ line *ln;
+ char *s;
+
+ AGAIN:
+ s = get_one_line (sc);
+ if (s && skip_blanks_p && blank_p (s))
+ {
+ free (s);
+ goto AGAIN;
+ }
+
+ if (!s) return 0;
+
+ ln = (line *) calloc (1, sizeof(*ln));
+ ln->text = s;
+ ln->state = NEW;
+ texture_string_metrics (sc->texfont, s, &e, 0, 0);
+ ln->width = sc->font_scale * e.width;
+ ln->height = sc->font_scale * sc->line_height;
+
+ memcpy (ln->color, sc->color, sizeof(ln->color));
+
+ sc->nlines++;
+ if (sc->lines_size <= sc->nlines)
+ {
+ sc->lines_size = (sc->lines_size * 1.2) + sc->nlines;
+ sc->lines = (line **)
+ realloc (sc->lines, sc->lines_size * sizeof(*sc->lines));
+ if (! sc->lines)
+ {
+ fprintf (stderr, "%s: out of memory (%d lines)\n",
+ progname, sc->lines_size);
+ exit (1);
+ }
+ }
+
+ sc->lines[sc->nlines-1] = ln;
+ return ln;
+}
+
+
+/* frees the object and removes it from the list.
+ */
+static void
+free_line (fliptext_configuration *sc, line *line)
+{
+ int i;
+ for (i = 0; i < sc->nlines; i++)
+ if (sc->lines[i] == line)
+ break;
+ if (i == sc->nlines) abort();
+ for (; i < sc->nlines-1; i++)
+ sc->lines[i] = sc->lines[i+1];
+ sc->lines[i] = 0;
+ sc->nlines--;
+
+ free (line->text);
+ free (line);
+}
+
+
+static void
+draw_line (ModeInfo *mi, line *line)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+
+ if (! line->text || !*line->text ||
+ line->state == NEW || line->state == HESITATE || line->state == DEAD)
+ return;
+
+ glPushMatrix();
+ glTranslatef (line->current.x, line->current.y, line->current.z);
+
+ glRotatef (line->cth, 0, 1, 0);
+
+ if (sc->alignment == 1)
+ glTranslatef (-line->width, 0, 0);
+ else if (sc->alignment == 0)
+ glTranslatef (-line->width/2, 0, 0);
+
+ glScalef (sc->font_scale, sc->font_scale, sc->font_scale);
+
+ glColor4f (line->color[0], line->color[1], line->color[2], line->color[3]);
+
+ if (!wire)
+ print_texture_string (sc->texfont, line->text);
+ else
+ {
+ int w, h;
+ char *s = line->text;
+ char c[2];
+ c[1]=0;
+ glDisable (GL_TEXTURE_2D);
+ glColor3f (0.4, 0.4, 0.4);
+ while (*s)
+ {
+ XCharStruct e;
+ *c = *s++;
+ texture_string_metrics (sc->texfont, c, &e, 0, 0);
+ w = e.width;
+ h = e.ascent + e.descent;
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (w, 0, 0);
+ glVertex3f (w, h, 0);
+ glVertex3f (0, h, 0);
+ glEnd();
+ glTranslatef (w, 0, 0);
+ }
+ }
+
+#if 0
+ glDisable (GL_TEXTURE_2D);
+ glColor3f (0.4, 0.4, 0.4);
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (0, 0, 0);
+ glVertex3f (line->width/sc->font_scale, 0, 0);
+ glVertex3f (line->width/sc->font_scale, line->height/sc->font_scale, 0);
+ glVertex3f (0, line->height/sc->font_scale, 0);
+ glEnd();
+ if (!wire) glEnable (GL_TEXTURE_2D);
+#endif
+
+ glPopMatrix();
+
+ mi->polygon_count += strlen (line->text);
+}
+
+static void
+tick_line (fliptext_configuration *sc, line *line)
+{
+ int stagger = 30; /* frames of delay between line spin-outs */
+ int slide = 600; /* frames in a slide in/out */
+ int linger = 0; /* frames to pause with no motion */
+ double i, ii;
+
+ if (line->state >= DEAD) abort();
+ if (++line->step >= line->steps)
+ {
+ line->state++;
+ line->step = 0;
+
+ if (linger == 0 && line->state == LINGER)
+ line->state++;
+
+ if (sc->anim_type != SPIN)
+ stagger *= 2;
+
+ switch (line->state)
+ {
+ case HESITATE: /* entering state HESITATE */
+ switch (sc->anim_type)
+ {
+ case SPIN:
+ line->steps = (line->cluster_pos * stagger);
+ break;
+ case SCROLL_TOP:
+ line->steps = stagger * (line->cluster_size - line->cluster_pos);
+ break;
+ case SCROLL_BOTTOM:
+ line->steps = stagger * line->cluster_pos;
+ break;
+ default:
+ abort();
+ }
+ break;
+
+ case IN:
+ line->color[3] = 0;
+ switch (sc->anim_type)
+ {
+ case SCROLL_BOTTOM: /* entering state BOTTOM IN */
+ line->from = sc->in;
+ line->to = sc->mid;
+ line->from.y = (sc->bottom_margin -
+ (line->height *
+ (line->cluster_pos + 1)));
+ line->to.y += (line->height *
+ ((line->cluster_size/2.0) - line->cluster_pos));
+ line->steps = slide;
+ break;
+
+ case SCROLL_TOP: /* entering state TOP IN */
+ line->from = sc->in;
+ line->to = sc->mid;
+ line->from.y = (sc->top_margin +
+ (line->height *
+ (line->cluster_size - line->cluster_pos)));
+ line->to.y += (line->height *
+ ((line->cluster_size/2.0) - line->cluster_pos));
+ line->steps = slide;
+ break;
+
+ case SPIN: /* entering state SPIN IN */
+ line->from = sc->in;
+ line->to = sc->mid;
+ line->to.y += (line->height *
+ ((line->cluster_size/2.0) - line->cluster_pos));
+ line->from.y += (line->height *
+ ((line->cluster_size/2.0) - line->cluster_pos));
+
+ line->fth = 270;
+ line->tth = 0;
+ line->steps = slide;
+ break;
+
+ default:
+ abort();
+ }
+ break;
+
+ case OUT:
+ switch (sc->anim_type)
+ {
+ case SCROLL_BOTTOM: /* entering state BOTTOM OUT */
+ line->from = line->to;
+ line->to = sc->out;
+ line->to.y = (sc->top_margin +
+ (line->height *
+ (line->cluster_size - line->cluster_pos)));
+ line->steps = slide;
+ break;
+
+ case SCROLL_TOP: /* entering state TOP OUT */
+ line->from = line->to;
+ line->to = sc->out;
+ line->to.y = (sc->bottom_margin -
+ (line->height *
+ (line->cluster_pos + 1)));
+ line->steps = slide;
+ break;
+
+ case SPIN: /* entering state SPIN OUT */
+ line->from = line->to;
+ line->to = sc->out;
+ line->to.y += (line->height *
+ ((line->cluster_size/2.0) - line->cluster_pos));
+
+ line->fth = line->tth;
+ line->tth = -270;
+ line->steps = slide;
+ break;
+
+ default:
+ abort();
+ }
+ break;
+
+ case LINGER:
+ line->from = line->to;
+ line->steps = linger;
+ break;
+
+ default:
+ break;
+ }
+
+ line->steps /= speed;
+ }
+
+ switch (line->state)
+ {
+ case IN:
+ case OUT:
+ i = (double) line->step / line->steps;
+
+ /* Move along the path exponentially, slow side towards the middle. */
+ if (line->state == OUT)
+ ii = i * i;
+ else
+ ii = 1 - ((1-i) * (1-i));
+
+ line->current.x = line->from.x + (ii * (line->to.x - line->from.x));
+ line->current.y = line->from.y + (ii * (line->to.y - line->from.y));
+ line->current.z = line->from.z + (ii * (line->to.z - line->from.z));
+ line->cth = line->fth + (ii * (line->tth - line->fth));
+
+ if (line->state == OUT) ii = 1-ii;
+ line->color[3] = sc->color[3] * ii;
+ break;
+
+ case HESITATE:
+ case LINGER:
+ case DEAD:
+ break;
+ default:
+ abort();
+ }
+}
+
+
+/* Start a new cluster of lines going.
+ Pick their anim type, and in, mid, and out positions.
+ */
+static void
+reset_lines (ModeInfo *mi)
+{
+ fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+ int i;
+ line *prev = 0;
+ GLfloat minx, maxx, miny, maxy, minz, maxz, maxw, maxh;
+
+ sc->rotation.x = 5 - BELLRAND(10);
+ sc->rotation.y = 5 - BELLRAND(10);
+ sc->rotation.z = 5 - BELLRAND(10);
+
+ switch (random() % 8)
+ {
+ case 0: sc->anim_type = SCROLL_TOP; break;
+ case 1: sc->anim_type = SCROLL_BOTTOM; break;
+ default: sc->anim_type = SPIN; break;
+ }
+
+ minx = sc->left_margin * 0.9;
+ maxx = sc->right_margin * 0.9;
+
+ miny = sc->bottom_margin * 0.9;
+ maxy = sc->top_margin * 0.9;
+
+ minz = sc->left_margin * 5;
+ maxz = sc->right_margin * 2;
+
+ maxw = sc->font_wrap_pixels * sc->font_scale;
+ maxh = max_lines * sc->line_height * sc->font_scale;
+
+ if (maxw > maxx - minx)
+ maxw = maxx - minx;
+ if (maxh > maxy - miny)
+ maxh = maxy - miny;
+
+ if (alignment_random_p)
+ sc->alignment = (random() % 3) - 1;
+
+ if (sc->alignment == -1) maxx -= maxw;
+ else if (sc->alignment == 1) minx += maxw;
+ else minx += maxw/2, maxx -= maxw/2;
+
+ miny += maxh/2;
+ maxy -= maxh/2;
+
+ sc->mid.x = minx + frand (maxx - minx);
+ if (sc->anim_type == SPIN)
+ sc->mid.y = miny + BELLRAND (maxy - miny);
+ else
+ sc->mid.y = miny + frand (maxy - miny);
+
+ sc->in.x = BELLRAND(sc->right_margin * 2) - sc->right_margin;
+ sc->out.x = BELLRAND(sc->right_margin * 2) - sc->right_margin;
+
+ sc->in.y = miny + frand(maxy - miny);
+ sc->out.y = miny + frand(maxy - miny);
+
+ sc->in.z = minz + frand(maxz - minz);
+ sc->out.z = minz + frand(maxz - minz);
+
+ sc->mid.z = 0;
+
+ if (sc->anim_type == SPIN && sc->in.z > 0) sc->in.z /= 4;
+ if (sc->anim_type == SPIN && sc->out.z > 0) sc->out.z /= 4;
+
+ for (i = 0; i < max_lines; i++)
+ {
+ line *line = make_line (sc, (i == 0));
+ if (!line) break; /* no text available */
+ if (i >= min_lines &&
+ (!line->text || !*line->text)) /* blank after min */
+ break;
+ }
+
+ for (i = 0; i < sc->nlines; i++)
+ {
+ line *line = sc->lines[i];
+ if (!prev)
+ {
+ line->from.y = sc->bottom_margin;
+ line->to.y = 0;
+ }
+ else
+ {
+ line->from.y = prev->from.y - prev->height;
+ line->to.y = prev->to.y - prev->height;
+ }
+ line->cluster_pos = i;
+ line->cluster_size = sc->nlines;
+ prev = line;
+ }
+}
+
+
+static void
+parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a)
+{
+ XColor c;
+ if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+ {
+ fprintf (stderr, "%s: can't parse %s color %s", progname, name, s);
+ exit (1);
+ }
+ a[0] = c.red / 65536.0;
+ a[1] = c.green / 65536.0;
+ a[2] = c.blue / 65536.0;
+ a[3] = 1.0;
+}
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_fliptext (ModeInfo *mi, int width, int height)
+{
+ fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (60.0, 1/h, 0.01, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 2.6,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ sc->right_margin = sc->top_margin / h;
+ sc->left_margin = -sc->right_margin;
+}
+
+
+ENTRYPOINT void
+init_fliptext (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+
+ fliptext_configuration *sc;
+
+ MI_INIT(mi, scs);
+
+ sc = &scs[MI_SCREEN(mi)];
+ sc->lines = (line **) calloc (max_lines+1, sizeof(char *));
+
+ sc->dpy = MI_DISPLAY(mi);
+
+ if ((sc->glx_context = init_GL(mi)) != NULL) {
+ reshape_fliptext (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
+ }
+
+ {
+ XCharStruct e;
+ int cw, lh, ascent, descent;
+ sc->texfont = load_texture_font (MI_DISPLAY(mi), "font");
+ check_gl_error ("loading font");
+ texture_string_metrics (sc->texfont, "n", &e, &ascent, &descent);
+ cw = e.width;
+ lh = ascent + descent;
+ sc->char_width = cw;
+ sc->line_height = lh;
+ }
+
+ if (!wire)
+ {
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
+ glEnable (GL_ALPHA_TEST);
+ glEnable (GL_TEXTURE_2D);
+
+ /* "Anistropic filtering helps for quadrilateral-angled textures.
+ A sharper image is accomplished by interpolating and filtering
+ multiple samples from one or more mipmaps to better approximate
+ very distorted textures. This is the next level of filtering
+ after trilinear filtering." */
+ if (strstr ((char *) glGetString(GL_EXTENSIONS),
+ "GL_EXT_texture_filter_anisotropic"))
+ {
+ GLfloat anisotropic = 0.0;
+ glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic);
+ if (anisotropic >= 1.0)
+ glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT,
+ anisotropic);
+ }
+ }
+
+ /* The default font is (by fiat) "18 points".
+ Interpret the user's font size request relative to that.
+ */
+ sc->font_scale = 3 * (font_size / 18.0);
+
+ if (target_columns <= 2) target_columns = 2;
+
+ /* Figure out what the wrap column should be, in font-coordinate pixels.
+ Compute it from the given -columns value, but don't let it be wider
+ than the screen.
+ */
+ {
+ GLfloat maxw = 110 * sc->line_height / sc->font_scale; /* magic... */
+ sc->font_wrap_pixels = target_columns * sc->char_width;
+ if (sc->font_wrap_pixels > maxw ||
+ sc->font_wrap_pixels <= 0)
+ sc->font_wrap_pixels = maxw;
+ }
+
+ sc->buf_size = target_columns * max_lines;
+ sc->buf = (char *) calloc (1, sc->buf_size);
+
+ alignment_random_p = False;
+ if (!alignment_str || !*alignment_str ||
+ !strcasecmp(alignment_str, "left"))
+ sc->alignment = -1;
+ else if (!strcasecmp(alignment_str, "center") ||
+ !strcasecmp(alignment_str, "middle"))
+ sc->alignment = 0;
+ else if (!strcasecmp(alignment_str, "right"))
+ sc->alignment = 1;
+ else if (!strcasecmp(alignment_str, "random"))
+ sc->alignment = -1, alignment_random_p = True;
+
+ else
+ {
+ fprintf (stderr,
+ "%s: alignment must be left/center/right/random, not \"%s\"\n",
+ progname, alignment_str);
+ exit (1);
+ }
+
+ sc->tc = textclient_open (sc->dpy);
+
+ if (max_lines < 1) max_lines = 1;
+ min_lines = max_lines * 0.66;
+ if (min_lines > max_lines - 3) min_lines = max_lines - 4;
+ if (min_lines < 1) min_lines = 1;
+
+ parse_color (mi, "foreground",
+ get_string_resource(mi->dpy, "foreground", "Foreground"),
+ sc->color);
+
+ sc->top_margin = (sc->char_width * 100);
+ sc->bottom_margin = -sc->top_margin;
+ reshape_fliptext (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); /* compute left/right */
+}
+
+
+ENTRYPOINT void
+draw_fliptext (ModeInfo *mi)
+{
+ fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+/* XtAppContext app = XtDisplayToApplicationContext (sc->dpy);*/
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int i;
+
+ if (!sc->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->glx_context));
+
+#if 0
+ if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
+ XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
+#endif
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ mi->polygon_count = 0;
+
+ glPushMatrix();
+ glRotatef(current_device_rotation(), 0, 0, 1);
+ {
+ GLfloat s = 3.0 / (sc->top_margin - sc->bottom_margin);
+ glScalef(s, s, s);
+ }
+
+ glRotatef (sc->rotation.x, 1, 0, 0);
+ glRotatef (sc->rotation.y, 0, 1, 0);
+ glRotatef (sc->rotation.z, 0, 0, 1);
+
+#if 0
+ glDisable (GL_TEXTURE_2D);
+ glColor3f (1,1,1);
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (sc->left_margin, sc->top_margin, 0);
+ glVertex3f (sc->right_margin, sc->top_margin, 0);
+ glVertex3f (sc->right_margin, sc->bottom_margin, 0);
+ glVertex3f (sc->left_margin, sc->bottom_margin, 0);
+ glEnd();
+ glBegin (GL_LINES);
+ glVertex3f (sc->in.x, sc->top_margin, sc->in.z);
+ glVertex3f (sc->in.x, sc->bottom_margin, sc->in.z);
+ glVertex3f (sc->mid.x, sc->top_margin, sc->mid.z);
+ glVertex3f (sc->mid.x, sc->bottom_margin, sc->mid.z);
+ glVertex3f (sc->out.x, sc->top_margin, sc->out.z);
+ glVertex3f (sc->out.x, sc->bottom_margin, sc->out.z);
+ glEnd();
+ glEnable (GL_TEXTURE_2D);
+#endif
+
+ for (i = 0; i < sc->nlines; i++)
+ {
+ line *line = sc->lines[i];
+ draw_line (mi, line);
+ tick_line (sc, line);
+ }
+
+ for (i = sc->nlines-1; i >= 0; i--)
+ {
+ line *line = sc->lines[i];
+ if (line->state == DEAD)
+ free_line (sc, line);
+ }
+
+ if (sc->nlines == 0)
+ reset_lines (mi);
+
+ glPopMatrix();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+ glXSwapBuffers(dpy, window);
+}
+
+ENTRYPOINT void
+free_fliptext (ModeInfo *mi)
+{
+ fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+ if (sc->tc)
+ textclient_close (sc->tc);
+ free(sc->lines);
+
+ /* #### there's more to free here */
+}
+
+XSCREENSAVER_MODULE ("FlipText", fliptext)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/fliptext.man b/hacks/glx/fliptext.man
new file mode 100644
index 0000000..8d2915e
--- /dev/null
+++ b/hacks/glx/fliptext.man
@@ -0,0 +1,114 @@
+.TH XScreenSaver 1 "20-Mar-2005" "X Version 11"
+.SH NAME
+fliptext - draws pages of text whose lines transparently flip around
+.SH SYNOPSIS
+.B fliptext
+[\-display \fIhost:display.screen\fP] [\-window] [\-root]
+[\-visual \fIvisual\fP]
+[\-delay \fImicroseconds\fP]
+[\-program \fIcommand\fP]
+[\-size \fIinteger\fP ]
+[\-columns \fIinteger\fP]
+[\-left | \-center | \-right]
+[\-lines \fIinteger\fP]
+[\-speed \fIfloat\fP]
+[\-delay \fIusecs\fP]
+[\-font \fIxlfd\fP]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+The \fIfliptext\fP program runs another program to generate a stream of
+text, then animates the lines of that text transparently flipping in
+and out in 3D.
+.SH OPTIONS
+.I fliptext
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-program \fIsh-command\fP
+This program will be run periodically, and its output will be the text
+that is displayed. Default \fIxscreensaver\-text\fP.
+
+You can configure the text printed through the "Advanced" tab of
+.BR xscreensaver\-demo (1),
+or by editing your ~/.xscreensaver file.
+.TP 8
+.B \-size \fIinteger\fP
+How large a font to use, in points. (Well, in some arbitrary unit
+we're calling "points" for the sake of argument.) Default: 20.
+.TP 8
+.B \-columns \fIinteger\fP
+At (approximately) what column to wrap lines. Default 80. Wrapping is
+done by pixels, not characters, and lines will always wrap at the
+edge of the screen regardless.
+.TP 8
+.B \-left | \-center | \-right
+Whether to align the text flush left, centered, or flush right.
+The default is to choose randomly each time a new screen of text
+is displayed.
+.TP 8
+.B \-lines \fIinteger\fP
+How many lines of text should be shown at once. Default 8.
+.TP 8
+.B \-speed \fIratio\fP
+Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast.
+.TP 8
+.B \-delay \fIusecs\fP
+The delay between frames of the animation; default is 10000 (1/10th second.)
+.TP 8
+.B \-font \fIfont-name\fP
+The name of the font to use. For best effect, this should be a large
+font (at least 36 points.) The bigger the font, the better looking the
+characters will be. Note that the size of this font affects only the
+clarity of the characters, not their size on the screen: for that, use
+the \fI\-size\fP or \fI\-columns\fP options.
+
+Default: -*-utopia-bold-r-normal-*-*-720-*-*-*-*-iso8859-1
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR xscreensaver (1),
+.BR xscreensaver-text (1),
+.BR fortune (1),
+.BR phosphor (MANSUFFIX),
+.BR apple2 (MANSUFFIX),
+.BR fontglide (MANSUFFIX),
+.BR ljlatest (MANSUFFIX),
+.BR dadadodo (1),
+.BR webcollage (MANSUFFIX),
+.BR driftnet (1)
+.BR EtherPEG ,
+.BR EtherPeek
+.SH COPYRIGHT
+Copyright \(co 2005 by Jamie Zawinski.
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski
diff --git a/hacks/glx/flurry-smoke.c b/hacks/glx/flurry-smoke.c
new file mode 100644
index 0000000..245e9f1
--- /dev/null
+++ b/hacks/glx/flurry-smoke.c
@@ -0,0 +1,1441 @@
+/*
+
+Copyright (c) 2002, Calum Robinson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the author nor the names of its contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+/* Smoke.cpp: implementation of the Smoke class. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "flurry.h"
+
+#define MAXANGLES 16384
+#define NOT_QUITE_DEAD 3
+
+#define intensity 75000.0f;
+
+void InitSmoke(SmokeV *s)
+{
+ int i;
+ s->nextParticle = 0;
+ s->nextSubParticle = 0;
+ s->lastParticleTime = 0.25f;
+ s->firstTime = 1;
+ s->frame = 0;
+ for (i=0;i<3;i++) {
+ s->old[i] = RandFlt(-100.0, 100.0);
+ }
+}
+
+void UpdateSmoke_ScalarBase(global_info_t *global, flurry_info_t *flurry, SmokeV *s)
+{
+ int i,j,k;
+ float sx = flurry->star->position[0];
+ float sy = flurry->star->position[1];
+ float sz = flurry->star->position[2];
+ double frameRate;
+ double frameRateModifier;
+
+
+ s->frame++;
+
+ if(!s->firstTime) {
+ /* release 12 puffs every frame */
+ if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) {
+ float dx,dy,dz,deltax,deltay,deltaz;
+ float f;
+ float rsquared;
+ float mag;
+
+ dx = s->old[0] - sx;
+ dy = s->old[1] - sy;
+ dz = s->old[2] - sz;
+ mag = 5.0f;
+ deltax = (dx * mag);
+ deltay = (dy * mag);
+ deltaz = (dz * mag);
+ for(i=0;inumStreams;i++) {
+ float streamSpeedCoherenceFactor;
+
+ s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax;
+ s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay;
+ s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz;
+ s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx;
+ s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy;
+ s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz;
+ s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx;
+ s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy;
+ s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz;
+ streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion));
+ dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0];
+ dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1];
+ dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2];
+ rsquared = (dx*dx+dy*dy+dz*dz);
+ f = streamSpeed * streamSpeedCoherenceFactor;
+
+ mag = f / (float) sqrt(rsquared);
+
+ s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag);
+ s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag);
+ s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag);
+ s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence));
+ s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime;
+ s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0;
+ s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63;
+ s->nextSubParticle++;
+ if (s->nextSubParticle==4) {
+ s->nextParticle++;
+ s->nextSubParticle=0;
+ }
+ if (s->nextParticle >= NUMSMOKEPARTICLES/4) {
+ s->nextParticle = 0;
+ s->nextSubParticle = 0;
+ }
+ }
+
+ s->lastParticleTime = flurry->fTime;
+ }
+ } else {
+ s->lastParticleTime = flurry->fTime;
+ s->firstTime = 0;
+ }
+
+ for(i=0;i<3;i++) {
+ s->old[i] = flurry->star->position[i];
+ }
+
+ frameRate = ((double) flurry->dframe)/(flurry->fTime);
+ frameRateModifier = 42.5f / frameRate;
+
+ for(i=0;ip[i].dead.i[k]) {
+ continue;
+ }
+
+ deltax = s->p[i].delta[0].f[k];
+ deltay = s->p[i].delta[1].f[k];
+ deltaz = s->p[i].delta[2].f[k];
+
+ for(j=0;jnumStreams;j++) {
+ dx = s->p[i].position[0].f[k] - flurry->spark[j]->position[0];
+ dy = s->p[i].position[1].f[k] - flurry->spark[j]->position[1];
+ dz = s->p[i].position[2].f[k] - flurry->spark[j]->position[2];
+ rsquared = (dx*dx+dy*dy+dz*dz);
+
+ f = (gravity/rsquared) * frameRateModifier;
+
+ if ((((i*4)+k) % flurry->numStreams) == j) {
+ f *= 1.0f + streamBias;
+ }
+ mag = f / (float) sqrt(rsquared);
+
+ deltax -= (dx * mag);
+ deltay -= (dy * mag);
+ deltaz -= (dz * mag);
+ }
+
+ /* slow this particle down by flurry->drag */
+ deltax *= flurry->drag;
+ deltay *= flurry->drag;
+ deltaz *= flurry->drag;
+
+ if((deltax*deltax+deltay*deltay+deltaz*deltaz) >= 25000000.0f) {
+ s->p[i].dead.i[k] = 1;
+ continue;
+ }
+
+ /* update the position */
+ s->p[i].delta[0].f[k] = deltax;
+ s->p[i].delta[1].f[k] = deltay;
+ s->p[i].delta[2].f[k] = deltaz;
+ for(j=0;j<3;j++) {
+ s->p[i].oldposition[j].f[k] = s->p[i].position[j].f[k];
+ s->p[i].position[j].f[k] += (s->p[i].delta[j].f[k])*flurry->fDeltaTime;
+ }
+ }
+ }
+}
+
+#if 0
+#ifdef __ppc__
+
+void UpdateSmoke_ScalarFrsqrte(global_info_t *global, flurry_info_t *flurry, SmokeV *s)
+{
+ int i,j,k;
+ float sx = flurry->star->position[0];
+ float sy = flurry->star->position[1];
+ float sz = flurry->star->position[2];
+ double frameRate;
+ double frameRateModifier;
+
+
+ s->frame++;
+
+ if(!s->firstTime) {
+ /* release 12 puffs every frame */
+ if(flurry->fTime - s->lastParticleTime >= 1.0f / 121.0f) {
+ float dx,dy,dz,deltax,deltay,deltaz;
+ float f;
+ float rsquared;
+ float mag;
+
+ dx = s->old[0] - sx;
+ dy = s->old[1] - sy;
+ dz = s->old[2] - sz;
+ mag = 5.0f;
+ deltax = (dx * mag);
+ deltay = (dy * mag);
+ deltaz = (dz * mag);
+ for(i=0;inumStreams;i++) {
+ float streamSpeedCoherenceFactor;
+
+ s->p[s->nextParticle].delta[0].f[s->nextSubParticle] = deltax;
+ s->p[s->nextParticle].delta[1].f[s->nextSubParticle] = deltay;
+ s->p[s->nextParticle].delta[2].f[s->nextSubParticle] = deltaz;
+ s->p[s->nextParticle].position[0].f[s->nextSubParticle] = sx;
+ s->p[s->nextParticle].position[1].f[s->nextSubParticle] = sy;
+ s->p[s->nextParticle].position[2].f[s->nextSubParticle] = sz;
+ s->p[s->nextParticle].oldposition[0].f[s->nextSubParticle] = sx;
+ s->p[s->nextParticle].oldposition[1].f[s->nextSubParticle] = sy;
+ s->p[s->nextParticle].oldposition[2].f[s->nextSubParticle] = sz;
+ streamSpeedCoherenceFactor = MAX_(0.0f,1.0f + RandBell(0.25f*incohesion));
+ dx = s->p[s->nextParticle].position[0].f[s->nextSubParticle] - flurry->spark[i]->position[0];
+ dy = s->p[s->nextParticle].position[1].f[s->nextSubParticle] - flurry->spark[i]->position[1];
+ dz = s->p[s->nextParticle].position[2].f[s->nextSubParticle] - flurry->spark[i]->position[2];
+ rsquared = (dx*dx+dy*dy+dz*dz);
+ f = streamSpeed * streamSpeedCoherenceFactor;
+
+ mag = f / (float) sqrt(rsquared);
+ /*
+ reciprocal square-root estimate replaced above divide and call to system sqrt()
+
+ asm("frsqrte %0, %1" : "=f" (mag) : "f" (rsquared));
+ mag *= f;
+ */
+
+ s->p[s->nextParticle].delta[0].f[s->nextSubParticle] -= (dx * mag);
+ s->p[s->nextParticle].delta[1].f[s->nextSubParticle] -= (dy * mag);
+ s->p[s->nextParticle].delta[2].f[s->nextSubParticle] -= (dz * mag);
+ s->p[s->nextParticle].color[0].f[s->nextSubParticle] = flurry->spark[i]->color[0] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[1].f[s->nextSubParticle] = flurry->spark[i]->color[1] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[2].f[s->nextSubParticle] = flurry->spark[i]->color[2] * (1.0f + RandBell(colorIncoherence));
+ s->p[s->nextParticle].color[3].f[s->nextSubParticle] = 0.85f * (1.0f + RandBell(0.5f*colorIncoherence));
+ s->p[s->nextParticle].time.f[s->nextSubParticle] = flurry->fTime;
+ s->p[s->nextParticle].dead.i[s->nextSubParticle] = 0;
+ s->p[s->nextParticle].animFrame.i[s->nextSubParticle] = random()&63;
+ s->nextSubParticle++;
+ if (s->nextSubParticle==4) {
+ s->nextParticle++;
+ s->nextSubParticle=0;
+ }
+ if (s->nextParticle >= NUMSMOKEPARTICLES/4) {
+ s->nextParticle = 0;
+ s->nextSubParticle = 0;
+ }
+ }
+
+ s->lastParticleTime = flurry->fTime;
+ }
+ } else {
+ s->lastParticleTime = flurry->fTime;
+ s->firstTime = 0;
+ }
+
+ for(i=0;i<3;i++) {
+ s->old[i] = flurry->star->position[i];
+ }
+
+ frameRate = ((double) flurry->dframe)/(flurry->fTime);
+ frameRateModifier = 42.5f / frameRate;
+
+ for(i=0;i