texlive[57876] Master: asymptote 2.69 support files

commits+karl at tug.org commits+karl at tug.org
Wed Feb 24 19:33:44 CET 2021


Revision: 57876
          http://tug.org/svn/texlive?view=revision&revision=57876
Author:   karl
Date:     2021-02-24 19:33:44 +0100 (Wed, 24 Feb 2021)
Log Message:
-----------
asymptote 2.69 support files

Modified Paths:
--------------
    trunk/Master/texmf-dist/asymptote/GUI/Window1.py
    trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson
    trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py
    trunk/Master/texmf-dist/asymptote/GUI/setup.py
    trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py
    trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py
    trunk/Master/texmf-dist/asymptote/animation.asy
    trunk/Master/texmf-dist/asymptote/asy-keywords.el
    trunk/Master/texmf-dist/asymptote/asy-mode.el
    trunk/Master/texmf-dist/asymptote/babel.asy
    trunk/Master/texmf-dist/asymptote/bezulate.asy
    trunk/Master/texmf-dist/asymptote/binarytree.asy
    trunk/Master/texmf-dist/asymptote/bsp.asy
    trunk/Master/texmf-dist/asymptote/colormap.asy
    trunk/Master/texmf-dist/asymptote/contour.asy
    trunk/Master/texmf-dist/asymptote/contour3.asy
    trunk/Master/texmf-dist/asymptote/embed.asy
    trunk/Master/texmf-dist/asymptote/external.asy
    trunk/Master/texmf-dist/asymptote/feynman.asy
    trunk/Master/texmf-dist/asymptote/flowchart.asy
    trunk/Master/texmf-dist/asymptote/geometry.asy
    trunk/Master/texmf-dist/asymptote/graph.asy
    trunk/Master/texmf-dist/asymptote/graph3.asy
    trunk/Master/texmf-dist/asymptote/graph_splinetype.asy
    trunk/Master/texmf-dist/asymptote/grid3.asy
    trunk/Master/texmf-dist/asymptote/interpolate.asy
    trunk/Master/texmf-dist/asymptote/labelpath3.asy
    trunk/Master/texmf-dist/asymptote/lmfit.asy
    trunk/Master/texmf-dist/asymptote/math.asy
    trunk/Master/texmf-dist/asymptote/metapost.asy
    trunk/Master/texmf-dist/asymptote/obj.asy
    trunk/Master/texmf-dist/asymptote/ode.asy
    trunk/Master/texmf-dist/asymptote/palette.asy
    trunk/Master/texmf-dist/asymptote/patterns.asy
    trunk/Master/texmf-dist/asymptote/plain.asy
    trunk/Master/texmf-dist/asymptote/plain_Label.asy
    trunk/Master/texmf-dist/asymptote/plain_arcs.asy
    trunk/Master/texmf-dist/asymptote/plain_arrows.asy
    trunk/Master/texmf-dist/asymptote/plain_bounds.asy
    trunk/Master/texmf-dist/asymptote/plain_boxes.asy
    trunk/Master/texmf-dist/asymptote/plain_margins.asy
    trunk/Master/texmf-dist/asymptote/plain_picture.asy
    trunk/Master/texmf-dist/asymptote/plain_shipout.asy
    trunk/Master/texmf-dist/asymptote/rationalSimplex.asy
    trunk/Master/texmf-dist/asymptote/simplex.asy
    trunk/Master/texmf-dist/asymptote/slide.asy
    trunk/Master/texmf-dist/asymptote/slopefield.asy
    trunk/Master/texmf-dist/asymptote/three.asy
    trunk/Master/texmf-dist/asymptote/three_light.asy
    trunk/Master/texmf-dist/asymptote/three_surface.asy
    trunk/Master/texmf-dist/asymptote/three_tube.asy
    trunk/Master/texmf-dist/asymptote/tube.asy
    trunk/Master/texmf-dist/asymptote/version.asy
    trunk/Master/texmf-dist/asymptote/webgl/asygl.js
    trunk/Master/texmf-dist/doc/asymptote/CAD.pdf
    trunk/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
    trunk/Master/texmf-dist/doc/asymptote/asy-latex.pdf
    trunk/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
    trunk/Master/texmf-dist/doc/asymptote/asymptote.pdf
    trunk/Master/texmf-dist/doc/asymptote/examples/1overx.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/Klein.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSphere.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/bars3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/colorpatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/conicurv.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/diatom.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/dimension.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/elliptic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/equilchord.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/exp.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/filesurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/fin.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/floor.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/gamma.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/gamma3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/genustwo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/icon.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/integraltest.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/intro.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/jump.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/legend.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/linearregression.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/linetype.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/logo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/logo3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/lowupint.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/markers1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/markregular.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mosaic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/mosquito.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/near_earth.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pdb.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pipes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/poster.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/rainbow.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/roll.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/roundpath.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/slope.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/soccerball.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spectrum.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spiral3.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spline.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/spring.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/teapot.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/torus.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/triads.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/triangle.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/tvgen.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/worldmap.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xstitch.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/yingyang.asy
    trunk/Master/texmf-dist/doc/info/asy-faq.info
    trunk/Master/texmf-dist/doc/info/asymptote.info
    trunk/Master/texmf-dist/doc/man/man1/asy.1
    trunk/Master/texmf-dist/doc/man/man1/asy.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/xasy.man1.pdf
    trunk/Master/texmf-dist/tex/latex/asymptote/asymptote.sty
    trunk/Master/tlpkg/asymptote/asy.exe
    trunk/Master/tlpkg/asymptote64/asy.exe

Added Paths:
-----------
    trunk/Master/texmf-dist/asymptote/map.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1
    trunk/Master/texmf-dist/doc/asymptote/examples/axialshade.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/pOrbital.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/unitoctantx.asy

Removed Paths:
-------------
    trunk/Master/texmf-dist/asymptote/latin1.asy
    trunk/Master/texmf-dist/asymptote/unicode.asy
    trunk/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy

Modified: trunk/Master/texmf-dist/asymptote/GUI/Window1.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/Window1.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/Window1.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -772,11 +772,11 @@
         self.asyfyCanvas()
 
     def actionManual(self):
-        asyManualURL = 'http://asymptote.sourceforge.net/asymptote.pdf'
+        asyManualURL = 'https://asymptote.sourceforge.io/asymptote.pdf'
         webbrowser.open_new(asyManualURL)
 
     def actionAbout(self):
-        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: http://asymptote.sourceforge.net/")
+        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: https://asymptote.sourceforge.io/")
 
     def btnExportAsyOnClick(self):
         diag = Qw.QFileDialog(self)

Modified: trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/configs/xasyconfig.cson	2021-02-24 18:33:44 UTC (rev 57876)
@@ -54,7 +54,7 @@
 
 # Overrides
 
-windows:
+Windows:
     externalEditor: "notepad.exe"
 
 Darwin:

Modified: trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/icons_rc.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,13 +9,13 @@
 from PyQt5 import QtCore
 
 qt_resource_data = b"\
-\x00\x00\x03\xe6\
+\x00\x00\x03\x4c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -27,53 +27,362 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
-\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x32\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
+\x35\x36\x2c\x31\x35\x32\x63\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\
+\x30\x34\x2c\x34\x36\x2e\x38\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\
+\x34\x36\x2e\x38\x2c\x31\x30\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\
+\x73\x31\x30\x34\x2d\x34\x36\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\
+\x34\x53\x33\x31\x33\x2e\x32\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\
+\x31\x35\x32\x7a\x20\x4d\x32\x35\x36\x2c\x34\x38\x0d\x0a\x09\x09\
+\x09\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\
+\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\
+\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\
+\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\
+\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\
+\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\
+\x2e\x34\x0d\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\
+\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\x34\x2e\x38\x38\x33\x2d\x31\
+\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\x34\x53\x31\x36\x34\x2e\x34\
+\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\
+\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\
+\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\
+\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\
+\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x1c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
 \x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
+\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
+\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
+\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
+\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
+\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
+\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
+\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
+\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
+\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
+\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
+\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
+\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
+\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
+\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
+\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
+\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
+\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
+\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
+\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
+\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
+\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
+\x00\x00\x03\x0c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
 \x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
 \x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
 \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
-\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
-\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
-\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
-\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
-\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
+\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
+\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
+\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
+\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
+\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
+\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
+\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
+\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
+\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
+\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
+\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
+\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
+\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
+\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
+\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
+\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
+\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
+\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
+\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
+\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
+\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
+\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
+\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
+\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
+\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\x22\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\
+\x20\x63\x79\x3d\x22\x32\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\
+\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
+\x34\x30\x2c\x39\x36\x68\x2d\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\
+\x48\x31\x39\x32\x6c\x2d\x33\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\
+\x32\x32\x2e\x30\x39\x32\x2c\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\
+\x30\x38\x2d\x34\x30\x2c\x34\x30\x76\x32\x37\x32\x63\x30\x2c\x32\
+\x32\x2e\x30\x39\x32\x2c\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\
+\x34\x30\x2c\x34\x30\x68\x33\x36\x38\x63\x32\x32\x2e\x30\x39\x32\
+\x2c\x30\x2c\x34\x30\x2d\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\
+\x34\x30\x0d\x0a\x09\x09\x56\x31\x33\x36\x43\x34\x38\x30\x2c\x31\
+\x31\x33\x2e\x39\x30\x38\x2c\x34\x36\x32\x2e\x30\x39\x32\x2c\x39\
+\x36\x2c\x34\x34\x30\x2c\x39\x36\x7a\x20\x4d\x32\x35\x36\x2c\x33\
+\x39\x32\x63\x2d\x36\x31\x2e\x38\x35\x35\x2c\x30\x2d\x31\x31\x32\
+\x2d\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2d\x31\x31\x32\x73\
+\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2c\x31\x31\x32\x2d\x31\
+\x31\x32\x73\x31\x31\x32\x2c\x35\x30\x2e\x31\x34\x35\x2c\x31\x31\
+\x32\x2c\x31\x31\x32\x0d\x0a\x09\x09\x53\x33\x31\x37\x2e\x38\x35\
+\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\x2c\x33\x39\x32\x7a\x22\x2f\
+\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
+\x0a\
+\x00\x00\x04\xa2\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
+\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
+\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
+\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
+\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
+\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
+\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
+\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
+\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
+\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
+\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
+\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
+\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
+\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
+\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
+\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
+\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
+\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
+\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
+\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
+\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
+\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
+\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
+\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
+\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
+\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
+\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
+\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
+\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
+\x3e\
+\x00\x00\x04\x3d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
+\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
+\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\
+\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\
+\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\
+\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\
+\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
 \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
-\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
-\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
-\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
-\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
-\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
-\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
-\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
-\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
-\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
-\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
-\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
-\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
-\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
-\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
-\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
-\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
-\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
-\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
-\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
-\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
-\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
-\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
-\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
-\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
-\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
-\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
-\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
+\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
+\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\x79\
+\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\
+\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
+\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
+\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\x79\
+\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\x6c\
+\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\
+\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\
+\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\
+\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\
+\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\
+\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\
+\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\x20\
+\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\x69\
+\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\
+\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\
+\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\
+\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\
+\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\
+\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\
+\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\x34\
+\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\
+\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\
+\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
+\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x02\xf2\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -124,6 +433,166 @@
 \x35\x39\x39\x2c\x31\x30\x2c\x31\x37\x2e\x35\x39\x39\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
+\x00\x00\x02\x7d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
+\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
+\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
+\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
+\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
+\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
+\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\xc9\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
+\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
+\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
+\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
+\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
+\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
+\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
+\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
+\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
+\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
+\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
+\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
+\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x4e\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
+\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
+\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x4c\x20\x33\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\
+\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\
+\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\
+\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\
+\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\
+\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
+\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
+\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
+\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\
+\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\
+\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\
+\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
+\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
+\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
+\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\
+\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\
+\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\
+\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\
+\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\
+\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\
+\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\
+\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
+\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\
+\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\
+\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
+\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
+\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x01\x69\
 \x3c\
 \x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
@@ -149,7 +618,7 @@
 \x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\
 \x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\
 \x3e\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x03\x46\
+\x00\x00\x05\xca\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -176,34 +645,211 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
+\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
+\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
+\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
+\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
+\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
+\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
+\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
+\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
+\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
+\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
+\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
+\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
+\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
+\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
+\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
+\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
+\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
+\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
+\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
+\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
+\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
+\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
+\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
+\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
+\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
+\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
+\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
+\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
+\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
+\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
+\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
+\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
+\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
+\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
+\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
+\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
+\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
+\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
+\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
+\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
+\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
+\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
+\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
+\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
+\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
+\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
+\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
+\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
+\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
+\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
+\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
+\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
+\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
+\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
+\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
+\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
+\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
+\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
+\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\x26\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\
+\x38\x63\x2d\x37\x32\x2e\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\
+\x35\x39\x2e\x34\x30\x35\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\
+\x2d\x37\x32\x2e\x36\x30\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\
+\x33\x32\x2c\x31\x33\x32\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\
+\x30\x2c\x36\x39\x2e\x32\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\
+\x2e\x34\x30\x36\x2c\x33\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\
+\x32\x33\x34\x68\x31\x35\x34\x56\x38\x30\x0d\x0a\x09\x09\x6c\x2d\
+\x35\x31\x2e\x36\x39\x38\x2c\x35\x31\x2e\x37\x30\x32\x43\x33\x34\
+\x38\x2e\x34\x30\x36\x2c\x39\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\
+\x2e\x34\x30\x36\x2c\x38\x30\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\
+\x39\x36\x2e\x37\x39\x37\x2c\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\
+\x32\x30\x33\x2d\x31\x37\x36\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\
+\x39\x34\x2c\x31\x37\x36\x2c\x31\x37\x36\x2c\x31\x37\x36\x0d\x0a\
+\x09\x09\x63\x38\x31\x2e\x30\x34\x35\x2c\x30\x2c\x31\x34\x38\x2e\
+\x32\x38\x37\x2d\x35\x34\x2e\x31\x33\x34\x2c\x31\x36\x39\x2e\x34\
+\x30\x31\x2d\x31\x32\x38\x48\x33\x37\x38\x2e\x38\x35\x43\x33\x36\
+\x30\x2e\x31\x30\x35\x2c\x33\x35\x33\x2e\x35\x36\x31\x2c\x33\x31\
+\x31\x2e\x37\x31\x32\x2c\x33\x38\x38\x2c\x32\x35\x36\x2c\x33\x38\
+\x38\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x79\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
+\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
+\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
+\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
+\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
+\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
+\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
+\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7f\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
 \x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
 \x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
 \x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
 \x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
 \x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
-\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
-\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
-\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
-\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
-\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
-\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
-\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
-\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
-\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
-\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
-\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
-\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
-\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
-\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
-\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
-\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
-\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
+\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
+\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
+\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
+\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
+\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
+\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
+\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
+\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x04\xca\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -283,104 +929,8 @@
 \x36\x37\x2c\x37\x2e\x34\x37\x30\x34\x0a\x09\x48\x33\x2e\x33\x37\
 \x33\x33\x4c\x37\x2e\x35\x2c\x33\x2e\x38\x39\x39\x33\x7a\x22\x2f\
 \x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x05\xd4\
+\x00\x00\x02\xfc\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\
-\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\
-\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x34\x33\x2e\x39\x30\x33\
-\x32\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x34\x37\x2e\x33\x30\
-\x31\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x33\x30\x31\
-\x37\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x34\x37\x2e\x33\
-\x30\x31\x37\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x34\x33\x2e\
-\x39\x30\x33\x32\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\
-\x2e\x37\x31\x30\x39\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
-\x33\x35\x2e\x35\x31\x38\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\
-\x2d\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x33\x32\
-\x2e\x31\x32\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x33\x32\
-\x2e\x31\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x35\x2e\
-\x35\x31\x38\x35\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\
-\x2e\x37\x31\x30\x39\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\
-\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\
-\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\
-\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\
-\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
-\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\
-\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\
-\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\
-\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
-\x33\x39\x2e\x37\x31\x30\x39\x4c\x20\x39\x2e\x33\x34\x37\x34\x32\
-\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x39\x2e\x33\x34\x37\
-\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\x20\x39\x2e\x33\
-\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\x2e\
-\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\
-\x2e\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\
-\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x2e\x31\x35\x35\x31\
-\x31\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x31\x2e\x37\x35\x36\
-\x35\x36\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x2e\x37\x35\x36\x35\
-\x36\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x31\x2e\x37\x35\
-\x36\x35\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x35\x2e\x31\
-\x35\x35\x31\x31\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x39\x2e\
-\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\
-\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\
-\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x27\x20\x66\x69\x6c\x6c\x3d\
-\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\
-\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\
-\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\
-\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\
-\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\
-\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\
-\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
-\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\
-\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\
-\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\
-\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\
-\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\
-\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\x20\x35\x34\x2e\x38\
-\x39\x32\x36\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\x34\x34\x2e\
-\x36\x39\x36\x39\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\
-\x2e\x31\x32\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x31\x39\
-\x2e\x35\x34\x33\x31\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x39\
-\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\
-\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\
-\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\
-\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\
-\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\
-\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\
-\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
-\x76\x67\x3e\
-\x00\x00\x03\x4c\
-\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -411,29 +961,362 @@
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
 \x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x32\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
 \x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x31\x35\x32\x63\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\
-\x30\x34\x2c\x34\x36\x2e\x38\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\
-\x34\x36\x2e\x38\x2c\x31\x30\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\
-\x73\x31\x30\x34\x2d\x34\x36\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\
-\x34\x53\x33\x31\x33\x2e\x32\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\
-\x31\x35\x32\x7a\x20\x4d\x32\x35\x36\x2c\x34\x38\x0d\x0a\x09\x09\
-\x09\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\
-\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\
-\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\
-\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\
-\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\
-\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\
-\x2e\x34\x0d\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\
-\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\x34\x2e\x38\x38\x33\x2d\x31\
-\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\x34\x53\x31\x36\x34\x2e\x34\
-\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\
-\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\
-\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\
-\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\
+\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
+\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
+\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
+\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
+\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
+\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
+\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
+\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
+\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
+\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
+\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
+\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
+\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
+\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
 \x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
 \x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\xa1\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
+\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
+\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
+\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
+\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
+\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
+\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
+\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
+\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
+\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
+\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
+\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
+\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
+\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
+\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
+\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
+\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
+\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\
+\x00\x00\x03\x6c\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
+\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
+\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
+\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
+\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
+\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
+\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
+\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
+\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
+\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
+\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
+\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
+\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
+\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
+\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
+\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
+\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
+\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
+\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
+\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
+\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
+\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7d\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
+\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
+\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
+\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
+\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
+\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
+\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x64\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
+\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
+\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
+\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
+\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
+\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
+\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
+\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
+\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
+\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
+\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
+\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
+\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
+\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
+\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
+\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
+\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
+\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
+\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
+\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
+\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
+\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
+\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
+\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
+\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
+\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
+\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
+\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
+\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
+\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
+\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
+\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
+\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
+\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
+\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
+\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
+\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
+\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
+\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
+\x00\x00\x03\x52\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
+\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
+\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
+\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
+\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
+\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
+\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
+\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
+\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
+\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
+\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
+\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
+\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
+\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
+\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
+\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
+\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
+\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
+\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
+\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
+\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
+\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
+\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
+\x0a\
+\x00\x00\x03\xe6\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
+\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
+\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
+\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
+\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
+\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
+\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
+\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
+\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
+\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
+\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
+\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
+\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
+\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
+\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
+\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
+\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
+\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
+\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
+\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
+\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
+\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
+\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
+\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
+\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
+\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
+\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
+\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
+\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
+\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
+\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
+\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
+\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
+\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
+\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
 \x00\x00\x07\x80\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -556,152 +1439,12 @@
 \x38\x2e\x32\x37\x34\x2c\x33\x38\x32\x2e\x38\x32\x2c\x33\x30\x37\
 \x2e\x38\x36\x37\x2c\x33\x38\x32\x2e\x38\x32\x7a\x22\x2f\x3e\x0d\
 \x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xc4\
+\x00\x00\x03\xeb\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
-\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
-\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
-\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
-\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
-\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
-\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
-\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
-\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
-\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
-\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
-\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
-\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
-\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
-\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
-\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
-\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
-\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
-\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
-\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
-\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
-\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
-\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
-\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
-\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
-\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
-\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
-\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
-\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
-\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
-\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
-\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
-\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
-\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
-\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
-\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
-\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
-\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
-\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
-\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
-\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x04\xaa\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
-\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
-\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
-\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
-\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
-\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
-\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
-\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
-\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
-\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
-\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
-\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
-\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
-\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
-\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
-\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
-\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
-\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
-\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
-\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
-\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
-\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
-\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
-\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
-\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
-\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
-\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
-\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
-\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
-\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
-\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
-\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
-\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
-\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
-\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
-\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
-\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
-\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
-\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
-\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
-\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
-\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
-\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
-\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
-\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
-\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
-\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
-\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
-\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x26\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
 \x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
@@ -723,32 +1466,44 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\
-\x38\x63\x2d\x37\x32\x2e\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\
-\x35\x39\x2e\x34\x30\x35\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\
-\x2d\x37\x32\x2e\x36\x30\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\
-\x33\x32\x2c\x31\x33\x32\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\
-\x30\x2c\x36\x39\x2e\x32\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\
-\x2e\x34\x30\x36\x2c\x33\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\
-\x32\x33\x34\x68\x31\x35\x34\x56\x38\x30\x0d\x0a\x09\x09\x6c\x2d\
-\x35\x31\x2e\x36\x39\x38\x2c\x35\x31\x2e\x37\x30\x32\x43\x33\x34\
-\x38\x2e\x34\x30\x36\x2c\x39\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\
-\x2e\x34\x30\x36\x2c\x38\x30\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\
-\x39\x36\x2e\x37\x39\x37\x2c\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\
-\x32\x30\x33\x2d\x31\x37\x36\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\
-\x39\x34\x2c\x31\x37\x36\x2c\x31\x37\x36\x2c\x31\x37\x36\x0d\x0a\
-\x09\x09\x63\x38\x31\x2e\x30\x34\x35\x2c\x30\x2c\x31\x34\x38\x2e\
-\x32\x38\x37\x2d\x35\x34\x2e\x31\x33\x34\x2c\x31\x36\x39\x2e\x34\
-\x30\x31\x2d\x31\x32\x38\x48\x33\x37\x38\x2e\x38\x35\x43\x33\x36\
-\x30\x2e\x31\x30\x35\x2c\x33\x35\x33\x2e\x35\x36\x31\x2c\x33\x31\
-\x31\x2e\x37\x31\x32\x2c\x33\x38\x38\x2c\x32\x35\x36\x2c\x33\x38\
-\x38\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
+\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
+\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
+\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
+\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
+\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
+\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
+\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
+\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
+\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
+\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
+\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
+\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
+\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
+\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
+\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
+\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
+\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
+\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
+\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
+\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
+\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
+\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
+\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
+\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
+\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
+\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
+\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
+\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
+\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x02\xa2\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -794,182 +1549,26 @@
 \x48\x39\x36\x76\x33\x32\x68\x33\x32\x30\x56\x39\x36\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
-\x00\x00\x04\xd5\
+\x00\x00\x01\x1c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
-\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
-\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
-\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
-\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
-\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
-\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
-\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
-\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
-\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
-\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
-\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
-\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
-\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
-\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
-\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
-\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
-\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
-\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
-\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
-\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
-\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
-\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
-\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
-\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
-\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
-\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
-\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
-\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
-\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
-\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
-\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
-\x73\x76\x67\x3e\
-\x00\x00\x03\x36\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
-\x22\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\
-\x32\x30\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\
-\x20\x34\x34\x38\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\
-\x20\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\
-\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
-\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\
-\x30\x35\x20\x33\x39\x36\x2e\x38\x2c\x31\x39\x32\x20\x34\x34\x38\
-\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\
-\x36\x34\x20\x33\x32\x30\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x09\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
-\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\
-\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x31\x31\x35\x2e\x32\x20\x31\
-\x39\x32\x2c\x36\x34\x20\x36\x34\x2c\x36\x34\x20\x36\x34\x2c\x31\
-\x39\x32\x20\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\x39\x32\x20\x09\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
-\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x2c\x33\x39\x36\
-\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\x32\x2c\x33\x32\x30\x20\x36\
-\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\x34\x34\x38\x20\x31\x39\x32\
-\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\
-\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
-\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
-\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
-\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
-\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
-\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
-\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
+\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
+\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
+\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
+\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
+\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
+\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
+\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
+\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
+\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
+\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
 \x00\x00\x05\x27\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1055,7 +1654,44 @@
 \x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\x2f\x3e\x0d\
 \x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
 \x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
+\x00\x00\x02\x21\
+\x00\
+\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
+\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
+\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
+\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
+\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
+\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
+\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
+\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
+\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
+\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
+\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
+\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
+\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
+\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
+\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
+\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
+\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
+\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
+\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
+\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
+\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
+\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
+\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
+\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
+\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
+\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
+\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
+\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
+\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
+\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
+\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
+\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
+\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
+\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
+\
+\x00\x00\x03\x36\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1086,18 +1722,62 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
-\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
-\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
-\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
-\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
-\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
-\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x52\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
+\x22\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\
+\x32\x30\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\
+\x20\x34\x34\x38\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\
+\x20\x33\x39\x36\x2e\x37\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\
+\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
+\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\
+\x30\x35\x20\x33\x39\x36\x2e\x38\x2c\x31\x39\x32\x20\x34\x34\x38\
+\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\
+\x36\x34\x20\x33\x32\x30\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x09\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
+\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\
+\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x31\x31\x35\x2e\x32\x20\x31\
+\x39\x32\x2c\x36\x34\x20\x36\x34\x2c\x36\x34\x20\x36\x34\x2c\x31\
+\x39\x32\x20\x31\x31\x35\x2e\x32\x30\x35\x2c\x31\x39\x32\x20\x09\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\
+\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\x35\x2e\x32\x2c\x33\x39\x36\
+\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\x32\x2c\x33\x32\x30\x20\x36\
+\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\x34\x34\x38\x20\x31\x39\x32\
+\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\
+\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x01\xdd\
+\x00\
+\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
+\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
+\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
+\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
+\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
+\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
+\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
+\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
+\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
+\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
+\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
+\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
+\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
+\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
+\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
+\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
+\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
+\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
+\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
+\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
+\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
+\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
+\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
+\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
+\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
+\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
+\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
+\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
+\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
+\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
+\x00\x00\x02\xb7\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1128,69 +1808,22 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
-\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
-\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
-\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
-\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
-\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
-\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
-\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
-\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
-\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
-\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
-\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
-\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
-\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
-\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
-\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
-\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
-\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
-\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
-\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
-\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
-\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
-\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
-\x0a\
-\x00\x00\x02\x21\
-\x00\
-\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
-\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
-\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
-\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
-\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
-\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
-\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
-\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
-\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
-\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
-\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
-\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
-\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
-\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
-\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
-\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
-\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
-\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
-\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
-\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
-\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
-\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
-\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
-\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
-\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
-\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
-\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
-\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
-\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
-\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
-\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
-\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
-\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
-\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
-\
-\x00\x00\x04\x3d\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
+\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
+\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
+\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
+\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
+\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
+\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
+\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\xd5\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
 \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
@@ -1214,59 +1847,69 @@
 \x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
 \x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
 \x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
-\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
-\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
+\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
+\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
+\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
+\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
+\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
+\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
+\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
+\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
+\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
+\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
+\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
+\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
+\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
 \x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\
-\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\
-\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\
-\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
-\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
-\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\x79\
-\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\
-\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\
-\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\
-\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\x79\
-\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\x6c\
-\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\
-\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\
-\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\
-\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\
-\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\
-\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\
-\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\x20\
-\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\x69\
-\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\
-\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\
-\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\
-\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\
-\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\
-\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\
-\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\x34\
-\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\
-\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\
-\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
-\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x02\xc9\
+\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
+\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
+\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
+\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
+\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
+\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
+\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
+\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
+\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
+\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
+\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
+\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
+\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
+\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
+\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
+\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
+\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
+\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
+\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
+\x73\x76\x67\x3e\
+\x00\x00\x03\xc4\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -1278,42 +1921,58 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
-\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
-\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
-\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
-\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
-\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
-\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
-\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
-\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
-\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
-\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
-\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
-\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\xfc\
+\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
+\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
+\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
+\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
+\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
+\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
+\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
+\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
+\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
+\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
+\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
+\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
+\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
+\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
+\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
+\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
+\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
+\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
+\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
+\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
+\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
+\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
+\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
+\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
+\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
+\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
+\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
+\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
+\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
+\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
+\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
+\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
+\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
+\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
+\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
+\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
+\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
+\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
+\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
+\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
+\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
+\x00\x00\x04\xaa\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -1325,40 +1984,163 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
-\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
-\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
-\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
-\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
-\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
-\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
-\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
-\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
-\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
-\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
-\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
-\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
-\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
-\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
-\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x6c\
+\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
+\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
+\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
+\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
+\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
+\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
+\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
+\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
+\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
+\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
+\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
+\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
+\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
+\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
+\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
+\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
+\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
+\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
+\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
+\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
+\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
+\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
+\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
+\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
+\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
+\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
+\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
+\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
+\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
+\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
+\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
+\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
+\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
+\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
+\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
+\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
+\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
+\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
+\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
+\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
+\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
+\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
+\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
+\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
+\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
+\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
+\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
+\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
+\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x05\xd4\
 \x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\
+\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\
+\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x34\x33\x2e\x39\x30\x33\
+\x32\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x34\x37\x2e\x33\x30\
+\x31\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x33\x30\x31\
+\x37\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x34\x37\x2e\x33\
+\x30\x31\x37\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x34\x33\x2e\
+\x39\x30\x33\x32\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\
+\x2e\x37\x31\x30\x39\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
+\x33\x35\x2e\x35\x31\x38\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\
+\x2d\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x33\x32\
+\x2e\x31\x32\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x33\x32\
+\x2e\x31\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x35\x2e\
+\x35\x31\x38\x35\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x33\x39\
+\x2e\x37\x31\x30\x39\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\
+\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\
+\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\
+\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\
+\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
+\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\
+\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
+\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\
+\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\
+\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\
+\x33\x39\x2e\x37\x31\x30\x39\x4c\x20\x39\x2e\x33\x34\x37\x34\x32\
+\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x39\x2e\x33\x34\x37\
+\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\x20\x39\x2e\x33\
+\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\x2e\
+\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x20\x39\
+\x2e\x33\x34\x37\x34\x32\x20\x2d\x39\x2e\x33\x34\x37\x34\x32\x43\
+\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x2e\x31\x35\x35\x31\
+\x31\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x2d\x31\x2e\x37\x35\x36\
+\x35\x36\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x2e\x37\x35\x36\x35\
+\x36\x43\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x2d\x31\x2e\x37\x35\
+\x36\x35\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x35\x2e\x31\
+\x35\x35\x31\x31\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\x39\x2e\
+\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x2d\
+\x39\x2e\x33\x34\x37\x34\x32\x4c\x20\x35\x34\x2e\x38\x39\x32\x36\
+\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x27\x20\x66\x69\x6c\x6c\x3d\
+\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\
+\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\
+\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\
+\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\
+\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\
+\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\
+\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
+\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\
+\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\
+\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x36\x2e\x34\
+\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\
+\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\
+\x36\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\x43\x20\x35\x34\x2e\x38\
+\x39\x32\x36\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\x34\x34\x2e\
+\x36\x39\x36\x39\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\
+\x2e\x31\x32\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x31\x39\
+\x2e\x35\x34\x33\x31\x20\x2d\x36\x32\x2e\x34\x38\x33\x34\x20\x39\
+\x2e\x33\x34\x37\x34\x32\x20\x2d\x35\x32\x2e\x32\x38\x37\x38\x20\
+\x39\x2e\x33\x34\x37\x34\x32\x20\x2d\x33\x39\x2e\x37\x31\x30\x39\
+\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\
+\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\
+\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\
+\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\
+\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
+\x76\x67\x3e\
+\x00\x00\x03\x46\
+\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -1384,107 +2166,43 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
-\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
-\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
-\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
-\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
-\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
-\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
-\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
-\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
-\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
-\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
-\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
-\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
-\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
-\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
-\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
-\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
-\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
-\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
-\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
-\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
-\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x04\x4e\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
+\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
+\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
+\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
+\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
+\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
+\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
+\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
+\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
+\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
+\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
+\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
+\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
+\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
+\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
+\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
+\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
+\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x00\x6c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\x31\
-\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\x39\x4c\
-\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x4c\x20\x34\x30\x2e\x36\x37\x39\x34\x20\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x4c\x20\x33\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\
-\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\
-\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\
-\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\
-\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\
-\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
-\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
-\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
-\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\x35\x27\x20\x63\
-\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\x69\x6c\x6c\x3d\
-\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\
-\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\
-\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\
-\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\
-\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\x36\x27\x20\x63\
-\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\x20\x66\x69\x6c\
-\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\
-\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\
-\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\x36\x39\
-\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\
-\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\x35\x32\x33\x27\
-\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\x32\x27\x20\x66\
-\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
-\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\x2e\x36\x37\x39\
-\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\
-\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
-\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
-\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
+\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
+\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
+\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x02\xf7\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1535,57 +2253,6 @@
 \x33\x38\x2e\x33\x2c\x34\x33\x34\x2e\x33\x2c\x32\x32\x34\x2c\x34\
 \x31\x37\x2e\x34\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\
 \x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x0c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
-\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
-\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
-\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
-\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
-\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
-\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
-\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
-\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
-\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
-\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
-\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
-\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
-\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
-\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
-\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
-\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
-\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
-\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
-\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
-\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
-\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
-\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
-\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
-\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x03\xf5\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1652,576 +2319,6 @@
 \x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\
 \x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\
 \x67\x3e\x0d\x0a\
-\x00\x00\x03\x22\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\
-\x20\x63\x79\x3d\x22\x32\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\
-\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
-\x34\x30\x2c\x39\x36\x68\x2d\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\
-\x48\x31\x39\x32\x6c\x2d\x33\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\
-\x32\x32\x2e\x30\x39\x32\x2c\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\
-\x30\x38\x2d\x34\x30\x2c\x34\x30\x76\x32\x37\x32\x63\x30\x2c\x32\
-\x32\x2e\x30\x39\x32\x2c\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\
-\x34\x30\x2c\x34\x30\x68\x33\x36\x38\x63\x32\x32\x2e\x30\x39\x32\
-\x2c\x30\x2c\x34\x30\x2d\x31\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\
-\x34\x30\x0d\x0a\x09\x09\x56\x31\x33\x36\x43\x34\x38\x30\x2c\x31\
-\x31\x33\x2e\x39\x30\x38\x2c\x34\x36\x32\x2e\x30\x39\x32\x2c\x39\
-\x36\x2c\x34\x34\x30\x2c\x39\x36\x7a\x20\x4d\x32\x35\x36\x2c\x33\
-\x39\x32\x63\x2d\x36\x31\x2e\x38\x35\x35\x2c\x30\x2d\x31\x31\x32\
-\x2d\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2d\x31\x31\x32\x73\
-\x35\x30\x2e\x31\x34\x35\x2d\x31\x31\x32\x2c\x31\x31\x32\x2d\x31\
-\x31\x32\x73\x31\x31\x32\x2c\x35\x30\x2e\x31\x34\x35\x2c\x31\x31\
-\x32\x2c\x31\x31\x32\x0d\x0a\x09\x09\x53\x33\x31\x37\x2e\x38\x35\
-\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\x2c\x33\x39\x32\x7a\x22\x2f\
-\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
-\x0a\
-\x00\x00\x02\xb7\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
-\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
-\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
-\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
-\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
-\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
-\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
-\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x79\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
-\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
-\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
-\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
-\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
-\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
-\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
-\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xeb\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
-\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
-\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
-\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
-\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
-\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
-\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
-\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
-\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
-\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
-\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
-\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
-\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
-\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
-\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
-\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
-\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
-\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
-\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
-\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
-\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
-\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
-\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
-\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
-\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
-\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
-\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
-\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
-\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
-\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x01\xdd\
-\x00\
-\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
-\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
-\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
-\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
-\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
-\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
-\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
-\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
-\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
-\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
-\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
-\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
-\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
-\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
-\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
-\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
-\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
-\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
-\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
-\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
-\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
-\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
-\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
-\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
-\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
-\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
-\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
-\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
-\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
-\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
-\x00\x00\x02\x7f\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
-\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
-\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
-\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
-\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
-\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
-\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
-\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
-\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x00\x6c\
-\x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
-\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
-\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
-\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x04\x64\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
-\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
-\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
-\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
-\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
-\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
-\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
-\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
-\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
-\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
-\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
-\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
-\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
-\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
-\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
-\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
-\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
-\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
-\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
-\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
-\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
-\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
-\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
-\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
-\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
-\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
-\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
-\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
-\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
-\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
-\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
-\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
-\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
-\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
-\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
-\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
-\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
-\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
-\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x02\xa1\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
-\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
-\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
-\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
-\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
-\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
-\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
-\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
-\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
-\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
-\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
-\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
-\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
-\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
-\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
-\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
-\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
-\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\
-\x00\x00\x04\x1c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
-\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
-\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
-\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
-\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
-\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
-\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
-\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
-\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
-\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
-\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
-\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
-\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
-\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
-\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
-\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
-\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
-\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
-\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
-\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
-\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
-\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x05\xca\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
-\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
-\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
-\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
-\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
-\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
-\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
-\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
-\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
-\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
-\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
-\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
-\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
-\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
-\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
-\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
-\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
-\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
-\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
-\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
-\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
-\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
-\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
-\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
-\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
-\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
-\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
-\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
-\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
-\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
-\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
-\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
-\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
-\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
-\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
-\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
-\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
-\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
-\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
-\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
-\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
-\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
-\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
-\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
-\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
-\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
-\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
-\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
-\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
-\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
-\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
-\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
-\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
-\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
-\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
-\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
-\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
-\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
-\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
-\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x03\x7c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
@@ -2280,103 +2377,6 @@
 \x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\
 \x23\x30\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
 \x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x01\x1c\
-\x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
-\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
-\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
-\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
-\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
-\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
-\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
-\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
-\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
-\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
-\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x04\xa2\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
-\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
-\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
-\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
-\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
-\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
-\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
-\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
-\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
-\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
-\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
-\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
-\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
-\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
-\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
-\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
-\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
-\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
-\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
-\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
-\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
-\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
-\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
-\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
-\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
-\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
-\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
-\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
-\x3e\
 "
 
 qt_resource_name = b"\
@@ -2384,235 +2384,235 @@
 \x00\x6f\xa6\x53\
 \x00\x69\
 \x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x1d\
-\x06\xec\xf4\xc7\
+\x00\x1b\
+\x0e\xb5\x68\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
+\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x08\x89\xfa\x47\
 \x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x09\
+\x0b\x9e\x89\x07\
+\x00\x63\
+\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x12\
+\x08\x79\x97\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
+\x00\x0d\
+\x05\x20\xce\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x07\x0e\xc4\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x0a\x2d\x1b\xc7\
 \x00\x63\
 \x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x16\
+\x01\xfb\x76\x27\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
+\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0e\
+\x05\xed\x38\x67\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x11\
+\x0c\xa7\xc7\x47\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\
 \x00\x0a\
 \x0f\x68\x53\xe7\
 \x00\x61\
 \x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x09\x76\x60\xc7\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x06\xe3\xaf\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x13\
+\x03\x24\x75\x47\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x65\x00\x66\x00\x72\x00\x65\x00\x73\x00\x68\x00\x2e\x00\x73\
+\x00\x76\x00\x67\
+\x00\x10\
+\x08\xe4\xaf\x47\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x0c\x57\x65\x47\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x17\
 \x06\xc6\x02\xa7\
 \x00\x74\
 \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2d\x00\x73\x00\x74\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x64\x00\x2d\
 \x00\x31\x00\x35\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0a\
-\x01\xca\x6d\x87\
-\x00\x62\
-\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1b\
-\x0e\xb5\x68\xe7\
+\x00\x1c\
+\x08\x8a\x79\x07\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
-\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x08\xc8\x55\xe7\
+\x00\x73\
+\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x0b\x07\x57\xa7\
+\x00\x65\
+\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x19\
+\x0a\x43\x45\xc7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\
+\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x12\
+\x0c\x5e\xd4\xa7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
+\x00\x17\
+\x07\x87\x48\x27\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\
+\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1d\
+\x06\xec\xf4\xc7\
+\x00\x63\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x11\
 \x01\x60\xbc\x47\
 \x00\x73\
 \x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \
-\x00\x14\
-\x0f\xa5\xe0\xc7\
-\x00\x6d\
-\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
-\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x05\xa8\x57\x87\
-\x00\x63\
-\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x13\
-\x03\x24\x75\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x65\x00\x66\x00\x72\x00\x65\x00\x73\x00\x68\x00\x2e\x00\x73\
-\x00\x76\x00\x67\
+\x00\x07\
+\x0c\xf8\x5a\x07\
+\x00\x65\
+\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x12\
 \x08\x55\xef\xc7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
-\x00\x0f\
-\x04\xf2\xa7\x87\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x04\xb2\x21\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x16\
-\x01\xfb\x76\x27\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
-\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x0c\xf7\x55\x87\
+\x00\x74\
+\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x19\
 \x0f\xef\x7b\xe7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x70\x00\x61\x00\x6c\
 \x00\x65\x00\x74\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x19\
-\x0a\x43\x45\xc7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\
-\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x17\
-\x07\x87\x48\x27\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\
-\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x10\
 \x04\xa9\x22\xc7\
 \x00\x66\
 \x00\x69\x00\x6c\x00\x6c\x00\x65\x00\x64\x00\x62\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x07\x0e\xc4\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0e\
-\x05\xed\x38\x67\
-\x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1c\
-\x08\x8a\x79\x07\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
-\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0b\x07\x57\xa7\
-\x00\x65\
-\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x11\
-\x0c\xa7\xc7\x47\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\
-\x00\x0e\
-\x0f\xcb\xd5\xc7\
-\x00\x70\
-\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x09\
-\x0b\x9e\x89\x07\
-\x00\x63\
-\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1c\
-\x04\x66\xe1\x67\
-\x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x12\
-\x08\x79\x97\xe7\
+\x04\xb2\x21\x47\
 \x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
+\x00\x08\
+\x08\xf7\x57\x07\
+\x00\x67\
+\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x11\
 \x0c\xdb\x38\xe7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \
-\x00\x10\
-\x08\xe4\xaf\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x07\
-\x0c\xf8\x5a\x07\
-\x00\x65\
-\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x04\xf2\xa7\x87\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x14\
+\x0f\xa5\xe0\xc7\
+\x00\x6d\
+\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
+\x00\x73\x00\x76\x00\x67\
 \x00\x08\
-\x08\xf7\x57\x07\
-\x00\x67\
-\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x0c\x57\x65\x47\
-\x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x05\xa8\x57\x87\
+\x00\x63\
+\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0a\
+\x01\xca\x6d\x87\
+\x00\x62\
+\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x09\x76\x60\xc7\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x15\
 \x0f\xc4\x59\xe7\
 \x00\x73\
 \x00\x75\x00\x62\x00\x64\x00\x69\x00\x72\x00\x65\x00\x63\x00\x74\x00\x6f\x00\x72\x00\x79\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\
 \x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x0c\x5e\xd4\xa7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x08\
-\x08\xc8\x55\xe7\
-\x00\x73\
-\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x08\x89\xfa\x47\
+\x00\x0e\
+\x0f\xcb\xd5\xc7\
+\x00\x70\
+\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1c\
+\x04\x66\xe1\x67\
 \x00\x63\
-\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x06\xe3\xaf\xe7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x0a\xc8\x62\x67\
 \x00\x63\
 \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0c\xf7\x55\x87\
-\x00\x74\
-\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0d\
-\x05\x20\xce\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 "
 
 qt_resource_struct_v1 = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
+\x00\x00\x03\xba\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x94\
+\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x42\
+\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x19\x83\
+\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x5e\
+\x00\x00\x05\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x86\xcf\
+\x00\x00\x04\x6e\x00\x01\x00\x00\x00\x01\x00\x00\x62\xf8\
+\x00\x00\x04\x94\x00\x00\x00\x00\x00\x01\x00\x00\x65\x1d\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xf3\
+\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xa6\
+\x00\x00\x05\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x75\x94\
+\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x04\
+\x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x32\x88\
+\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x24\x90\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xaa\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x12\x4c\
+\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x47\x54\
+\x00\x00\x03\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x07\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x80\
+\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x50\
+\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x56\
+\x00\x00\x02\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x56\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x88\
+\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x00\x68\x57\
+\x00\x00\x05\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x80\x1a\
+\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\
+\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6b\
+\x00\x00\x06\x32\x00\x00\x00\x00\x00\x01\x00\x00\x8a\xc8\
+\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x00\x3c\xfb\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x70\
+\x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x30\x05\
+\x00\x00\x03\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x42\xec\
+\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xd1\
+\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x38\
+\x00\x00\x04\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xad\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x56\x18\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
+\x00\x00\x01\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x23\x23\
+\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xcc\
+\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x83\x64\
+\x00\x00\x05\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x83\xd4\
+\x00\x00\x04\x36\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xcd\
 "
 
 qt_resource_struct_v2 = b"\
@@ -2620,88 +2620,88 @@
 \x00\x00\x00\x00\x00\x00\x00\x00\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
 \x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x03\xba\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x94\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x42\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x19\x83\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x5e\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x05\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x86\xcf\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\x6e\x00\x01\x00\x00\x00\x01\x00\x00\x62\xf8\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x04\x94\x00\x00\x00\x00\x00\x01\x00\x00\x65\x1d\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xf3\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xa6\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x75\x94\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x04\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x32\x88\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x24\x90\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xaa\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x12\x4c\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x47\x54\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x07\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x80\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x50\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x56\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x56\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x88\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x00\x68\x57\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x80\x1a\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6b\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x06\x32\x00\x00\x00\x00\x00\x01\x00\x00\x8a\xc8\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x00\x3c\xfb\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x70\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x30\x05\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x03\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x42\xec\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xd1\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x38\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x04\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xad\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x56\x18\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x71\x14\x51\x77\x37\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x01\x77\xb9\x14\x85\x4a\
+\x00\x00\x01\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x23\x23\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
+\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xcc\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x83\x64\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x05\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x83\xd4\
+\x00\x00\x01\x77\xb9\x14\x85\x4b\
+\x00\x00\x04\x36\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xcd\
+\x00\x00\x01\x77\xb9\x14\x85\x49\
 "
 
 qt_version = [int(v) for v in QtCore.qVersion().split('.')]

Modified: trunk/Master/texmf-dist/asymptote/GUI/setup.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/setup.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/setup.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,6 +8,6 @@
     version=xasyVersion.xasyVersion,
     author="Supakorn Rassameemasmuang, Orest Shardt, and John C. Bowman",
     description="User interface for Asymptote, a vector graphics language", 
-    url="http://asymptote.sourceforge.net",
+    url="https://asymptote.sourceforge.io",
     download_url="https://sourceforge.net/projects/asymptote/"
 )

Modified: trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/xasy2asy.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -716,7 +716,7 @@
             image = Qg.QImage(file)
         elif fileformat == 'svg':
             if containsClip:
-                image = xs.SvgObject(file)
+                image = xs.SvgObject(self.asyengine.tempDirName+file)
             else:
                 image = Qs.QSvgRenderer(file)
                 assert image.isValid()
@@ -826,7 +826,7 @@
             for i in range(len(imageInfos)):
                 box, key, localCount, useClip = imageInfos[i]
                 l, b, r, t = [float(a) for a in box.split()]
-                name = "{:s}_{:d}.{:s}".format(self.asyengine.tempDirName, i, fileformat)
+                name = "_{:d}.{:s}".format(i, fileformat)
 
                 self.imageHandleQueue.put((name, fileformat, (l, -t, r, -b), i, key, localCount, useClip))
 
@@ -873,12 +873,15 @@
 
             n += 1
 
-        if text == "Error\n":
-            self.imageHandleQueue.put(("ERROR", fin.readline()))
+        if raw_text != "Error\n":
+            if text == "Error\n":
+                self.imageHandleQueue.put(("ERROR", fin.readline()))
+            else:
+                render()
+
+            self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
         else:
-            render()
-
-        self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
+            self.asy2psmap = identity()
         self.imageHandleQueue.put((None,))
         self.asyfied = True
 

Modified: trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py
===================================================================
--- trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/GUI/xasyVersion.py	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +1,2 @@
 #!/usr/bin/env python3
-xasyVersion = "2.65"
+xasyVersion = "2.69"

Modified: trunk/Master/texmf-dist/asymptote/animation.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/animation.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/animation.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -30,7 +30,7 @@
   string prefix;
   bool global; // If true, use a global scaling for all frames; this requires
   // extra memory since the actual shipout is deferred until all frames have
-  // been generated. 
+  // been generated.
 
   void operator init(string prefix="", bool global=true) {
     prefix=replace(stripdirectory(outprefix(prefix))," ","_");
@@ -37,7 +37,7 @@
     this.prefix=prefix;
     this.global=global;
   }
-  
+
   string basename(string prefix=stripextension(prefix)) {
     return "_"+prefix;
   }
@@ -57,7 +57,7 @@
     plain.shipout(name,f,format=format,view=false);
     files.push(name+"."+format);
   }
-  
+
   void add(picture pic=currentpicture, enclosure enclosure=NoBox) {
     if(global) {
       ++index;
@@ -64,7 +64,7 @@
       pictures.push(pic.copy());
     } else this.shipout(enclosure(pic.fit()));
   }
-  
+
   void purge(bool keep=settings.keep) {
     if(!keep) {
       for(int i=0; i < files.length; ++i)
@@ -130,7 +130,7 @@
     return s;
   }
 
-  bool pdflatex() 
+  bool pdflatex()
   {
     return latex() && pdf();
   }
@@ -143,13 +143,13 @@
     if(!pdflatex())
       abort("inline pdf animations require -tex pdflatex or -tex xelatex");
     if(settings.outformat != "") settings.outformat="pdf";
-    
+
     string filename=basename();
     string pdfname=filename+".pdf";
 
     if(global)
       export(filename,enclosure,multipage=multipage);
-    
+
     if(!keep) {
       exitfcn currentexitfunction=atexit();
       void exitfunction() {

Modified: trunk/Master/texmf-dist/asymptote/asy-keywords.el
===================================================================
--- trunk/Master/texmf-dist/asymptote/asy-keywords.el	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/asy-keywords.el	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 ;; This file is automatically generated by asy-list.pl.
 ;; Changes will be overwritten.
 ;;
-(defvar asy-keywords-version "2.65")
+(defvar asy-keywords-version "2.69")
 
 (defvar asy-keyword-name '(
 and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
@@ -11,7 +11,7 @@
 Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real revolution scaleT scientific segment side simplex slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
 
 (defvar asy-function-name '(
-AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asyc!
 ode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX d!
 rawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p!
  logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo nosetpagesize notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondary!
 X secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexPhase1 simplexPhase2 simplexStandard simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
+AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy!
  asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexB!
 oxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location l!
 og log10 log1p logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map mapArray mapTemplate margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search sea!
 rchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube type uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
 
 (defvar asy-variable-name '(
-Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red RedOrang!
 e RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellip!
 senodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingzero simp!
 lex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
+Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red !
 RedOrange RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFu!
 zz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingz!
 ero simplex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))

Modified: trunk/Master/texmf-dist/asymptote/asy-mode.el
===================================================================
--- trunk/Master/texmf-dist/asymptote/asy-mode.el	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/asy-mode.el	2021-02-24 18:33:44 UTC (rev 57876)
@@ -102,7 +102,7 @@
 
 This package seems to work with XEmacs 21.4 but not all the features are available (in particular syntax highlighting).
 
-Report bugs to http://asymptote.sourceforge.net
+Report bugs to https://github.com/vectorgraphics/asymptote/issues
 
 Some variables can be customized: M-x customize-group <RET> asymptote <RET>."
 

Modified: trunk/Master/texmf-dist/asymptote/babel.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/babel.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/babel.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,4 +1,4 @@
-void babel(string s) 
+void babel(string s)
 {
   usepackage("babel",s);
 }

Modified: trunk/Master/texmf-dist/asymptote/bezulate.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/bezulate.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/bezulate.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 // Bezier triangulation routines written by Orest Shardt, 2008.
 
-private real fuzz=sqrtEpsilon;
+private real fuzz=1e-6;
 real duplicateFuzz=1e-3; // Work around font errors.
 real maxrefinements=10;
 
@@ -106,29 +106,29 @@
       //if(direction == 0) // Try a random direction
       //  direction=expi(2pi*unitrand());
       //pair start=point(inners[curveIndex],0);
-      
+
       // find shortest distance between a node on the inner curve and a node
       // on the outer curve
-      
+
       real mindist = d;
       int inner_i = 0;
       int outer_i = 0;
       for(int ni = 0; ni < length(inners[curveIndex]); ++ni)
-      {
+        {
           for(int no = 0; no < length(outer); ++no)
-          {
+            {
               real dist = abs(point(inners[curveIndex],ni)-point(outer,no));
               if(dist < mindist)
-              {
+                {
                   inner_i = ni;
                   outer_i = no;
                   mindist = dist;
-              }
-          }
-      }
+                }
+            }
+        }
       pair start=point(inners[curveIndex],inner_i);
-      pair end = point(outer,outer_i);  
-      
+      pair end = point(outer,outer_i);
+
       // find first intersection of line segment with outer curve
       //real[][] ints=intersections(start,start+d*direction,outer);
       real[][] ints=intersections(start,end,outer);
@@ -140,7 +140,7 @@
       real earliestTime=1;
       for(int j=0; j < inners.length; ++j) {
         real[][] ints=intersections(end,start,inners[j]);
-        
+
         if(ints.length > 0 && ints[0][0] < earliestTime) {
           earliestTime=ints[0][0]; // time on end--start
           starttime=ints[0][1]; // time on inner curve
@@ -148,8 +148,8 @@
         }
       }
       start=point(inners[curveIndex],starttime);
-      
-      
+
+
       bool found_forward = false;
       real timeoffset_forward = 2;
       path portion_forward;
@@ -162,7 +162,7 @@
                               point(outer,endtime+timeoffset_forward)) == 2)
           {
             portion_forward = subpath(outer,endtime,endtime+timeoffset_forward)--start--cycle;
-            
+
             found_forward=true;
             // check if an inner curve is inside the portion
             for(int k = 0; found_forward && k < inners.length; ++k)
@@ -173,7 +173,7 @@
               }
           }
       }
-      
+
       bool found_backward = false;
       real timeoffset_backward = -2;
       path portion_backward;
@@ -197,29 +197,29 @@
       real timeoffset;
       path portion;
       if(found_forward && !found_backward)
-      {
-        timeoffset = timeoffset_forward;
-        portion = portion_forward;
-      }
-      else if(found_backward && !found_forward)
-      {
-        timeoffset = timeoffset_backward;
-        portion = portion_backward;
-      }
-      else // assert handles case of neither found
-      {
-        if(timeoffset_forward > -timeoffset_backward)
         {
           timeoffset = timeoffset_forward;
           portion = portion_forward;
         }
-        else
+      else if(found_backward && !found_forward)
         {
           timeoffset = timeoffset_backward;
           portion = portion_backward;
-         }
-      }
-      
+        }
+      else // assert handles case of neither found
+        {
+          if(timeoffset_forward > -timeoffset_backward)
+            {
+              timeoffset = timeoffset_forward;
+              portion = portion_forward;
+            }
+          else
+            {
+              timeoffset = timeoffset_backward;
+              portion = portion_backward;
+            }
+        }
+
       endtime=min(endtime,endtime+timeoffset);
       // or go from timeoffset+timeoffset_backward to timeoffset+timeoffset_forward?
       timeoffset=abs(timeoffset);

Modified: trunk/Master/texmf-dist/asymptote/binarytree.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/binarytree.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/binarytree.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -48,8 +48,8 @@
   int right_span,total_right_span;
   void update_spans();
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the right child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the right child
   // (condensed mode)
   int getTotalRightSpan() {
     if(spans_calculated == false) {
@@ -59,8 +59,8 @@
     return total_right_span;
   }
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the left child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the left child
   // (condensed mode)
   int getTotalLeftSpan() {
     if(spans_calculated == false) {
@@ -87,27 +87,27 @@
     return left_span;
   }
 
-  // Update all span figures for this node. 
+  // Update all span figures for this node.
   // condensed mode)
   update_spans=new void() {
-    if(spans_calculated == true)
-      return;
+                           if(spans_calculated == true)
+                             return;
 
-    left_span=0;
-    total_left_span=0;
-    right_span=0;
-    total_right_span=0;
+                           left_span=0;
+                           total_left_span=0;
+                           right_span=0;
+                           total_right_span=0;
 
-    if(left != null) {
-      left_span=left.getTotalRightSpan()+1;
-      total_left_span=left_span+left.getTotalLeftSpan();
-    }
+                           if(left != null) {
+                             left_span=left.getTotalRightSpan()+1;
+                             total_left_span=left_span+left.getTotalLeftSpan();
+                           }
 
-    if(right != null) {
-      right_span=right.getTotalLeftSpan()+1;
-      total_right_span=right_span+right.getTotalRightSpan();
-    }
-    spans_calculated=true;
+                           if(right != null) {
+                             right_span=right.getTotalLeftSpan()+1;
+                             total_right_span=right_span+right.getTotalRightSpan();
+                           }
+                           spans_calculated=true;
   };
 
   // set the left child of this node
@@ -134,20 +134,20 @@
     else
       return parent.getLevel()+1;
   }
-        
+
   // set the children of this binarytreeNode
   void setChildren(binarytreeNode left, binarytreeNode right) {
     setLeft(left);
     setRight(right);
   }
-        
-  // create a new binarytreeNode with key <key> 
+
+  // create a new binarytreeNode with key <key>
   static binarytreeNode binarytreeNode(int key) {
     binarytreeNode toReturn=new binarytreeNode;
     toReturn.key=key;
     return toReturn;
   }
-        
+
   // returns the height of the subtree rooted at this node.
   int getHeight() {
     if(left == null && right == null)
@@ -156,7 +156,7 @@
       return right.getHeight()+1;
     if(right == null)
       return left.getHeight()+1;
-                
+
     return max(left.getHeight(),right.getHeight())+1;
   }
 }
@@ -175,12 +175,12 @@
             int height, real minDist, real levelDist, real nodeDiameter,
             pen p=currentpen, bool condensed=false) {
   Label label=Label(math((string) node.key),pos);
-        
-  binarytreeNode left=node.left;        
+
+  binarytreeNode left=node.left;
   binarytreeNode right=node.right;
 
   // return the distance for two nodes at the given <level> when the
-  // containing tree has height <height> 
+  // containing tree has height <height>
   // and the minimal distance between two nodes is <minDist> .
   real getDistance(int level, int height, real minDist) {
     return(nodeDiameter+minDist)*2^(height-level);
@@ -205,15 +205,15 @@
   // arrow.
   void deferredDrawNodeConnection(pair parentPos, pair childPos) {
     pic.add(new void(frame f, transform t) {
-        pair start,end; 
-        // calculate connection path 
-        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));  
-        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);  
-        draw(f,PenMargin(arr,p).g,p,Arrow(5));  
-      }); 
+        pair start,end;
+        // calculate connection path
+        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));
+        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);
+        draw(f,PenMargin(arr,p).g,p,Arrow(5));
+      });
     pic.addPoint(parentPos);
     pic.addPoint(childPos);
-  } 
+  }
 
   if(left != null) {
     pair childPos;
@@ -238,13 +238,13 @@
     draw(pic,right,childPos,height,minDist,levelDist,nodeDiameter,p,condensed);
     deferredDrawNodeConnection(pos,childPos);
   }
-        
+
   picture obj;
   draw(obj,circle((0,0),nodeDiameter/2),p);
   label(obj,label,(0,0),p);
-        
+
   add(pic,obj,pos);
-        
+
   return label;
 }
 
@@ -270,18 +270,18 @@
 struct binarytree {
   binarytreeNode root;
   int[] keys;
-        
+
   // add the given <key> to the tree by searching for its place and
   // inserting it there.
   void addKey(int key) {
     binarytreeNode newNode=binarytreeNode(key);
-                
+
     if(root == null) {
       root=newNode;
       keys.push(key);
-      return; 
+      return;
     }
-                
+
     binarytreeNode n=root;
     while(n != null) {
       if(key < n.key) {
@@ -303,7 +303,7 @@
       }
     }
   }
-        
+
   // return the height of the tree
   int getHeight() {
     if(root == null)
@@ -311,7 +311,7 @@
     else
       return root.getHeight();
   }
-        
+
   // add all given keys to the tree sequentially
   void addSearchKeys(int[] keys) {
     for(int i=0; i < keys.length; ++i) {
@@ -321,7 +321,7 @@
         addKey(key);
     }
   }
-        
+
   binarytreeNode build(key[] keys, int[] ind) {
     if(ind[0] >= keys.length) return null;
     key k=keys[ind[0]];
@@ -369,9 +369,9 @@
           pen p=currentpen, bool condensed=false)
 {
   int[] keys=tree.getKeys();
-        
+
   // calculate the node diameter so that all keys fit into it
-  frame f; 
+  frame f;
   for(int i=0; i < keys.length; ++i)
     label(f,math(string(keys[i])),p);
 

Modified: trunk/Master/texmf-dist/asymptote/bsp.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/bsp.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/bsp.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -33,13 +33,13 @@
 
 picture operator cast(face f) {return f.pic;}
 face operator cast(path3 p) {return face(p);}
-  
+
 struct line {
   triple point;
   triple dir;
 }
 
-private line intersection(face a, face b) 
+private line intersection(face a, face b)
 {
   line L;
   L.point=intersectionpoint(a.normal,a.point,b.normal,b.point);
@@ -49,12 +49,12 @@
 
 struct half {
   pair[] left,right;
-  
+
   // Sort the points in the pair array z according to whether they lie on the
   // left or right side of the line L in the direction dir passing through P.
   // Points exactly on L are considered to be on the right side.
   // Also push any points of intersection of L with the path operator --(... z)
-  // onto each of the arrays left and right. 
+  // onto each of the arrays left and right.
   void operator init(pair dir, pair P ... pair[] z) {
     pair lastz;
     pair invdir=dir != 0 ? 1/dir : 0;
@@ -73,7 +73,7 @@
     }
   }
 }
-  
+
 struct splitface {
   face back,front;
 }
@@ -84,7 +84,7 @@
   splitface S;
 
   void nointersection() {
-    if(abs(dot(a.point-P.camera,a.normal)) >= 
+    if(abs(dot(a.point-P.camera,a.normal)) >=
        abs(dot(cut.point-P.camera,cut.normal))) {
       S.back=a;
       S.front=null;
@@ -113,7 +113,7 @@
     nointersection();
     return S;
   }
-    
+
   pair point=a.t*project(L.point,P);
   pair dir=a.t*project(L.point+L.dir,P)-point;
   pair invdir=dir != 0 ? 1/dir : 0;
@@ -122,7 +122,7 @@
 
   real t=intersect(apoint,P.camera,cut.normal,cut.point);
   bool rightfront=left ^ (t <= 0 || t >= 1);
-  
+
   face back=a, front=a.copy();
   pair max=max(a.fit);
   pair min=min(a.fit);
@@ -151,7 +151,7 @@
   bsp back;
   bsp front;
   face node;
-  
+
   // Construct the bsp.
   void operator init(face[] faces, projection P) {
     if(faces.length != 0) {
@@ -166,7 +166,7 @@
       this.back=bsp(back,P);
     }
   }
-  
+
   // Draw from back to front.
   void add(frame f) {
     if(back != null) back.add(f);
@@ -183,22 +183,22 @@
   face[] Faces=new face[n];
   for(int i=0; i < n; ++i)
     Faces[i]=faces[i].copy();
-  
+
   pic.add(new void (frame f, transform t, transform T,
-                                pair m, pair M) {
-                        // Fit all of the pictures so we know their exact sizes.
-                        face[] faces=new face[n];
-                        for(int i=0; i < n; ++i) {
-                          faces[i]=Faces[i].copy();
-                          face F=faces[i];
-                          F.t=t*T*F.pic.T;
-                          F.fit=F.pic.fit(t,T*F.pic.T,m,M);
-                        }
-    
-                        bsp bsp=bsp(faces,P);
-                        if(bsp != null) bsp.add(f);
+                    pair m, pair M) {
+            // Fit all of the pictures so we know their exact sizes.
+            face[] faces=new face[n];
+            for(int i=0; i < n; ++i) {
+              faces[i]=Faces[i].copy();
+              face F=faces[i];
+              F.t=t*T*F.pic.T;
+              F.fit=F.pic.fit(t,T*F.pic.T,m,M);
+            }
+
+            bsp bsp=bsp(faces,P);
+            if(bsp != null) bsp.add(f);
           });
-    
+
   for(int i=0; i < n; ++i) {
     picture F=Faces[i].pic;
     pic.userBox3(F.userMin3(), F.userMax3());

Modified: trunk/Master/texmf-dist/asymptote/colormap.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/colormap.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/colormap.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,7 +10,7 @@
 //    pen[] Palette = wistia.palette()
 //
 // There are two types of palettes. For a complete list see below:
-// 
+//
 // 1) The segmented palettes can be used as
 //      <name>.palette(int NColors=256, real gamma=1.)
 //         NColors are the number of colors in the palette
@@ -19,7 +19,7 @@
 // 2) The listed palettes can only be used as
 //      <name>.palette()
 //
-// Both functions return pen[] that can be used as a palette in the 
+// Both functions return pen[] that can be used as a palette in the
 // module palette.
 
 // list of palettes
@@ -112,7 +112,7 @@
 // SOURCE CODE
 //
 private real[] makeMappingArray(int N, triple[] data, real gamma=1.) {
-  real[] x; 
+  real[] x;
   real[] y0;
   real[] y1;
 
@@ -121,13 +121,13 @@
     y0.push(data[i].y);
     y1.push(data[i].z);
   };
-  
+
   x = x*(N-1);
-  real[] lut = new real[N]; 
+  real[] lut = new real[N];
   real[] xind = (N - 1) * uniform(0, 1, N-1) ** gamma;
   int[] ind = map(new int(real xi) {return search(x, xi);}, xind);
   ind = ind[1:N-1]; // note that the index is shifted from python
-  
+
   real[] dist = (xind[1:N-1] - x[ind])/(x[ind+1] - x[ind]);
 
   lut[1:N-1] = dist * (y0[ind+1] - y1[ind]) + y1[ind];
@@ -153,9 +153,9 @@
     real[] green = makeMappingArray(NColors, this.g, gamma);
     real[] blue  = makeMappingArray(NColors, this.b, gamma);
 
-    pen[] pal = 
-      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);}, 
-        NColors);
+    pen[] pal =
+      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);},
+               NColors);
 
     return pal;
   }
@@ -174,3717 +174,3717 @@
 // DATA
 //
 list_data Accent = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
-  rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
-  rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
-  rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
-  rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
+      rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
+      rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
+      rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
+      rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data Blues = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
-  rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
-  rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
-  rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
-  rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
-});
+    rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
+      rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
+      rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
+      rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
+      rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
+      });
 
 
 list_data BrBG = list_data(new pen[] {
-  rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
-  rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
-  rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
-  rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
-  rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
-  rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
-  rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
-  rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
-  rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
-  rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
-  rgb (0.0, 0.23529411764705882, 0.18823529411764706)
-});
+    rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
+      rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
+      rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
+      rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
+      rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
+      rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
+      rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
+      rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
+      rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
+      rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
+      rgb (0.0, 0.23529411764705882, 0.18823529411764706)
+      });
 
 
 list_data BuGn = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
-  rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
-  rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
-  rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
-  rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
+      rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
+      rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
+      rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
+      rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data BuPu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
-  rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
-  rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
-  rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
-  rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
-  rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
-  rgb (0.30196078431372547, 0.0, 0.29411764705882354)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
+      rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
+      rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
+      rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
+      rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
+      rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
+      rgb (0.30196078431372547, 0.0, 0.29411764705882354)
+      });
 
 
 seg_data CMRmap = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.3, 0.3) ,
-     (0.375, 0.6, 0.6) ,
-     (0.5, 1.0, 1.0) ,
-     (0.625, 0.9, 0.9) ,
-     (0.75, 0.9, 0.9) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.15, 0.15) ,
-     (0.375, 0.2, 0.2) ,
-     (0.5, 0.25, 0.25) ,
-     (0.625, 0.5, 0.5) ,
-     (0.75, 0.75, 0.75) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.5, 0.5) ,
-     (0.25, 0.75, 0.75) ,
-     (0.375, 0.5, 0.5) ,
-     (0.5, 0.15, 0.15) ,
-     (0.625, 0.0, 0.0) ,
-     (0.75, 0.1, 0.1) ,
-     (0.875, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.3, 0.3) ,
+                               (0.375, 0.6, 0.6) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.625, 0.9, 0.9) ,
+                               (0.75, 0.9, 0.9) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.15, 0.15) ,
+                               (0.375, 0.2, 0.2) ,
+                               (0.5, 0.25, 0.25) ,
+                               (0.625, 0.5, 0.5) ,
+                               (0.75, 0.75, 0.75) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.5, 0.5) ,
+                               (0.25, 0.75, 0.75) ,
+                               (0.375, 0.5, 0.5) ,
+                               (0.5, 0.15, 0.15) ,
+                               (0.625, 0.0, 0.0) ,
+                               (0.75, 0.1, 0.1) ,
+                               (0.875, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               }
+                           );
 
 
 list_data Dark2 = list_data(new pen[] {
-  rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
-  rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
-  rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
-  rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
-  rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
+      rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
+      rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
+      rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
+      rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data GnBu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
-  rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
-  rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
-  rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
-  rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
-  rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
+      rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
+      rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
+      rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
+      rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
+      rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
+      });
 
 
 list_data Greens = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Greys = list_data(new pen[] {
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
-  rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
-  rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
-  rgb (0.0, 0.0, 0.0)
-});
+    rgb (1.0, 1.0, 1.0) ,
+      rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
+      rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
+      rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
+      rgb (0.0, 0.0, 0.0)
+      });
 
 
 list_data OrRd = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
-  rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
-  rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
-  rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
-  rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
-  rgb (0.7019607843137254, 0.0, 0.0) ,
-  rgb (0.4980392156862745, 0.0, 0.0)
-});
+    rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
+      rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
+      rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
+      rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
+      rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
+      rgb (0.7019607843137254, 0.0, 0.0) ,
+      rgb (0.4980392156862745, 0.0, 0.0)
+      });
 
 
 list_data Oranges = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
-  rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
-  rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
-  rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
-  rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
-});
+    rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
+      rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
+      rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
+      rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
+      rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
+      });
 
 
 list_data PRGn = list_data(new pen[] {
-  rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
-  rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
-  rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
-  rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
-  rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
-  rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
-  rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
+      rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
+      rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
+      rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
+      rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
+      rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
+      rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Paired = list_data(new pen[] {
-  rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
-  rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
-  rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
-  rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
-});
+    rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
+      rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
+      rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
+      rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
+      });
 
 
 list_data Pastel1 = list_data(new pen[] {
-  rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
-  rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
-  rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
-  rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
-});
+    rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
+      rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
+      rgb (1.0, 1.0, 0.8) ,
+      rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
+      rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
+      rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
+      });
 
 
 list_data Pastel2 = list_data(new pen[] {
-  rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
-  rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
-  rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
-  rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
-  rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
-  rgb (0.8, 0.8, 0.8)
-});
+    rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
+      rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
+      rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
+      rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
+      rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
+      rgb (0.8, 0.8, 0.8)
+      });
 
 
 list_data PiYG = list_data(new pen[] {
-  rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
-  rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
-  rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
-  rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
-  rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
-  rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
-  rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
-});
+    rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
+      rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
+      rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
+      rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
+      rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
+      rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
+      rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
+      });
 
 
 list_data PuBuGn = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
-  rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
-  rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
+      rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
+      rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
+      });
 
 
 list_data PuBu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
-  rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
-  rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
+      rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
+      rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
+      });
 
 
 list_data PuOr = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
-  rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
-  rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
-  rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
-  rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
-  rgb (0.17647058823529413, 0.0, 0.29411764705882354)
-});
+    rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
+      rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
+      rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
+      rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
+      rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
+      rgb (0.17647058823529413, 0.0, 0.29411764705882354)
+      });
 
 
 list_data PuRd = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
-  rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
-  rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
-  rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
-  rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
-  rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
-  rgb (0.403921568627451, 0.0, 0.12156862745098039)
-});
+    rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
+      rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
+      rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
+      rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
+      rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
+      rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
+      rgb (0.403921568627451, 0.0, 0.12156862745098039)
+      });
 
 
 list_data Purples = list_data(new pen[] {
-  rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
-  rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
-  rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
-  rgb (0.24705882352941178, 0.0, 0.49019607843137253)
-});
+    rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
+      rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
+      rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
+      rgb (0.24705882352941178, 0.0, 0.49019607843137253)
+      });
 
 
 list_data RdBu = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
-  rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
-  rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
-  rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
-  rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
+      rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
+      rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
+      rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
+      rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
+      });
 
 
 list_data RdGy = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
-  rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
-  rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
-  rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
-  rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
+      rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
+      rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
+      rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
+      rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
+      });
 
 
 list_data RdPu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
-  rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
-  rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
-  rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
-  rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
-  rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
-  rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
-  rgb (0.28627450980392155, 0.0, 0.41568627450980394)
-});
+    rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
+      rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
+      rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
+      rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
+      rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
+      rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
+      rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
+      rgb (0.28627450980392155, 0.0, 0.41568627450980394)
+      });
 
 
 list_data RdYlBu = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
-  rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
-  rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
-  rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
-  rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
+      rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
+      rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
+      rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
+      rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
+      });
 
 
 list_data RdYlGn = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
-  rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
-  rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
-  rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
+      rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
+      rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
+      rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393)
+      });
 
 
 list_data Reds = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
-  rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
-  rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
-  rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
-  rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
-  rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
-  rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
-  rgb (0.403921568627451, 0.0, 0.05098039215686274)
-});
+    rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
+      rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
+      rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
+      rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
+      rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
+      rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
+      rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
+      rgb (0.403921568627451, 0.0, 0.05098039215686274)
+      });
 
 
 list_data Set1 = list_data(new pen[] {
-  rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
-  rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
-  rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (1.0, 1.0, 0.2) ,
-  rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
-  rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
-  rgb (0.6, 0.6, 0.6)
-});
+    rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
+      rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
+      rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (1.0, 1.0, 0.2) ,
+      rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
+      rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
+      rgb (0.6, 0.6, 0.6)
+      });
 
 
 list_data Set2 = list_data(new pen[] {
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
-  rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
-  rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
-  rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
-  rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
-  rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
-  rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
-});
+    rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
+      rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
+      rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
+      rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
+      rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
+      rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
+      rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
+      });
 
 
 list_data Set3 = list_data(new pen[] {
-  rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 0.7019607843137254) ,
-  rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
-  rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
-  rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
-  rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
-  rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
-  rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (1.0, 0.9294117647058824, 0.43529411764705883)
-});
+    rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 0.7019607843137254) ,
+      rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
+      rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
+      rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
+      rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
+      rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
+      rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (1.0, 0.9294117647058824, 0.43529411764705883)
+      });
 
 
 list_data Spectral = list_data(new pen[] {
-  rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
-  rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
-  rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
-  rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
-});
+    rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
+      rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
+      rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
+      rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
+      rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
+      });
 
 
 list_data YlGnBu = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8509803921568627) ,
-  rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
-  rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
-  rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
-  rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
-  rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
-  rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
-  rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
-});
+    rgb (1.0, 1.0, 0.8509803921568627) ,
+      rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
+      rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
+      rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
+      rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
+      rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
+      rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
+      rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
+      });
 
 
 list_data YlGn = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
-  rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
-  rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
-  rgb (0.0, 0.27058823529411763, 0.1607843137254902)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
+      rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
+      rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
+      rgb (0.0, 0.27058823529411763, 0.1607843137254902)
+      });
 
 
 list_data YlOrBr = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
-  rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
-  rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
-  rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
-  rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
-  rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
-  rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
-  rgb (0.4, 0.1450980392156863, 0.02352941176470588)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
+      rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
+      rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
+      rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
+      rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
+      rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
+      rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
+      rgb (0.4, 0.1450980392156863, 0.02352941176470588)
+      });
 
 
 list_data YlOrRd = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
-  rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
-  rgb (0.5019607843137255, 0.0, 0.14901960784313725)
-});
+    rgb (1.0, 1.0, 0.8) ,
+      rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
+      rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
+      rgb (0.5019607843137255, 0.0, 0.14901960784313725)
+      });
 
 
 seg_data autumn = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data binary = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data bone = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.652778, 0.652778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.319444, 0.319444) ,
-     (0.746032, 0.777778, 0.777778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.444444, 0.444444) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (0.746032, 0.652778, 0.652778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.319444, 0.319444) ,
+                             (0.746032, 0.777778, 0.777778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.444444, 0.444444) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data brg = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.0, 1.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.0, 1.0, 0.0)
+      });
 
 
 list_data bwr = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0)
+      });
 
 
 seg_data cool = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 0.0, 0.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 seg_data coolwarm = seg_data(
-  new triple[] {  // red
-     (0.0, 0.2298057, 0.2298057) ,
-     (0.03125, 0.26623388, 0.26623388) ,
-     (0.0625, 0.30386891, 0.30386891) ,
-     (0.09375, 0.342804478, 0.342804478) ,
-     (0.125, 0.38301334, 0.38301334) ,
-     (0.15625, 0.424369608, 0.424369608) ,
-     (0.1875, 0.46666708, 0.46666708) ,
-     (0.21875, 0.509635204, 0.509635204) ,
-     (0.25, 0.552953156, 0.552953156) ,
-     (0.28125, 0.596262162, 0.596262162) ,
-     (0.3125, 0.639176211, 0.639176211) ,
-     (0.34375, 0.681291281, 0.681291281) ,
-     (0.375, 0.722193294, 0.722193294) ,
-     (0.40625, 0.761464949, 0.761464949) ,
-     (0.4375, 0.798691636, 0.798691636) ,
-     (0.46875, 0.833466556, 0.833466556) ,
-     (0.5, 0.865395197, 0.865395197) ,
-     (0.53125, 0.897787179, 0.897787179) ,
-     (0.5625, 0.924127593, 0.924127593) ,
-     (0.59375, 0.944468518, 0.944468518) ,
-     (0.625, 0.958852946, 0.958852946) ,
-     (0.65625, 0.96732803, 0.96732803) ,
-     (0.6875, 0.969954137, 0.969954137) ,
-     (0.71875, 0.966811177, 0.966811177) ,
-     (0.75, 0.958003065, 0.958003065) ,
-     (0.78125, 0.943660866, 0.943660866) ,
-     (0.8125, 0.923944917, 0.923944917) ,
-     (0.84375, 0.89904617, 0.89904617) ,
-     (0.875, 0.869186849, 0.869186849) ,
-     (0.90625, 0.834620542, 0.834620542) ,
-     (0.9375, 0.795631745, 0.795631745) ,
-     (0.96875, 0.752534934, 0.752534934) ,
-     (1.0, 0.705673158, 0.705673158)
-  },
-  new triple[] {  // green
-     (0.0, 0.298717966, 0.298717966) ,
-     (0.03125, 0.353094838, 0.353094838) ,
-     (0.0625, 0.406535296, 0.406535296) ,
-     (0.09375, 0.458757618, 0.458757618) ,
-     (0.125, 0.50941904, 0.50941904) ,
-     (0.15625, 0.558148092, 0.558148092) ,
-     (0.1875, 0.604562568, 0.604562568) ,
-     (0.21875, 0.648280772, 0.648280772) ,
-     (0.25, 0.688929332, 0.688929332) ,
-     (0.28125, 0.726149107, 0.726149107) ,
-     (0.3125, 0.759599947, 0.759599947) ,
-     (0.34375, 0.788964712, 0.788964712) ,
-     (0.375, 0.813952739, 0.813952739) ,
-     (0.40625, 0.834302879, 0.834302879) ,
-     (0.4375, 0.849786142, 0.849786142) ,
-     (0.46875, 0.860207984, 0.860207984) ,
-     (0.5, 0.86541021, 0.86541021) ,
-     (0.53125, 0.848937047, 0.848937047) ,
-     (0.5625, 0.827384882, 0.827384882) ,
-     (0.59375, 0.800927443, 0.800927443) ,
-     (0.625, 0.769767752, 0.769767752) ,
-     (0.65625, 0.734132809, 0.734132809) ,
-     (0.6875, 0.694266682, 0.694266682) ,
-     (0.71875, 0.650421156, 0.650421156) ,
-     (0.75, 0.602842431, 0.602842431) ,
-     (0.78125, 0.551750968, 0.551750968) ,
-     (0.8125, 0.49730856, 0.49730856) ,
-     (0.84375, 0.439559467, 0.439559467) ,
-     (0.875, 0.378313092, 0.378313092) ,
-     (0.90625, 0.312874446, 0.312874446) ,
-     (0.9375, 0.24128379, 0.24128379) ,
-     (0.96875, 0.157246067, 0.157246067) ,
-     (1.0, 0.01555616, 0.01555616)
-  },
-  new triple[] {  // blue
-     (0.0, 0.753683153, 0.753683153) ,
-     (0.03125, 0.801466763, 0.801466763) ,
-     (0.0625, 0.84495867, 0.84495867) ,
-     (0.09375, 0.883725899, 0.883725899) ,
-     (0.125, 0.917387822, 0.917387822) ,
-     (0.15625, 0.945619588, 0.945619588) ,
-     (0.1875, 0.968154911, 0.968154911) ,
-     (0.21875, 0.98478814, 0.98478814) ,
-     (0.25, 0.995375608, 0.995375608) ,
-     (0.28125, 0.999836203, 0.999836203) ,
-     (0.3125, 0.998151185, 0.998151185) ,
-     (0.34375, 0.990363227, 0.990363227) ,
-     (0.375, 0.976574709, 0.976574709) ,
-     (0.40625, 0.956945269, 0.956945269) ,
-     (0.4375, 0.931688648, 0.931688648) ,
-     (0.46875, 0.901068838, 0.901068838) ,
-     (0.5, 0.865395561, 0.865395561) ,
-     (0.53125, 0.820880546, 0.820880546) ,
-     (0.5625, 0.774508472, 0.774508472) ,
-     (0.59375, 0.726736146, 0.726736146) ,
-     (0.625, 0.678007945, 0.678007945) ,
-     (0.65625, 0.628751763, 0.628751763) ,
-     (0.6875, 0.579375448, 0.579375448) ,
-     (0.71875, 0.530263762, 0.530263762) ,
-     (0.75, 0.481775914, 0.481775914) ,
-     (0.78125, 0.434243684, 0.434243684) ,
-     (0.8125, 0.387970225, 0.387970225) ,
-     (0.84375, 0.343229596, 0.343229596) ,
-     (0.875, 0.300267182, 0.300267182) ,
-     (0.90625, 0.259301199, 0.259301199) ,
-     (0.9375, 0.220525627, 0.220525627) ,
-     (0.96875, 0.184115123, 0.184115123) ,
-     (1.0, 0.150232812, 0.150232812)
-  }
-);
+                             new triple[] {  // red
+                               (0.0, 0.2298057, 0.2298057) ,
+                                 (0.03125, 0.26623388, 0.26623388) ,
+                                 (0.0625, 0.30386891, 0.30386891) ,
+                                 (0.09375, 0.342804478, 0.342804478) ,
+                                 (0.125, 0.38301334, 0.38301334) ,
+                                 (0.15625, 0.424369608, 0.424369608) ,
+                                 (0.1875, 0.46666708, 0.46666708) ,
+                                 (0.21875, 0.509635204, 0.509635204) ,
+                                 (0.25, 0.552953156, 0.552953156) ,
+                                 (0.28125, 0.596262162, 0.596262162) ,
+                                 (0.3125, 0.639176211, 0.639176211) ,
+                                 (0.34375, 0.681291281, 0.681291281) ,
+                                 (0.375, 0.722193294, 0.722193294) ,
+                                 (0.40625, 0.761464949, 0.761464949) ,
+                                 (0.4375, 0.798691636, 0.798691636) ,
+                                 (0.46875, 0.833466556, 0.833466556) ,
+                                 (0.5, 0.865395197, 0.865395197) ,
+                                 (0.53125, 0.897787179, 0.897787179) ,
+                                 (0.5625, 0.924127593, 0.924127593) ,
+                                 (0.59375, 0.944468518, 0.944468518) ,
+                                 (0.625, 0.958852946, 0.958852946) ,
+                                 (0.65625, 0.96732803, 0.96732803) ,
+                                 (0.6875, 0.969954137, 0.969954137) ,
+                                 (0.71875, 0.966811177, 0.966811177) ,
+                                 (0.75, 0.958003065, 0.958003065) ,
+                                 (0.78125, 0.943660866, 0.943660866) ,
+                                 (0.8125, 0.923944917, 0.923944917) ,
+                                 (0.84375, 0.89904617, 0.89904617) ,
+                                 (0.875, 0.869186849, 0.869186849) ,
+                                 (0.90625, 0.834620542, 0.834620542) ,
+                                 (0.9375, 0.795631745, 0.795631745) ,
+                                 (0.96875, 0.752534934, 0.752534934) ,
+                                 (1.0, 0.705673158, 0.705673158)
+                                 },
+                             new triple[] {  // green
+                               (0.0, 0.298717966, 0.298717966) ,
+                                 (0.03125, 0.353094838, 0.353094838) ,
+                                 (0.0625, 0.406535296, 0.406535296) ,
+                                 (0.09375, 0.458757618, 0.458757618) ,
+                                 (0.125, 0.50941904, 0.50941904) ,
+                                 (0.15625, 0.558148092, 0.558148092) ,
+                                 (0.1875, 0.604562568, 0.604562568) ,
+                                 (0.21875, 0.648280772, 0.648280772) ,
+                                 (0.25, 0.688929332, 0.688929332) ,
+                                 (0.28125, 0.726149107, 0.726149107) ,
+                                 (0.3125, 0.759599947, 0.759599947) ,
+                                 (0.34375, 0.788964712, 0.788964712) ,
+                                 (0.375, 0.813952739, 0.813952739) ,
+                                 (0.40625, 0.834302879, 0.834302879) ,
+                                 (0.4375, 0.849786142, 0.849786142) ,
+                                 (0.46875, 0.860207984, 0.860207984) ,
+                                 (0.5, 0.86541021, 0.86541021) ,
+                                 (0.53125, 0.848937047, 0.848937047) ,
+                                 (0.5625, 0.827384882, 0.827384882) ,
+                                 (0.59375, 0.800927443, 0.800927443) ,
+                                 (0.625, 0.769767752, 0.769767752) ,
+                                 (0.65625, 0.734132809, 0.734132809) ,
+                                 (0.6875, 0.694266682, 0.694266682) ,
+                                 (0.71875, 0.650421156, 0.650421156) ,
+                                 (0.75, 0.602842431, 0.602842431) ,
+                                 (0.78125, 0.551750968, 0.551750968) ,
+                                 (0.8125, 0.49730856, 0.49730856) ,
+                                 (0.84375, 0.439559467, 0.439559467) ,
+                                 (0.875, 0.378313092, 0.378313092) ,
+                                 (0.90625, 0.312874446, 0.312874446) ,
+                                 (0.9375, 0.24128379, 0.24128379) ,
+                                 (0.96875, 0.157246067, 0.157246067) ,
+                                 (1.0, 0.01555616, 0.01555616)
+                                 },
+                             new triple[] {  // blue
+                               (0.0, 0.753683153, 0.753683153) ,
+                                 (0.03125, 0.801466763, 0.801466763) ,
+                                 (0.0625, 0.84495867, 0.84495867) ,
+                                 (0.09375, 0.883725899, 0.883725899) ,
+                                 (0.125, 0.917387822, 0.917387822) ,
+                                 (0.15625, 0.945619588, 0.945619588) ,
+                                 (0.1875, 0.968154911, 0.968154911) ,
+                                 (0.21875, 0.98478814, 0.98478814) ,
+                                 (0.25, 0.995375608, 0.995375608) ,
+                                 (0.28125, 0.999836203, 0.999836203) ,
+                                 (0.3125, 0.998151185, 0.998151185) ,
+                                 (0.34375, 0.990363227, 0.990363227) ,
+                                 (0.375, 0.976574709, 0.976574709) ,
+                                 (0.40625, 0.956945269, 0.956945269) ,
+                                 (0.4375, 0.931688648, 0.931688648) ,
+                                 (0.46875, 0.901068838, 0.901068838) ,
+                                 (0.5, 0.865395561, 0.865395561) ,
+                                 (0.53125, 0.820880546, 0.820880546) ,
+                                 (0.5625, 0.774508472, 0.774508472) ,
+                                 (0.59375, 0.726736146, 0.726736146) ,
+                                 (0.625, 0.678007945, 0.678007945) ,
+                                 (0.65625, 0.628751763, 0.628751763) ,
+                                 (0.6875, 0.579375448, 0.579375448) ,
+                                 (0.71875, 0.530263762, 0.530263762) ,
+                                 (0.75, 0.481775914, 0.481775914) ,
+                                 (0.78125, 0.434243684, 0.434243684) ,
+                                 (0.8125, 0.387970225, 0.387970225) ,
+                                 (0.84375, 0.343229596, 0.343229596) ,
+                                 (0.875, 0.300267182, 0.300267182) ,
+                                 (0.90625, 0.259301199, 0.259301199) ,
+                                 (0.9375, 0.220525627, 0.220525627) ,
+                                 (0.96875, 0.184115123, 0.184115123) ,
+                                 (1.0, 0.150232812, 0.150232812)
+                                 }
+                             );
 
 
 seg_data copper = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.809524, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.7812, 0.7812)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.4975, 0.4975)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.809524, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.7812, 0.7812)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.4975, 0.4975)
+                               }
+                           );
 
 
 seg_data gist_earth = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.2824, 0.1882, 0.1882) ,
-     (0.4588, 0.2714, 0.2714) ,
-     (0.549, 0.4719, 0.4719) ,
-     (0.698, 0.7176, 0.7176) ,
-     (0.7882, 0.7553, 0.7553) ,
-     (1.0, 0.9922, 0.9922)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.0275, 0.0, 0.0) ,
-     (0.1098, 0.1893, 0.1893) ,
-     (0.1647, 0.3035, 0.3035) ,
-     (0.2078, 0.3841, 0.3841) ,
-     (0.2824, 0.502, 0.502) ,
-     (0.5216, 0.6397, 0.6397) ,
-     (0.698, 0.7171, 0.7171) ,
-     (0.7882, 0.6392, 0.6392) ,
-     (0.7922, 0.6413, 0.6413) ,
-     (0.8, 0.6447, 0.6447) ,
-     (0.8078, 0.6481, 0.6481) ,
-     (0.8157, 0.6549, 0.6549) ,
-     (0.8667, 0.6991, 0.6991) ,
-     (0.8745, 0.7103, 0.7103) ,
-     (0.8824, 0.7216, 0.7216) ,
-     (0.8902, 0.7323, 0.7323) ,
-     (0.898, 0.743, 0.743) ,
-     (0.9412, 0.8275, 0.8275) ,
-     (0.9569, 0.8635, 0.8635) ,
-     (0.9647, 0.8816, 0.8816) ,
-     (0.9961, 0.9733, 0.9733) ,
-     (1.0, 0.9843, 0.9843)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.0039, 0.1684, 0.1684) ,
-     (0.0078, 0.2212, 0.2212) ,
-     (0.0275, 0.4329, 0.4329) ,
-     (0.0314, 0.4549, 0.4549) ,
-     (0.2824, 0.5004, 0.5004) ,
-     (0.4667, 0.2748, 0.2748) ,
-     (0.5451, 0.3205, 0.3205) ,
-     (0.7843, 0.3961, 0.3961) ,
-     (0.8941, 0.6651, 0.6651) ,
-     (1.0, 0.9843, 0.9843)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.2824, 0.1882, 0.1882) ,
+                                   (0.4588, 0.2714, 0.2714) ,
+                                   (0.549, 0.4719, 0.4719) ,
+                                   (0.698, 0.7176, 0.7176) ,
+                                   (0.7882, 0.7553, 0.7553) ,
+                                   (1.0, 0.9922, 0.9922)
+                                   },
+                               new triple[] {  // green
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0275, 0.0, 0.0) ,
+                                   (0.1098, 0.1893, 0.1893) ,
+                                   (0.1647, 0.3035, 0.3035) ,
+                                   (0.2078, 0.3841, 0.3841) ,
+                                   (0.2824, 0.502, 0.502) ,
+                                   (0.5216, 0.6397, 0.6397) ,
+                                   (0.698, 0.7171, 0.7171) ,
+                                   (0.7882, 0.6392, 0.6392) ,
+                                   (0.7922, 0.6413, 0.6413) ,
+                                   (0.8, 0.6447, 0.6447) ,
+                                   (0.8078, 0.6481, 0.6481) ,
+                                   (0.8157, 0.6549, 0.6549) ,
+                                   (0.8667, 0.6991, 0.6991) ,
+                                   (0.8745, 0.7103, 0.7103) ,
+                                   (0.8824, 0.7216, 0.7216) ,
+                                   (0.8902, 0.7323, 0.7323) ,
+                                   (0.898, 0.743, 0.743) ,
+                                   (0.9412, 0.8275, 0.8275) ,
+                                   (0.9569, 0.8635, 0.8635) ,
+                                   (0.9647, 0.8816, 0.8816) ,
+                                   (0.9961, 0.9733, 0.9733) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0039, 0.1684, 0.1684) ,
+                                   (0.0078, 0.2212, 0.2212) ,
+                                   (0.0275, 0.4329, 0.4329) ,
+                                   (0.0314, 0.4549, 0.4549) ,
+                                   (0.2824, 0.5004, 0.5004) ,
+                                   (0.4667, 0.2748, 0.2748) ,
+                                   (0.5451, 0.3205, 0.3205) ,
+                                   (0.7843, 0.3961, 0.3961) ,
+                                   (0.8941, 0.6651, 0.6651) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   }
+                               );
 
 
 seg_data gist_ncar = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.3098, 0.0, 0.0) ,
-     (0.3725, 0.3993, 0.3993) ,
-     (0.4235, 0.5003, 0.5003) ,
-     (0.5333, 1.0, 1.0) ,
-     (0.7922, 1.0, 1.0) ,
-     (0.8471, 0.6218, 0.6218) ,
-     (0.898, 0.9235, 0.9235) ,
-     (1.0, 0.9961, 0.9961)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.051, 0.3722, 0.3722) ,
-     (0.1059, 0.0, 0.0) ,
-     (0.1569, 0.7202, 0.7202) ,
-     (0.1608, 0.7537, 0.7537) ,
-     (0.1647, 0.7752, 0.7752) ,
-     (0.2157, 1.0, 1.0) ,
-     (0.2588, 0.9804, 0.9804) ,
-     (0.2706, 0.9804, 0.9804) ,
-     (0.3176, 1.0, 1.0) ,
-     (0.3686, 0.8081, 0.8081) ,
-     (0.4275, 1.0, 1.0) ,
-     (0.5216, 1.0, 1.0) ,
-     (0.6314, 0.7292, 0.7292) ,
-     (0.6863, 0.2796, 0.2796) ,
-     (0.7451, 0.0, 0.0) ,
-     (0.7922, 0.0, 0.0) ,
-     (0.8431, 0.1753, 0.1753) ,
-     (0.898, 0.5, 0.5) ,
-     (1.0, 0.9725, 0.9725)
-  },
-  new triple[] {  // blue
-     (0.0, 0.502, 0.502) ,
-     (0.051, 0.0222, 0.0222) ,
-     (0.1098, 1.0, 1.0) ,
-     (0.2039, 1.0, 1.0) ,
-     (0.2627, 0.6145, 0.6145) ,
-     (0.3216, 0.0, 0.0) ,
-     (0.4157, 0.0, 0.0) ,
-     (0.4745, 0.2342, 0.2342) ,
-     (0.5333, 0.0, 0.0) ,
-     (0.5804, 0.0, 0.0) ,
-     (0.6314, 0.0549, 0.0549) ,
-     (0.6902, 0.0, 0.0) ,
-     (0.7373, 0.0, 0.0) ,
-     (0.7922, 0.9738, 0.9738) ,
-     (0.8, 1.0, 1.0) ,
-     (0.8431, 1.0, 1.0) ,
-     (0.898, 0.9341, 0.9341) ,
-     (1.0, 0.9961, 0.9961)
-  }
-);
+                              new triple[] {  // red
+                                (0.0, 0.0, 0.0) ,
+                                  (0.3098, 0.0, 0.0) ,
+                                  (0.3725, 0.3993, 0.3993) ,
+                                  (0.4235, 0.5003, 0.5003) ,
+                                  (0.5333, 1.0, 1.0) ,
+                                  (0.7922, 1.0, 1.0) ,
+                                  (0.8471, 0.6218, 0.6218) ,
+                                  (0.898, 0.9235, 0.9235) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  },
+                              new triple[] {  // green
+                                (0.0, 0.0, 0.0) ,
+                                  (0.051, 0.3722, 0.3722) ,
+                                  (0.1059, 0.0, 0.0) ,
+                                  (0.1569, 0.7202, 0.7202) ,
+                                  (0.1608, 0.7537, 0.7537) ,
+                                  (0.1647, 0.7752, 0.7752) ,
+                                  (0.2157, 1.0, 1.0) ,
+                                  (0.2588, 0.9804, 0.9804) ,
+                                  (0.2706, 0.9804, 0.9804) ,
+                                  (0.3176, 1.0, 1.0) ,
+                                  (0.3686, 0.8081, 0.8081) ,
+                                  (0.4275, 1.0, 1.0) ,
+                                  (0.5216, 1.0, 1.0) ,
+                                  (0.6314, 0.7292, 0.7292) ,
+                                  (0.6863, 0.2796, 0.2796) ,
+                                  (0.7451, 0.0, 0.0) ,
+                                  (0.7922, 0.0, 0.0) ,
+                                  (0.8431, 0.1753, 0.1753) ,
+                                  (0.898, 0.5, 0.5) ,
+                                  (1.0, 0.9725, 0.9725)
+                                  },
+                              new triple[] {  // blue
+                                (0.0, 0.502, 0.502) ,
+                                  (0.051, 0.0222, 0.0222) ,
+                                  (0.1098, 1.0, 1.0) ,
+                                  (0.2039, 1.0, 1.0) ,
+                                  (0.2627, 0.6145, 0.6145) ,
+                                  (0.3216, 0.0, 0.0) ,
+                                  (0.4157, 0.0, 0.0) ,
+                                  (0.4745, 0.2342, 0.2342) ,
+                                  (0.5333, 0.0, 0.0) ,
+                                  (0.5804, 0.0, 0.0) ,
+                                  (0.6314, 0.0549, 0.0549) ,
+                                  (0.6902, 0.0, 0.0) ,
+                                  (0.7373, 0.0, 0.0) ,
+                                  (0.7922, 0.9738, 0.9738) ,
+                                  (0.8, 1.0, 1.0) ,
+                                  (0.8431, 1.0, 1.0) ,
+                                  (0.898, 0.9341, 0.9341) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  }
+                              );
 
 
 seg_data gist_stern = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.0547, 1.0, 1.0) ,
-     (0.25, 0.027, 0.25) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0, 0, 0) ,
-     (1, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.735, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0547, 1.0, 1.0) ,
+                                   (0.25, 0.027, 0.25) ,
+                                   (1.0, 1.0, 1.0)
+                                   },
+                               new triple[] {  // green
+                                 (0, 0, 0) ,
+                                   (1, 1, 1)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.5, 1.0, 1.0) ,
+                                   (0.735, 0.0, 0.0) ,
+                                   (1.0, 1.0, 1.0)
+                                   }
+                               );
 
 
 seg_data gray = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             }
+                         );
 
 
 seg_data hot = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0416, 0.0416) ,
-     (0.365079, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.0, 0.0) ,
-     (0.746032, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0.0416, 0.0416) ,
+                            (0.365079, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.365079, 0.0, 0.0) ,
+                            (0.746032, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.746032, 0.0, 0.0) ,
+                            (1.0, 1.0, 1.0)
+                            }
+                        );
 
 
 seg_data hsv = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (0.15873, 1.0, 1.0) ,
-     (0.174603, 0.96875, 0.96875) ,
-     (0.333333, 0.03125, 0.03125) ,
-     (0.349206, 0.0, 0.0) ,
-     (0.666667, 0.0, 0.0) ,
-     (0.68254, 0.03125, 0.03125) ,
-     (0.84127, 0.96875, 0.96875) ,
-     (0.857143, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.15873, 0.9375, 0.9375) ,
-     (0.174603, 1.0, 1.0) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.666667, 0.0625, 0.0625) ,
-     (0.68254, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.333333, 0.0, 0.0) ,
-     (0.349206, 0.0625, 0.0625) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.84127, 1.0, 1.0) ,
-     (0.857143, 0.9375, 0.9375) ,
-     (1.0, 0.09375, 0.09375)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 1.0, 1.0) ,
+                            (0.15873, 1.0, 1.0) ,
+                            (0.174603, 0.96875, 0.96875) ,
+                            (0.333333, 0.03125, 0.03125) ,
+                            (0.349206, 0.0, 0.0) ,
+                            (0.666667, 0.0, 0.0) ,
+                            (0.68254, 0.03125, 0.03125) ,
+                            (0.84127, 0.96875, 0.96875) ,
+                            (0.857143, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.15873, 0.9375, 0.9375) ,
+                            (0.174603, 1.0, 1.0) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.666667, 0.0625, 0.0625) ,
+                            (0.68254, 0.0, 0.0) ,
+                            (1.0, 0.0, 0.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.333333, 0.0, 0.0) ,
+                            (0.349206, 0.0625, 0.0625) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.84127, 1.0, 1.0) ,
+                            (0.857143, 0.9375, 0.9375) ,
+                            (1.0, 0.09375, 0.09375)
+                            }
+                        );
 
 
 seg_data jet = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (0.35, 0, 0) ,
-     (0.66, 1, 1) ,
-     (0.89, 1, 1) ,
-     (1, 0.5, 0.5)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (0.125, 0, 0) ,
-     (0.375, 1, 1) ,
-     (0.64, 1, 1) ,
-     (0.91, 0, 0) ,
-     (1, 0, 0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.5, 0.5) ,
-     (0.11, 1, 1) ,
-     (0.34, 1, 1) ,
-     (0.65, 0, 0) ,
-     (1, 0, 0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0, 0) ,
+                            (0.35, 0, 0) ,
+                            (0.66, 1, 1) ,
+                            (0.89, 1, 1) ,
+                            (1, 0.5, 0.5)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0, 0) ,
+                            (0.125, 0, 0) ,
+                            (0.375, 1, 1) ,
+                            (0.64, 1, 1) ,
+                            (0.91, 0, 0) ,
+                            (1, 0, 0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.5, 0.5) ,
+                            (0.11, 1, 1) ,
+                            (0.34, 1, 1) ,
+                            (0.65, 0, 0) ,
+                            (1, 0, 0)
+                            }
+                        );
 
 
 seg_data nipy_spectral = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.4667, 0.4667) ,
-     (0.1, 0.5333, 0.5333) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.0, 0.0) ,
-     (0.3, 0.0, 0.0) ,
-     (0.35, 0.0, 0.0) ,
-     (0.4, 0.0, 0.0) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.7333, 0.7333) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 1.0, 1.0) ,
-     (0.8, 1.0, 1.0) ,
-     (0.85, 1.0, 1.0) ,
-     (0.9, 0.8667, 0.8667) ,
-     (0.95, 0.8, 0.8) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.0, 0.0) ,
-     (0.1, 0.0, 0.0) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.4667, 0.4667) ,
-     (0.3, 0.6, 0.6) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.6667, 0.6667) ,
-     (0.45, 0.6, 0.6) ,
-     (0.5, 0.7333, 0.7333) ,
-     (0.55, 0.8667, 0.8667) ,
-     (0.6, 1.0, 1.0) ,
-     (0.65, 1.0, 1.0) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 0.8, 0.8) ,
-     (0.8, 0.6, 0.6) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.5333, 0.5333) ,
-     (0.1, 0.6, 0.6) ,
-     (0.15, 0.6667, 0.6667) ,
-     (0.2, 0.8667, 0.8667) ,
-     (0.25, 0.8667, 0.8667) ,
-     (0.3, 0.8667, 0.8667) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.5333, 0.5333) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.0, 0.0) ,
-     (0.7, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (0.8, 0.0, 0.0) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  }
-);
+                                  new triple[] {  // red
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.4667, 0.4667) ,
+                                      (0.1, 0.5333, 0.5333) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.0, 0.0) ,
+                                      (0.3, 0.0, 0.0) ,
+                                      (0.35, 0.0, 0.0) ,
+                                      (0.4, 0.0, 0.0) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.7333, 0.7333) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 1.0, 1.0) ,
+                                      (0.8, 1.0, 1.0) ,
+                                      (0.85, 1.0, 1.0) ,
+                                      (0.9, 0.8667, 0.8667) ,
+                                      (0.95, 0.8, 0.8) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // green
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.0, 0.0) ,
+                                      (0.1, 0.0, 0.0) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.4667, 0.4667) ,
+                                      (0.3, 0.6, 0.6) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.6667, 0.6667) ,
+                                      (0.45, 0.6, 0.6) ,
+                                      (0.5, 0.7333, 0.7333) ,
+                                      (0.55, 0.8667, 0.8667) ,
+                                      (0.6, 1.0, 1.0) ,
+                                      (0.65, 1.0, 1.0) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 0.8, 0.8) ,
+                                      (0.8, 0.6, 0.6) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // blue
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.5333, 0.5333) ,
+                                      (0.1, 0.6, 0.6) ,
+                                      (0.15, 0.6667, 0.6667) ,
+                                      (0.2, 0.8667, 0.8667) ,
+                                      (0.25, 0.8667, 0.8667) ,
+                                      (0.3, 0.8667, 0.8667) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.5333, 0.5333) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.0, 0.0) ,
+                                      (0.7, 0.0, 0.0) ,
+                                      (0.75, 0.0, 0.0) ,
+                                      (0.8, 0.0, 0.0) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      }
+                                  );
 
 
 seg_data pink = seg_data(
-  new triple[] {  // red
-     (0.0, 0.1178, 0.1178) ,
-     (0.015873, 0.195857, 0.195857) ,
-     (0.031746, 0.250661, 0.250661) ,
-     (0.047619, 0.295468, 0.295468) ,
-     (0.063492, 0.334324, 0.334324) ,
-     (0.079365, 0.369112, 0.369112) ,
-     (0.095238, 0.400892, 0.400892) ,
-     (0.111111, 0.430331, 0.430331) ,
-     (0.126984, 0.457882, 0.457882) ,
-     (0.142857, 0.483867, 0.483867) ,
-     (0.15873, 0.508525, 0.508525) ,
-     (0.174603, 0.532042, 0.532042) ,
-     (0.190476, 0.554563, 0.554563) ,
-     (0.206349, 0.576204, 0.576204) ,
-     (0.222222, 0.597061, 0.597061) ,
-     (0.238095, 0.617213, 0.617213) ,
-     (0.253968, 0.636729, 0.636729) ,
-     (0.269841, 0.655663, 0.655663) ,
-     (0.285714, 0.674066, 0.674066) ,
-     (0.301587, 0.69198, 0.69198) ,
-     (0.31746, 0.709441, 0.709441) ,
-     (0.333333, 0.726483, 0.726483) ,
-     (0.349206, 0.743134, 0.743134) ,
-     (0.365079, 0.759421, 0.759421) ,
-     (0.380952, 0.766356, 0.766356) ,
-     (0.396825, 0.773229, 0.773229) ,
-     (0.412698, 0.780042, 0.780042) ,
-     (0.428571, 0.786796, 0.786796) ,
-     (0.444444, 0.793492, 0.793492) ,
-     (0.460317, 0.800132, 0.800132) ,
-     (0.47619, 0.806718, 0.806718) ,
-     (0.492063, 0.81325, 0.81325) ,
-     (0.507937, 0.81973, 0.81973) ,
-     (0.52381, 0.82616, 0.82616) ,
-     (0.539683, 0.832539, 0.832539) ,
-     (0.555556, 0.83887, 0.83887) ,
-     (0.571429, 0.845154, 0.845154) ,
-     (0.587302, 0.851392, 0.851392) ,
-     (0.603175, 0.857584, 0.857584) ,
-     (0.619048, 0.863731, 0.863731) ,
-     (0.634921, 0.869835, 0.869835) ,
-     (0.650794, 0.875897, 0.875897) ,
-     (0.666667, 0.881917, 0.881917) ,
-     (0.68254, 0.887896, 0.887896) ,
-     (0.698413, 0.893835, 0.893835) ,
-     (0.714286, 0.899735, 0.899735) ,
-     (0.730159, 0.905597, 0.905597) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.517549, 0.517549) ,
-     (0.396825, 0.540674, 0.540674) ,
-     (0.412698, 0.562849, 0.562849) ,
-     (0.428571, 0.584183, 0.584183) ,
-     (0.444444, 0.604765, 0.604765) ,
-     (0.460317, 0.624669, 0.624669) ,
-     (0.47619, 0.643958, 0.643958) ,
-     (0.492063, 0.662687, 0.662687) ,
-     (0.507937, 0.6809, 0.6809) ,
-     (0.52381, 0.698638, 0.698638) ,
-     (0.539683, 0.715937, 0.715937) ,
-     (0.555556, 0.732828, 0.732828) ,
-     (0.571429, 0.749338, 0.749338) ,
-     (0.587302, 0.765493, 0.765493) ,
-     (0.603175, 0.781313, 0.781313) ,
-     (0.619048, 0.796819, 0.796819) ,
-     (0.634921, 0.812029, 0.812029) ,
-     (0.650794, 0.82696, 0.82696) ,
-     (0.666667, 0.841625, 0.841625) ,
-     (0.68254, 0.85604, 0.85604) ,
-     (0.698413, 0.870216, 0.870216) ,
-     (0.714286, 0.884164, 0.884164) ,
-     (0.730159, 0.897896, 0.897896) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.503953, 0.503953) ,
-     (0.396825, 0.514344, 0.514344) ,
-     (0.412698, 0.524531, 0.524531) ,
-     (0.428571, 0.534522, 0.534522) ,
-     (0.444444, 0.544331, 0.544331) ,
-     (0.460317, 0.553966, 0.553966) ,
-     (0.47619, 0.563436, 0.563436) ,
-     (0.492063, 0.57275, 0.57275) ,
-     (0.507937, 0.581914, 0.581914) ,
-     (0.52381, 0.590937, 0.590937) ,
-     (0.539683, 0.599824, 0.599824) ,
-     (0.555556, 0.608581, 0.608581) ,
-     (0.571429, 0.617213, 0.617213) ,
-     (0.587302, 0.625727, 0.625727) ,
-     (0.603175, 0.634126, 0.634126) ,
-     (0.619048, 0.642416, 0.642416) ,
-     (0.634921, 0.6506, 0.6506) ,
-     (0.650794, 0.658682, 0.658682) ,
-     (0.666667, 0.666667, 0.666667) ,
-     (0.68254, 0.674556, 0.674556) ,
-     (0.698413, 0.682355, 0.682355) ,
-     (0.714286, 0.690066, 0.690066) ,
-     (0.730159, 0.697691, 0.697691) ,
-     (0.746032, 0.705234, 0.705234) ,
-     (0.761905, 0.727166, 0.727166) ,
-     (0.777778, 0.748455, 0.748455) ,
-     (0.793651, 0.769156, 0.769156) ,
-     (0.809524, 0.789314, 0.789314) ,
-     (0.825397, 0.808969, 0.808969) ,
-     (0.84127, 0.828159, 0.828159) ,
-     (0.857143, 0.846913, 0.846913) ,
-     (0.873016, 0.865261, 0.865261) ,
-     (0.888889, 0.883229, 0.883229) ,
-     (0.904762, 0.900837, 0.900837) ,
-     (0.920635, 0.918109, 0.918109) ,
-     (0.936508, 0.935061, 0.935061) ,
-     (0.952381, 0.951711, 0.951711) ,
-     (0.968254, 0.968075, 0.968075) ,
-     (0.984127, 0.984167, 0.984167) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.1178, 0.1178) ,
+                             (0.015873, 0.195857, 0.195857) ,
+                             (0.031746, 0.250661, 0.250661) ,
+                             (0.047619, 0.295468, 0.295468) ,
+                             (0.063492, 0.334324, 0.334324) ,
+                             (0.079365, 0.369112, 0.369112) ,
+                             (0.095238, 0.400892, 0.400892) ,
+                             (0.111111, 0.430331, 0.430331) ,
+                             (0.126984, 0.457882, 0.457882) ,
+                             (0.142857, 0.483867, 0.483867) ,
+                             (0.15873, 0.508525, 0.508525) ,
+                             (0.174603, 0.532042, 0.532042) ,
+                             (0.190476, 0.554563, 0.554563) ,
+                             (0.206349, 0.576204, 0.576204) ,
+                             (0.222222, 0.597061, 0.597061) ,
+                             (0.238095, 0.617213, 0.617213) ,
+                             (0.253968, 0.636729, 0.636729) ,
+                             (0.269841, 0.655663, 0.655663) ,
+                             (0.285714, 0.674066, 0.674066) ,
+                             (0.301587, 0.69198, 0.69198) ,
+                             (0.31746, 0.709441, 0.709441) ,
+                             (0.333333, 0.726483, 0.726483) ,
+                             (0.349206, 0.743134, 0.743134) ,
+                             (0.365079, 0.759421, 0.759421) ,
+                             (0.380952, 0.766356, 0.766356) ,
+                             (0.396825, 0.773229, 0.773229) ,
+                             (0.412698, 0.780042, 0.780042) ,
+                             (0.428571, 0.786796, 0.786796) ,
+                             (0.444444, 0.793492, 0.793492) ,
+                             (0.460317, 0.800132, 0.800132) ,
+                             (0.47619, 0.806718, 0.806718) ,
+                             (0.492063, 0.81325, 0.81325) ,
+                             (0.507937, 0.81973, 0.81973) ,
+                             (0.52381, 0.82616, 0.82616) ,
+                             (0.539683, 0.832539, 0.832539) ,
+                             (0.555556, 0.83887, 0.83887) ,
+                             (0.571429, 0.845154, 0.845154) ,
+                             (0.587302, 0.851392, 0.851392) ,
+                             (0.603175, 0.857584, 0.857584) ,
+                             (0.619048, 0.863731, 0.863731) ,
+                             (0.634921, 0.869835, 0.869835) ,
+                             (0.650794, 0.875897, 0.875897) ,
+                             (0.666667, 0.881917, 0.881917) ,
+                             (0.68254, 0.887896, 0.887896) ,
+                             (0.698413, 0.893835, 0.893835) ,
+                             (0.714286, 0.899735, 0.899735) ,
+                             (0.730159, 0.905597, 0.905597) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.517549, 0.517549) ,
+                             (0.396825, 0.540674, 0.540674) ,
+                             (0.412698, 0.562849, 0.562849) ,
+                             (0.428571, 0.584183, 0.584183) ,
+                             (0.444444, 0.604765, 0.604765) ,
+                             (0.460317, 0.624669, 0.624669) ,
+                             (0.47619, 0.643958, 0.643958) ,
+                             (0.492063, 0.662687, 0.662687) ,
+                             (0.507937, 0.6809, 0.6809) ,
+                             (0.52381, 0.698638, 0.698638) ,
+                             (0.539683, 0.715937, 0.715937) ,
+                             (0.555556, 0.732828, 0.732828) ,
+                             (0.571429, 0.749338, 0.749338) ,
+                             (0.587302, 0.765493, 0.765493) ,
+                             (0.603175, 0.781313, 0.781313) ,
+                             (0.619048, 0.796819, 0.796819) ,
+                             (0.634921, 0.812029, 0.812029) ,
+                             (0.650794, 0.82696, 0.82696) ,
+                             (0.666667, 0.841625, 0.841625) ,
+                             (0.68254, 0.85604, 0.85604) ,
+                             (0.698413, 0.870216, 0.870216) ,
+                             (0.714286, 0.884164, 0.884164) ,
+                             (0.730159, 0.897896, 0.897896) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.503953, 0.503953) ,
+                             (0.396825, 0.514344, 0.514344) ,
+                             (0.412698, 0.524531, 0.524531) ,
+                             (0.428571, 0.534522, 0.534522) ,
+                             (0.444444, 0.544331, 0.544331) ,
+                             (0.460317, 0.553966, 0.553966) ,
+                             (0.47619, 0.563436, 0.563436) ,
+                             (0.492063, 0.57275, 0.57275) ,
+                             (0.507937, 0.581914, 0.581914) ,
+                             (0.52381, 0.590937, 0.590937) ,
+                             (0.539683, 0.599824, 0.599824) ,
+                             (0.555556, 0.608581, 0.608581) ,
+                             (0.571429, 0.617213, 0.617213) ,
+                             (0.587302, 0.625727, 0.625727) ,
+                             (0.603175, 0.634126, 0.634126) ,
+                             (0.619048, 0.642416, 0.642416) ,
+                             (0.634921, 0.6506, 0.6506) ,
+                             (0.650794, 0.658682, 0.658682) ,
+                             (0.666667, 0.666667, 0.666667) ,
+                             (0.68254, 0.674556, 0.674556) ,
+                             (0.698413, 0.682355, 0.682355) ,
+                             (0.714286, 0.690066, 0.690066) ,
+                             (0.730159, 0.697691, 0.697691) ,
+                             (0.746032, 0.705234, 0.705234) ,
+                             (0.761905, 0.727166, 0.727166) ,
+                             (0.777778, 0.748455, 0.748455) ,
+                             (0.793651, 0.769156, 0.769156) ,
+                             (0.809524, 0.789314, 0.789314) ,
+                             (0.825397, 0.808969, 0.808969) ,
+                             (0.84127, 0.828159, 0.828159) ,
+                             (0.857143, 0.846913, 0.846913) ,
+                             (0.873016, 0.865261, 0.865261) ,
+                             (0.888889, 0.883229, 0.883229) ,
+                             (0.904762, 0.900837, 0.900837) ,
+                             (0.920635, 0.918109, 0.918109) ,
+                             (0.936508, 0.935061, 0.935061) ,
+                             (0.952381, 0.951711, 0.951711) ,
+                             (0.968254, 0.968075, 0.968075) ,
+                             (0.984127, 0.984167, 0.984167) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data seismic = list_data(new pen[] {
-  rgb (0.0, 0.0, 0.3) ,
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.5, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 0.3) ,
+      rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.5, 0.0, 0.0)
+      });
 
 
 seg_data spring = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data summer = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.4, 0.4) ,
-     (1.0, 0.4, 0.4)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.4, 0.4) ,
+                               (1.0, 0.4, 0.4)
+                               }
+                           );
 
 
 list_data tab10 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
+      });
 
 
 list_data tab20 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
-  rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
+      rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
+      });
 
 
 list_data tab20b = list_data(new pen[] {
-  rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
-  rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
-  rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
-  rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
-  rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
-  rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
-  rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
-  rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
-  rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
-  rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
-  rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
-  rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
-  rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
-  rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
-  rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
-  rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
-  rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
-  rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
-  rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
-  rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
-});
+    rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
+      rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
+      rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
+      rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
+      rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
+      rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
+      rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
+      rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
+      rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
+      rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
+      rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
+      rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
+      rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
+      rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
+      rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
+      rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
+      rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
+      rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
+      rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
+      rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
+      });
 
 
 list_data tab20c = list_data(new pen[] {
-  rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
-});
+    rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
+      });
 
 
 seg_data winter = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.5, 0.5)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.5, 0.5)
+                               }
+                           );
 
 
 seg_data wistia = seg_data(
-  new triple[] {  // red
-     (0.0, 0.8941176470588236, 0.8941176470588236) ,
-     (0.25, 1.0, 1.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.75, 1.0, 1.0) ,
-     (1.0, 0.9882352941176471, 0.9882352941176471)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (0.25, 0.9098039215686274, 0.9098039215686274) ,
-     (0.5, 0.7411764705882353, 0.7411764705882353) ,
-     (0.75, 0.6274509803921569, 0.6274509803921569) ,
-     (1.0, 0.4980392156862745, 0.4980392156862745)
-  },
-  new triple[] {  // blue
-     (0.0, 0.47843137254901963, 0.47843137254901963) ,
-     (0.25, 0.10196078431372549, 0.10196078431372549) ,
-     (0.5, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.8941176470588236, 0.8941176470588236) ,
+                               (0.25, 1.0, 1.0) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.75, 1.0, 1.0) ,
+                               (1.0, 0.9882352941176471, 0.9882352941176471)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (0.25, 0.9098039215686274, 0.9098039215686274) ,
+                               (0.5, 0.7411764705882353, 0.7411764705882353) ,
+                               (0.75, 0.6274509803921569, 0.6274509803921569) ,
+                               (1.0, 0.4980392156862745, 0.4980392156862745)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.47843137254901963, 0.47843137254901963) ,
+                               (0.25, 0.10196078431372549, 0.10196078431372549) ,
+                               (0.5, 0.0, 0.0) ,
+                               (0.75, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 list_data cividis = list_data(new pen[] {
-  rgb (0.0, 0.135112, 0.304751) ,
-  rgb (0.0, 0.138068, 0.311105) ,
-  rgb (0.0, 0.141013, 0.317579) ,
-  rgb (0.0, 0.143951, 0.323982) ,
-  rgb (0.0, 0.146877, 0.330479) ,
-  rgb (0.0, 0.149791, 0.337065) ,
-  rgb (0.0, 0.152673, 0.343704) ,
-  rgb (0.0, 0.155377, 0.3505) ,
-  rgb (0.0, 0.157932, 0.357521) ,
-  rgb (0.0, 0.160495, 0.364534) ,
-  rgb (0.0, 0.163058, 0.371608) ,
-  rgb (0.0, 0.165621, 0.378769) ,
-  rgb (0.0, 0.168204, 0.385902) ,
-  rgb (0.0, 0.1708, 0.3931) ,
-  rgb (0.0, 0.17342, 0.400353) ,
-  rgb (0.0, 0.176082, 0.407577) ,
-  rgb (0.0, 0.178802, 0.414764) ,
-  rgb (0.0, 0.18161, 0.421859) ,
-  rgb (0.0, 0.18455, 0.428802) ,
-  rgb (0.0, 0.186915, 0.435532) ,
-  rgb (0.0, 0.188769, 0.439563) ,
-  rgb (0.0, 0.19095, 0.441085) ,
-  rgb (0.0, 0.193366, 0.441561) ,
-  rgb (0.003602, 0.195911, 0.441564) ,
-  rgb (0.017852, 0.198528, 0.441248) ,
-  rgb (0.03211, 0.201199, 0.440785) ,
-  rgb (0.046205, 0.203903, 0.440196) ,
-  rgb (0.058378, 0.206629, 0.439531) ,
-  rgb (0.068968, 0.209372, 0.438863) ,
-  rgb (0.078624, 0.212122, 0.438105) ,
-  rgb (0.087465, 0.214879, 0.437342) ,
-  rgb (0.095645, 0.217643, 0.436593) ,
-  rgb (0.103401, 0.220406, 0.43579) ,
-  rgb (0.110658, 0.22317, 0.435067) ,
-  rgb (0.117612, 0.225935, 0.434308) ,
-  rgb (0.124291, 0.228697, 0.433547) ,
-  rgb (0.130669, 0.231458, 0.43284) ,
-  rgb (0.13683, 0.234216, 0.432148) ,
-  rgb (0.142852, 0.236972, 0.431404) ,
-  rgb (0.148638, 0.239724, 0.430752) ,
-  rgb (0.154261, 0.242475, 0.43012) ,
-  rgb (0.159733, 0.245221, 0.429528) ,
-  rgb (0.165113, 0.247965, 0.428908) ,
-  rgb (0.170362, 0.250707, 0.428325) ,
-  rgb (0.17549, 0.253444, 0.42779) ,
-  rgb (0.180503, 0.25618, 0.427299) ,
-  rgb (0.185453, 0.258914, 0.426788) ,
-  rgb (0.190303, 0.261644, 0.426329) ,
-  rgb (0.195057, 0.264372, 0.425924) ,
-  rgb (0.199764, 0.267099, 0.425497) ,
-  rgb (0.204385, 0.269823, 0.425126) ,
-  rgb (0.208926, 0.272546, 0.424809) ,
-  rgb (0.213431, 0.275266, 0.42448) ,
-  rgb (0.217863, 0.277985, 0.424206) ,
-  rgb (0.222264, 0.280702, 0.423914) ,
-  rgb (0.226598, 0.283419, 0.423678) ,
-  rgb (0.230871, 0.286134, 0.423498) ,
-  rgb (0.23512, 0.288848, 0.423304) ,
-  rgb (0.239312, 0.291562, 0.423167) ,
-  rgb (0.243485, 0.294274, 0.423014) ,
-  rgb (0.247605, 0.296986, 0.422917) ,
-  rgb (0.251675, 0.299698, 0.422873) ,
-  rgb (0.255731, 0.302409, 0.422814) ,
-  rgb (0.25974, 0.30512, 0.42281) ,
-  rgb (0.263738, 0.307831, 0.422789) ,
-  rgb (0.267693, 0.310542, 0.422821) ,
-  rgb (0.271639, 0.313253, 0.422837) ,
-  rgb (0.275513, 0.315965, 0.422979) ,
-  rgb (0.279411, 0.318677, 0.423031) ,
-  rgb (0.28324, 0.32139, 0.423211) ,
-  rgb (0.287065, 0.324103, 0.423373) ,
-  rgb (0.290884, 0.326816, 0.423517) ,
-  rgb (0.294669, 0.329531, 0.423716) ,
-  rgb (0.298421, 0.332247, 0.423973) ,
-  rgb (0.302169, 0.334963, 0.424213) ,
-  rgb (0.305886, 0.337681, 0.424512) ,
-  rgb (0.309601, 0.340399, 0.42479) ,
-  rgb (0.313287, 0.34312, 0.42512) ,
-  rgb (0.316941, 0.345842, 0.425512) ,
-  rgb (0.320595, 0.348565, 0.425889) ,
-  rgb (0.32425, 0.351289, 0.42625) ,
-  rgb (0.327875, 0.354016, 0.42667) ,
-  rgb (0.331474, 0.356744, 0.427144) ,
-  rgb (0.335073, 0.359474, 0.427605) ,
-  rgb (0.338673, 0.362206, 0.428053) ,
-  rgb (0.342246, 0.364939, 0.428559) ,
-  rgb (0.345793, 0.367676, 0.429127) ,
-  rgb (0.349341, 0.370414, 0.429685) ,
-  rgb (0.352892, 0.373153, 0.430226) ,
-  rgb (0.356418, 0.375896, 0.430823) ,
-  rgb (0.359916, 0.378641, 0.431501) ,
-  rgb (0.363446, 0.381388, 0.432075) ,
-  rgb (0.366923, 0.384139, 0.432796) ,
-  rgb (0.37043, 0.38689, 0.433428) ,
-  rgb (0.373884, 0.389646, 0.434209) ,
-  rgb (0.377371, 0.392404, 0.43489) ,
-  rgb (0.38083, 0.395164, 0.435653) ,
-  rgb (0.384268, 0.397928, 0.436475) ,
-  rgb (0.387705, 0.400694, 0.437305) ,
-  rgb (0.391151, 0.403464, 0.438096) ,
-  rgb (0.394568, 0.406236, 0.438986) ,
-  rgb (0.397991, 0.409011, 0.439848) ,
-  rgb (0.401418, 0.41179, 0.440708) ,
-  rgb (0.40482, 0.414572, 0.441642) ,
-  rgb (0.408226, 0.417357, 0.44257) ,
-  rgb (0.411607, 0.420145, 0.443577) ,
-  rgb (0.414992, 0.422937, 0.444578) ,
-  rgb (0.418383, 0.425733, 0.44556) ,
-  rgb (0.421748, 0.428531, 0.44664) ,
-  rgb (0.42512, 0.431334, 0.447692) ,
-  rgb (0.428462, 0.43414, 0.448864) ,
-  rgb (0.431817, 0.43695, 0.449982) ,
-  rgb (0.435168, 0.439763, 0.451134) ,
-  rgb (0.438504, 0.44258, 0.452341) ,
-  rgb (0.44181, 0.445402, 0.453659) ,
-  rgb (0.445148, 0.448226, 0.454885) ,
-  rgb (0.448447, 0.451053, 0.456264) ,
-  rgb (0.451759, 0.453887, 0.457582) ,
-  rgb (0.455072, 0.456718, 0.458976) ,
-  rgb (0.458366, 0.459552, 0.460457) ,
-  rgb (0.461616, 0.462405, 0.461969) ,
-  rgb (0.464947, 0.465241, 0.463395) ,
-  rgb (0.468254, 0.468083, 0.464908) ,
-  rgb (0.471501, 0.47096, 0.466357) ,
-  rgb (0.474812, 0.473832, 0.467681) ,
-  rgb (0.478186, 0.476699, 0.468845) ,
-  rgb (0.481622, 0.479573, 0.469767) ,
-  rgb (0.485141, 0.482451, 0.470384) ,
-  rgb (0.488697, 0.485318, 0.471008) ,
-  rgb (0.492278, 0.488198, 0.471453) ,
-  rgb (0.495913, 0.491076, 0.471751) ,
-  rgb (0.499552, 0.49396, 0.472032) ,
-  rgb (0.503185, 0.496851, 0.472305) ,
-  rgb (0.506866, 0.499743, 0.472432) ,
-  rgb (0.51054, 0.502643, 0.47255) ,
-  rgb (0.514226, 0.505546, 0.47264) ,
-  rgb (0.51792, 0.508454, 0.472707) ,
-  rgb (0.521643, 0.511367, 0.472639) ,
-  rgb (0.525348, 0.514285, 0.47266) ,
-  rgb (0.529086, 0.517207, 0.472543) ,
-  rgb (0.532829, 0.520135, 0.472401) ,
-  rgb (0.536553, 0.523067, 0.472352) ,
-  rgb (0.540307, 0.526005, 0.472163) ,
-  rgb (0.544069, 0.528948, 0.471947) ,
-  rgb (0.54784, 0.531895, 0.471704) ,
-  rgb (0.551612, 0.534849, 0.471439) ,
-  rgb (0.555393, 0.537807, 0.471147) ,
-  rgb (0.559181, 0.540771, 0.470829) ,
-  rgb (0.562972, 0.543741, 0.470488) ,
-  rgb (0.566802, 0.546715, 0.469988) ,
-  rgb (0.570607, 0.549695, 0.469593) ,
-  rgb (0.574417, 0.552682, 0.469172) ,
-  rgb (0.578236, 0.555673, 0.468724) ,
-  rgb (0.582087, 0.55867, 0.468118) ,
-  rgb (0.585916, 0.561674, 0.467618) ,
-  rgb (0.589753, 0.564682, 0.46709) ,
-  rgb (0.593622, 0.567697, 0.466401) ,
-  rgb (0.597469, 0.570718, 0.465821) ,
-  rgb (0.601354, 0.573743, 0.465074) ,
-  rgb (0.605211, 0.576777, 0.464441) ,
-  rgb (0.609105, 0.579816, 0.463638) ,
-  rgb (0.612977, 0.582861, 0.46295) ,
-  rgb (0.616852, 0.585913, 0.462237) ,
-  rgb (0.620765, 0.58897, 0.461351) ,
-  rgb (0.624654, 0.592034, 0.460583) ,
-  rgb (0.628576, 0.595104, 0.459641) ,
-  rgb (0.632506, 0.59818, 0.458668) ,
-  rgb (0.636412, 0.601264, 0.457818) ,
-  rgb (0.640352, 0.604354, 0.456791) ,
-  rgb (0.64427, 0.60745, 0.455886) ,
-  rgb (0.648222, 0.610553, 0.454801) ,
-  rgb (0.652178, 0.613664, 0.453689) ,
-  rgb (0.656114, 0.61678, 0.452702) ,
-  rgb (0.660082, 0.619904, 0.451534) ,
-  rgb (0.664055, 0.623034, 0.450338) ,
-  rgb (0.668008, 0.626171, 0.44927) ,
-  rgb (0.671991, 0.629316, 0.448018) ,
-  rgb (0.675981, 0.632468, 0.446736) ,
-  rgb (0.679979, 0.635626, 0.445424) ,
-  rgb (0.68395, 0.638793, 0.444251) ,
-  rgb (0.687957, 0.641966, 0.442886) ,
-  rgb (0.691971, 0.645145, 0.441491) ,
-  rgb (0.695985, 0.648334, 0.440072) ,
-  rgb (0.700008, 0.651529, 0.438624) ,
-  rgb (0.704037, 0.654731, 0.437147) ,
-  rgb (0.708067, 0.657942, 0.435647) ,
-  rgb (0.712105, 0.66116, 0.434117) ,
-  rgb (0.716177, 0.664384, 0.432386) ,
-  rgb (0.720222, 0.667618, 0.430805) ,
-  rgb (0.724274, 0.670859, 0.429194) ,
-  rgb (0.728334, 0.674107, 0.427554) ,
-  rgb (0.732422, 0.677364, 0.425717) ,
-  rgb (0.736488, 0.680629, 0.424028) ,
-  rgb (0.740589, 0.6839, 0.422131) ,
-  rgb (0.744664, 0.687181, 0.420393) ,
-  rgb (0.748772, 0.69047, 0.418448) ,
-  rgb (0.752886, 0.693766, 0.416472) ,
-  rgb (0.756975, 0.697071, 0.414659) ,
-  rgb (0.761096, 0.700384, 0.412638) ,
-  rgb (0.765223, 0.703705, 0.410587) ,
-  rgb (0.769353, 0.707035, 0.408516) ,
-  rgb (0.773486, 0.710373, 0.406422) ,
-  rgb (0.777651, 0.713719, 0.404112) ,
-  rgb (0.781795, 0.717074, 0.401966) ,
-  rgb (0.785965, 0.720438, 0.399613) ,
-  rgb (0.790116, 0.72381, 0.397423) ,
-  rgb (0.794298, 0.72719, 0.395016) ,
-  rgb (0.79848, 0.73058, 0.392597) ,
-  rgb (0.802667, 0.733978, 0.390153) ,
-  rgb (0.806859, 0.737385, 0.387684) ,
-  rgb (0.811054, 0.740801, 0.385198) ,
-  rgb (0.815274, 0.744226, 0.382504) ,
-  rgb (0.819499, 0.747659, 0.379785) ,
-  rgb (0.823729, 0.751101, 0.377043) ,
-  rgb (0.827959, 0.754553, 0.374292) ,
-  rgb (0.832192, 0.758014, 0.371529) ,
-  rgb (0.836429, 0.761483, 0.368747) ,
-  rgb (0.840693, 0.764962, 0.365746) ,
-  rgb (0.844957, 0.76845, 0.362741) ,
-  rgb (0.849223, 0.771947, 0.359729) ,
-  rgb (0.853515, 0.775454, 0.3565) ,
-  rgb (0.857809, 0.778969, 0.353259) ,
-  rgb (0.862105, 0.782494, 0.350011) ,
-  rgb (0.866421, 0.786028, 0.346571) ,
-  rgb (0.870717, 0.789572, 0.343333) ,
-  rgb (0.875057, 0.793125, 0.339685) ,
-  rgb (0.879378, 0.796687, 0.336241) ,
-  rgb (0.88372, 0.800258, 0.332599) ,
-  rgb (0.888081, 0.803839, 0.32877) ,
-  rgb (0.89244, 0.80743, 0.324968) ,
-  rgb (0.896818, 0.81103, 0.320982) ,
-  rgb (0.901195, 0.814639, 0.317021) ,
-  rgb (0.905589, 0.818257, 0.312889) ,
-  rgb (0.91, 0.821885, 0.308594) ,
-  rgb (0.914407, 0.825522, 0.304348) ,
-  rgb (0.918828, 0.829168, 0.29996) ,
-  rgb (0.923279, 0.832822, 0.295244) ,
-  rgb (0.927724, 0.836486, 0.290611) ,
-  rgb (0.93218, 0.840159, 0.28588) ,
-  rgb (0.93666, 0.843841, 0.280876) ,
-  rgb (0.941147, 0.84753, 0.275815) ,
-  rgb (0.945654, 0.851228, 0.270532) ,
-  rgb (0.950178, 0.854933, 0.265085) ,
-  rgb (0.954725, 0.858646, 0.259365) ,
-  rgb (0.959284, 0.862365, 0.253563) ,
-  rgb (0.963872, 0.866089, 0.247445) ,
-  rgb (0.968469, 0.869819, 0.24131) ,
-  rgb (0.973114, 0.87355, 0.234677) ,
-  rgb (0.97778, 0.877281, 0.227954) ,
-  rgb (0.982497, 0.881008, 0.220878) ,
-  rgb (0.987293, 0.884718, 0.213336) ,
-  rgb (0.992218, 0.888385, 0.205468) ,
-  rgb (0.994847, 0.892954, 0.203445) ,
-  rgb (0.995249, 0.898384, 0.207561) ,
-  rgb (0.995503, 0.903866, 0.21237) ,
-  rgb (0.995737, 0.909344, 0.217772)
-});
+    rgb (0.0, 0.135112, 0.304751) ,
+      rgb (0.0, 0.138068, 0.311105) ,
+      rgb (0.0, 0.141013, 0.317579) ,
+      rgb (0.0, 0.143951, 0.323982) ,
+      rgb (0.0, 0.146877, 0.330479) ,
+      rgb (0.0, 0.149791, 0.337065) ,
+      rgb (0.0, 0.152673, 0.343704) ,
+      rgb (0.0, 0.155377, 0.3505) ,
+      rgb (0.0, 0.157932, 0.357521) ,
+      rgb (0.0, 0.160495, 0.364534) ,
+      rgb (0.0, 0.163058, 0.371608) ,
+      rgb (0.0, 0.165621, 0.378769) ,
+      rgb (0.0, 0.168204, 0.385902) ,
+      rgb (0.0, 0.1708, 0.3931) ,
+      rgb (0.0, 0.17342, 0.400353) ,
+      rgb (0.0, 0.176082, 0.407577) ,
+      rgb (0.0, 0.178802, 0.414764) ,
+      rgb (0.0, 0.18161, 0.421859) ,
+      rgb (0.0, 0.18455, 0.428802) ,
+      rgb (0.0, 0.186915, 0.435532) ,
+      rgb (0.0, 0.188769, 0.439563) ,
+      rgb (0.0, 0.19095, 0.441085) ,
+      rgb (0.0, 0.193366, 0.441561) ,
+      rgb (0.003602, 0.195911, 0.441564) ,
+      rgb (0.017852, 0.198528, 0.441248) ,
+      rgb (0.03211, 0.201199, 0.440785) ,
+      rgb (0.046205, 0.203903, 0.440196) ,
+      rgb (0.058378, 0.206629, 0.439531) ,
+      rgb (0.068968, 0.209372, 0.438863) ,
+      rgb (0.078624, 0.212122, 0.438105) ,
+      rgb (0.087465, 0.214879, 0.437342) ,
+      rgb (0.095645, 0.217643, 0.436593) ,
+      rgb (0.103401, 0.220406, 0.43579) ,
+      rgb (0.110658, 0.22317, 0.435067) ,
+      rgb (0.117612, 0.225935, 0.434308) ,
+      rgb (0.124291, 0.228697, 0.433547) ,
+      rgb (0.130669, 0.231458, 0.43284) ,
+      rgb (0.13683, 0.234216, 0.432148) ,
+      rgb (0.142852, 0.236972, 0.431404) ,
+      rgb (0.148638, 0.239724, 0.430752) ,
+      rgb (0.154261, 0.242475, 0.43012) ,
+      rgb (0.159733, 0.245221, 0.429528) ,
+      rgb (0.165113, 0.247965, 0.428908) ,
+      rgb (0.170362, 0.250707, 0.428325) ,
+      rgb (0.17549, 0.253444, 0.42779) ,
+      rgb (0.180503, 0.25618, 0.427299) ,
+      rgb (0.185453, 0.258914, 0.426788) ,
+      rgb (0.190303, 0.261644, 0.426329) ,
+      rgb (0.195057, 0.264372, 0.425924) ,
+      rgb (0.199764, 0.267099, 0.425497) ,
+      rgb (0.204385, 0.269823, 0.425126) ,
+      rgb (0.208926, 0.272546, 0.424809) ,
+      rgb (0.213431, 0.275266, 0.42448) ,
+      rgb (0.217863, 0.277985, 0.424206) ,
+      rgb (0.222264, 0.280702, 0.423914) ,
+      rgb (0.226598, 0.283419, 0.423678) ,
+      rgb (0.230871, 0.286134, 0.423498) ,
+      rgb (0.23512, 0.288848, 0.423304) ,
+      rgb (0.239312, 0.291562, 0.423167) ,
+      rgb (0.243485, 0.294274, 0.423014) ,
+      rgb (0.247605, 0.296986, 0.422917) ,
+      rgb (0.251675, 0.299698, 0.422873) ,
+      rgb (0.255731, 0.302409, 0.422814) ,
+      rgb (0.25974, 0.30512, 0.42281) ,
+      rgb (0.263738, 0.307831, 0.422789) ,
+      rgb (0.267693, 0.310542, 0.422821) ,
+      rgb (0.271639, 0.313253, 0.422837) ,
+      rgb (0.275513, 0.315965, 0.422979) ,
+      rgb (0.279411, 0.318677, 0.423031) ,
+      rgb (0.28324, 0.32139, 0.423211) ,
+      rgb (0.287065, 0.324103, 0.423373) ,
+      rgb (0.290884, 0.326816, 0.423517) ,
+      rgb (0.294669, 0.329531, 0.423716) ,
+      rgb (0.298421, 0.332247, 0.423973) ,
+      rgb (0.302169, 0.334963, 0.424213) ,
+      rgb (0.305886, 0.337681, 0.424512) ,
+      rgb (0.309601, 0.340399, 0.42479) ,
+      rgb (0.313287, 0.34312, 0.42512) ,
+      rgb (0.316941, 0.345842, 0.425512) ,
+      rgb (0.320595, 0.348565, 0.425889) ,
+      rgb (0.32425, 0.351289, 0.42625) ,
+      rgb (0.327875, 0.354016, 0.42667) ,
+      rgb (0.331474, 0.356744, 0.427144) ,
+      rgb (0.335073, 0.359474, 0.427605) ,
+      rgb (0.338673, 0.362206, 0.428053) ,
+      rgb (0.342246, 0.364939, 0.428559) ,
+      rgb (0.345793, 0.367676, 0.429127) ,
+      rgb (0.349341, 0.370414, 0.429685) ,
+      rgb (0.352892, 0.373153, 0.430226) ,
+      rgb (0.356418, 0.375896, 0.430823) ,
+      rgb (0.359916, 0.378641, 0.431501) ,
+      rgb (0.363446, 0.381388, 0.432075) ,
+      rgb (0.366923, 0.384139, 0.432796) ,
+      rgb (0.37043, 0.38689, 0.433428) ,
+      rgb (0.373884, 0.389646, 0.434209) ,
+      rgb (0.377371, 0.392404, 0.43489) ,
+      rgb (0.38083, 0.395164, 0.435653) ,
+      rgb (0.384268, 0.397928, 0.436475) ,
+      rgb (0.387705, 0.400694, 0.437305) ,
+      rgb (0.391151, 0.403464, 0.438096) ,
+      rgb (0.394568, 0.406236, 0.438986) ,
+      rgb (0.397991, 0.409011, 0.439848) ,
+      rgb (0.401418, 0.41179, 0.440708) ,
+      rgb (0.40482, 0.414572, 0.441642) ,
+      rgb (0.408226, 0.417357, 0.44257) ,
+      rgb (0.411607, 0.420145, 0.443577) ,
+      rgb (0.414992, 0.422937, 0.444578) ,
+      rgb (0.418383, 0.425733, 0.44556) ,
+      rgb (0.421748, 0.428531, 0.44664) ,
+      rgb (0.42512, 0.431334, 0.447692) ,
+      rgb (0.428462, 0.43414, 0.448864) ,
+      rgb (0.431817, 0.43695, 0.449982) ,
+      rgb (0.435168, 0.439763, 0.451134) ,
+      rgb (0.438504, 0.44258, 0.452341) ,
+      rgb (0.44181, 0.445402, 0.453659) ,
+      rgb (0.445148, 0.448226, 0.454885) ,
+      rgb (0.448447, 0.451053, 0.456264) ,
+      rgb (0.451759, 0.453887, 0.457582) ,
+      rgb (0.455072, 0.456718, 0.458976) ,
+      rgb (0.458366, 0.459552, 0.460457) ,
+      rgb (0.461616, 0.462405, 0.461969) ,
+      rgb (0.464947, 0.465241, 0.463395) ,
+      rgb (0.468254, 0.468083, 0.464908) ,
+      rgb (0.471501, 0.47096, 0.466357) ,
+      rgb (0.474812, 0.473832, 0.467681) ,
+      rgb (0.478186, 0.476699, 0.468845) ,
+      rgb (0.481622, 0.479573, 0.469767) ,
+      rgb (0.485141, 0.482451, 0.470384) ,
+      rgb (0.488697, 0.485318, 0.471008) ,
+      rgb (0.492278, 0.488198, 0.471453) ,
+      rgb (0.495913, 0.491076, 0.471751) ,
+      rgb (0.499552, 0.49396, 0.472032) ,
+      rgb (0.503185, 0.496851, 0.472305) ,
+      rgb (0.506866, 0.499743, 0.472432) ,
+      rgb (0.51054, 0.502643, 0.47255) ,
+      rgb (0.514226, 0.505546, 0.47264) ,
+      rgb (0.51792, 0.508454, 0.472707) ,
+      rgb (0.521643, 0.511367, 0.472639) ,
+      rgb (0.525348, 0.514285, 0.47266) ,
+      rgb (0.529086, 0.517207, 0.472543) ,
+      rgb (0.532829, 0.520135, 0.472401) ,
+      rgb (0.536553, 0.523067, 0.472352) ,
+      rgb (0.540307, 0.526005, 0.472163) ,
+      rgb (0.544069, 0.528948, 0.471947) ,
+      rgb (0.54784, 0.531895, 0.471704) ,
+      rgb (0.551612, 0.534849, 0.471439) ,
+      rgb (0.555393, 0.537807, 0.471147) ,
+      rgb (0.559181, 0.540771, 0.470829) ,
+      rgb (0.562972, 0.543741, 0.470488) ,
+      rgb (0.566802, 0.546715, 0.469988) ,
+      rgb (0.570607, 0.549695, 0.469593) ,
+      rgb (0.574417, 0.552682, 0.469172) ,
+      rgb (0.578236, 0.555673, 0.468724) ,
+      rgb (0.582087, 0.55867, 0.468118) ,
+      rgb (0.585916, 0.561674, 0.467618) ,
+      rgb (0.589753, 0.564682, 0.46709) ,
+      rgb (0.593622, 0.567697, 0.466401) ,
+      rgb (0.597469, 0.570718, 0.465821) ,
+      rgb (0.601354, 0.573743, 0.465074) ,
+      rgb (0.605211, 0.576777, 0.464441) ,
+      rgb (0.609105, 0.579816, 0.463638) ,
+      rgb (0.612977, 0.582861, 0.46295) ,
+      rgb (0.616852, 0.585913, 0.462237) ,
+      rgb (0.620765, 0.58897, 0.461351) ,
+      rgb (0.624654, 0.592034, 0.460583) ,
+      rgb (0.628576, 0.595104, 0.459641) ,
+      rgb (0.632506, 0.59818, 0.458668) ,
+      rgb (0.636412, 0.601264, 0.457818) ,
+      rgb (0.640352, 0.604354, 0.456791) ,
+      rgb (0.64427, 0.60745, 0.455886) ,
+      rgb (0.648222, 0.610553, 0.454801) ,
+      rgb (0.652178, 0.613664, 0.453689) ,
+      rgb (0.656114, 0.61678, 0.452702) ,
+      rgb (0.660082, 0.619904, 0.451534) ,
+      rgb (0.664055, 0.623034, 0.450338) ,
+      rgb (0.668008, 0.626171, 0.44927) ,
+      rgb (0.671991, 0.629316, 0.448018) ,
+      rgb (0.675981, 0.632468, 0.446736) ,
+      rgb (0.679979, 0.635626, 0.445424) ,
+      rgb (0.68395, 0.638793, 0.444251) ,
+      rgb (0.687957, 0.641966, 0.442886) ,
+      rgb (0.691971, 0.645145, 0.441491) ,
+      rgb (0.695985, 0.648334, 0.440072) ,
+      rgb (0.700008, 0.651529, 0.438624) ,
+      rgb (0.704037, 0.654731, 0.437147) ,
+      rgb (0.708067, 0.657942, 0.435647) ,
+      rgb (0.712105, 0.66116, 0.434117) ,
+      rgb (0.716177, 0.664384, 0.432386) ,
+      rgb (0.720222, 0.667618, 0.430805) ,
+      rgb (0.724274, 0.670859, 0.429194) ,
+      rgb (0.728334, 0.674107, 0.427554) ,
+      rgb (0.732422, 0.677364, 0.425717) ,
+      rgb (0.736488, 0.680629, 0.424028) ,
+      rgb (0.740589, 0.6839, 0.422131) ,
+      rgb (0.744664, 0.687181, 0.420393) ,
+      rgb (0.748772, 0.69047, 0.418448) ,
+      rgb (0.752886, 0.693766, 0.416472) ,
+      rgb (0.756975, 0.697071, 0.414659) ,
+      rgb (0.761096, 0.700384, 0.412638) ,
+      rgb (0.765223, 0.703705, 0.410587) ,
+      rgb (0.769353, 0.707035, 0.408516) ,
+      rgb (0.773486, 0.710373, 0.406422) ,
+      rgb (0.777651, 0.713719, 0.404112) ,
+      rgb (0.781795, 0.717074, 0.401966) ,
+      rgb (0.785965, 0.720438, 0.399613) ,
+      rgb (0.790116, 0.72381, 0.397423) ,
+      rgb (0.794298, 0.72719, 0.395016) ,
+      rgb (0.79848, 0.73058, 0.392597) ,
+      rgb (0.802667, 0.733978, 0.390153) ,
+      rgb (0.806859, 0.737385, 0.387684) ,
+      rgb (0.811054, 0.740801, 0.385198) ,
+      rgb (0.815274, 0.744226, 0.382504) ,
+      rgb (0.819499, 0.747659, 0.379785) ,
+      rgb (0.823729, 0.751101, 0.377043) ,
+      rgb (0.827959, 0.754553, 0.374292) ,
+      rgb (0.832192, 0.758014, 0.371529) ,
+      rgb (0.836429, 0.761483, 0.368747) ,
+      rgb (0.840693, 0.764962, 0.365746) ,
+      rgb (0.844957, 0.76845, 0.362741) ,
+      rgb (0.849223, 0.771947, 0.359729) ,
+      rgb (0.853515, 0.775454, 0.3565) ,
+      rgb (0.857809, 0.778969, 0.353259) ,
+      rgb (0.862105, 0.782494, 0.350011) ,
+      rgb (0.866421, 0.786028, 0.346571) ,
+      rgb (0.870717, 0.789572, 0.343333) ,
+      rgb (0.875057, 0.793125, 0.339685) ,
+      rgb (0.879378, 0.796687, 0.336241) ,
+      rgb (0.88372, 0.800258, 0.332599) ,
+      rgb (0.888081, 0.803839, 0.32877) ,
+      rgb (0.89244, 0.80743, 0.324968) ,
+      rgb (0.896818, 0.81103, 0.320982) ,
+      rgb (0.901195, 0.814639, 0.317021) ,
+      rgb (0.905589, 0.818257, 0.312889) ,
+      rgb (0.91, 0.821885, 0.308594) ,
+      rgb (0.914407, 0.825522, 0.304348) ,
+      rgb (0.918828, 0.829168, 0.29996) ,
+      rgb (0.923279, 0.832822, 0.295244) ,
+      rgb (0.927724, 0.836486, 0.290611) ,
+      rgb (0.93218, 0.840159, 0.28588) ,
+      rgb (0.93666, 0.843841, 0.280876) ,
+      rgb (0.941147, 0.84753, 0.275815) ,
+      rgb (0.945654, 0.851228, 0.270532) ,
+      rgb (0.950178, 0.854933, 0.265085) ,
+      rgb (0.954725, 0.858646, 0.259365) ,
+      rgb (0.959284, 0.862365, 0.253563) ,
+      rgb (0.963872, 0.866089, 0.247445) ,
+      rgb (0.968469, 0.869819, 0.24131) ,
+      rgb (0.973114, 0.87355, 0.234677) ,
+      rgb (0.97778, 0.877281, 0.227954) ,
+      rgb (0.982497, 0.881008, 0.220878) ,
+      rgb (0.987293, 0.884718, 0.213336) ,
+      rgb (0.992218, 0.888385, 0.205468) ,
+      rgb (0.994847, 0.892954, 0.203445) ,
+      rgb (0.995249, 0.898384, 0.207561) ,
+      rgb (0.995503, 0.903866, 0.21237) ,
+      rgb (0.995737, 0.909344, 0.217772)
+      });
 
 
 list_data inferno = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002267, 0.00127, 0.01857) ,
-  rgb (0.003299, 0.002249, 0.024239) ,
-  rgb (0.004547, 0.003392, 0.030909) ,
-  rgb (0.006006, 0.004692, 0.038558) ,
-  rgb (0.007676, 0.006136, 0.046836) ,
-  rgb (0.009561, 0.007713, 0.055143) ,
-  rgb (0.011663, 0.009417, 0.06346) ,
-  rgb (0.013995, 0.011225, 0.071862) ,
-  rgb (0.016561, 0.013136, 0.080282) ,
-  rgb (0.019373, 0.015133, 0.088767) ,
-  rgb (0.022447, 0.017199, 0.097327) ,
-  rgb (0.025793, 0.019331, 0.10593) ,
-  rgb (0.029432, 0.021503, 0.114621) ,
-  rgb (0.033385, 0.023702, 0.123397) ,
-  rgb (0.037668, 0.025921, 0.132232) ,
-  rgb (0.042253, 0.028139, 0.141141) ,
-  rgb (0.046915, 0.030324, 0.150164) ,
-  rgb (0.051644, 0.032474, 0.159254) ,
-  rgb (0.056449, 0.034569, 0.168414) ,
-  rgb (0.06134, 0.03659, 0.177642) ,
-  rgb (0.066331, 0.038504, 0.186962) ,
-  rgb (0.071429, 0.040294, 0.196354) ,
-  rgb (0.076637, 0.041905, 0.205799) ,
-  rgb (0.081962, 0.043328, 0.215289) ,
-  rgb (0.087411, 0.044556, 0.224813) ,
-  rgb (0.09299, 0.045583, 0.234358) ,
-  rgb (0.098702, 0.046402, 0.243904) ,
-  rgb (0.104551, 0.047008, 0.25343) ,
-  rgb (0.110536, 0.047399, 0.262912) ,
-  rgb (0.116656, 0.047574, 0.272321) ,
-  rgb (0.122908, 0.047536, 0.281624) ,
-  rgb (0.129285, 0.047293, 0.290788) ,
-  rgb (0.135778, 0.046856, 0.299776) ,
-  rgb (0.142378, 0.046242, 0.308553) ,
-  rgb (0.149073, 0.045468, 0.317085) ,
-  rgb (0.15585, 0.044559, 0.325338) ,
-  rgb (0.162689, 0.043554, 0.333277) ,
-  rgb (0.169575, 0.042489, 0.340874) ,
-  rgb (0.176493, 0.041402, 0.348111) ,
-  rgb (0.183429, 0.040329, 0.354971) ,
-  rgb (0.190367, 0.039309, 0.361447) ,
-  rgb (0.197297, 0.0384, 0.367535) ,
-  rgb (0.204209, 0.037632, 0.373238) ,
-  rgb (0.211095, 0.03703, 0.378563) ,
-  rgb (0.217949, 0.036615, 0.383522) ,
-  rgb (0.224763, 0.036405, 0.388129) ,
-  rgb (0.231538, 0.036405, 0.3924) ,
-  rgb (0.238273, 0.036621, 0.396353) ,
-  rgb (0.244967, 0.037055, 0.400007) ,
-  rgb (0.25162, 0.037705, 0.403378) ,
-  rgb (0.258234, 0.038571, 0.406485) ,
-  rgb (0.26481, 0.039647, 0.409345) ,
-  rgb (0.271347, 0.040922, 0.411976) ,
-  rgb (0.27785, 0.042353, 0.414392) ,
-  rgb (0.284321, 0.043933, 0.416608) ,
-  rgb (0.290763, 0.045644, 0.418637) ,
-  rgb (0.297178, 0.04747, 0.420491) ,
-  rgb (0.303568, 0.049396, 0.422182) ,
-  rgb (0.309935, 0.051407, 0.423721) ,
-  rgb (0.316282, 0.05349, 0.425116) ,
-  rgb (0.32261, 0.055634, 0.426377) ,
-  rgb (0.328921, 0.057827, 0.427511) ,
-  rgb (0.335217, 0.06006, 0.428524) ,
-  rgb (0.3415, 0.062325, 0.429425) ,
-  rgb (0.347771, 0.064616, 0.430217) ,
-  rgb (0.354032, 0.066925, 0.430906) ,
-  rgb (0.360284, 0.069247, 0.431497) ,
-  rgb (0.366529, 0.071579, 0.431994) ,
-  rgb (0.372768, 0.073915, 0.4324) ,
-  rgb (0.379001, 0.076253, 0.432719) ,
-  rgb (0.385228, 0.078591, 0.432955) ,
-  rgb (0.391453, 0.080927, 0.433109) ,
-  rgb (0.397674, 0.083257, 0.433183) ,
-  rgb (0.403894, 0.08558, 0.433179) ,
-  rgb (0.410113, 0.087896, 0.433098) ,
-  rgb (0.416331, 0.090203, 0.432943) ,
-  rgb (0.422549, 0.092501, 0.432714) ,
-  rgb (0.428768, 0.09479, 0.432412) ,
-  rgb (0.434987, 0.097069, 0.432039) ,
-  rgb (0.441207, 0.099338, 0.431594) ,
-  rgb (0.447428, 0.101597, 0.43108) ,
-  rgb (0.453651, 0.103848, 0.430498) ,
-  rgb (0.459875, 0.106089, 0.429846) ,
-  rgb (0.4661, 0.108322, 0.429125) ,
-  rgb (0.472328, 0.110547, 0.428334) ,
-  rgb (0.478558, 0.112764, 0.427475) ,
-  rgb (0.484789, 0.114974, 0.426548) ,
-  rgb (0.491022, 0.117179, 0.425552) ,
-  rgb (0.497257, 0.119379, 0.424488) ,
-  rgb (0.503493, 0.121575, 0.423356) ,
-  rgb (0.50973, 0.123769, 0.422156) ,
-  rgb (0.515967, 0.12596, 0.420887) ,
-  rgb (0.522206, 0.12815, 0.419549) ,
-  rgb (0.528444, 0.130341, 0.418142) ,
-  rgb (0.534683, 0.132534, 0.416667) ,
-  rgb (0.54092, 0.134729, 0.415123) ,
-  rgb (0.547157, 0.136929, 0.413511) ,
-  rgb (0.553392, 0.139134, 0.411829) ,
-  rgb (0.559624, 0.141346, 0.410078) ,
-  rgb (0.565854, 0.143567, 0.408258) ,
-  rgb (0.572081, 0.145797, 0.406369) ,
-  rgb (0.578304, 0.148039, 0.404411) ,
-  rgb (0.584521, 0.150294, 0.402385) ,
-  rgb (0.590734, 0.152563, 0.40029) ,
-  rgb (0.59694, 0.154848, 0.398125) ,
-  rgb (0.603139, 0.157151, 0.395891) ,
-  rgb (0.60933, 0.159474, 0.393589) ,
-  rgb (0.615513, 0.161817, 0.391219) ,
-  rgb (0.621685, 0.164184, 0.388781) ,
-  rgb (0.627847, 0.166575, 0.386276) ,
-  rgb (0.633998, 0.168992, 0.383704) ,
-  rgb (0.640135, 0.171438, 0.381065) ,
-  rgb (0.64626, 0.173914, 0.378359) ,
-  rgb (0.652369, 0.176421, 0.375586) ,
-  rgb (0.658463, 0.178962, 0.372748) ,
-  rgb (0.66454, 0.181539, 0.369846) ,
-  rgb (0.670599, 0.184153, 0.366879) ,
-  rgb (0.676638, 0.186807, 0.363849) ,
-  rgb (0.682656, 0.189501, 0.360757) ,
-  rgb (0.688653, 0.192239, 0.357603) ,
-  rgb (0.694627, 0.195021, 0.354388) ,
-  rgb (0.700576, 0.197851, 0.351113) ,
-  rgb (0.7065, 0.200728, 0.347777) ,
-  rgb (0.712396, 0.203656, 0.344383) ,
-  rgb (0.718264, 0.206636, 0.340931) ,
-  rgb (0.724103, 0.20967, 0.337424) ,
-  rgb (0.729909, 0.212759, 0.333861) ,
-  rgb (0.735683, 0.215906, 0.330245) ,
-  rgb (0.741423, 0.219112, 0.326576) ,
-  rgb (0.747127, 0.222378, 0.322856) ,
-  rgb (0.752794, 0.225706, 0.319085) ,
-  rgb (0.758422, 0.229097, 0.315266) ,
-  rgb (0.76401, 0.232554, 0.311399) ,
-  rgb (0.769556, 0.236077, 0.307485) ,
-  rgb (0.775059, 0.239667, 0.303526) ,
-  rgb (0.780517, 0.243327, 0.299523) ,
-  rgb (0.785929, 0.247056, 0.295477) ,
-  rgb (0.791293, 0.250856, 0.29139) ,
-  rgb (0.796607, 0.254728, 0.287264) ,
-  rgb (0.801871, 0.258674, 0.283099) ,
-  rgb (0.807082, 0.262692, 0.278898) ,
-  rgb (0.812239, 0.266786, 0.274661) ,
-  rgb (0.817341, 0.270954, 0.27039) ,
-  rgb (0.822386, 0.275197, 0.266085) ,
-  rgb (0.827372, 0.279517, 0.26175) ,
-  rgb (0.832299, 0.283913, 0.257383) ,
-  rgb (0.837165, 0.288385, 0.252988) ,
-  rgb (0.841969, 0.292933, 0.248564) ,
-  rgb (0.846709, 0.297559, 0.244113) ,
-  rgb (0.851384, 0.30226, 0.239636) ,
-  rgb (0.855992, 0.307038, 0.235133) ,
-  rgb (0.860533, 0.311892, 0.230606) ,
-  rgb (0.865006, 0.316822, 0.226055) ,
-  rgb (0.869409, 0.321827, 0.221482) ,
-  rgb (0.873741, 0.326906, 0.216886) ,
-  rgb (0.878001, 0.33206, 0.212268) ,
-  rgb (0.882188, 0.337287, 0.207628) ,
-  rgb (0.886302, 0.342586, 0.202968) ,
-  rgb (0.890341, 0.347957, 0.198286) ,
-  rgb (0.894305, 0.353399, 0.193584) ,
-  rgb (0.898192, 0.358911, 0.18886) ,
-  rgb (0.902003, 0.364492, 0.184116) ,
-  rgb (0.905735, 0.37014, 0.17935) ,
-  rgb (0.90939, 0.375856, 0.174563) ,
-  rgb (0.912966, 0.381636, 0.169755) ,
-  rgb (0.916462, 0.387481, 0.164924) ,
-  rgb (0.919879, 0.393389, 0.16007) ,
-  rgb (0.923215, 0.399359, 0.155193) ,
-  rgb (0.92647, 0.405389, 0.150292) ,
-  rgb (0.929644, 0.411479, 0.145367) ,
-  rgb (0.932737, 0.417627, 0.140417) ,
-  rgb (0.935747, 0.423831, 0.13544) ,
-  rgb (0.938675, 0.430091, 0.130438) ,
-  rgb (0.941521, 0.436405, 0.125409) ,
-  rgb (0.944285, 0.442772, 0.120354) ,
-  rgb (0.946965, 0.449191, 0.115272) ,
-  rgb (0.949562, 0.45566, 0.110164) ,
-  rgb (0.952075, 0.462178, 0.105031) ,
-  rgb (0.954506, 0.468744, 0.099874) ,
-  rgb (0.956852, 0.475356, 0.094695) ,
-  rgb (0.959114, 0.482014, 0.089499) ,
-  rgb (0.961293, 0.488716, 0.084289) ,
-  rgb (0.963387, 0.495462, 0.079073) ,
-  rgb (0.965397, 0.502249, 0.073859) ,
-  rgb (0.967322, 0.509078, 0.068659) ,
-  rgb (0.969163, 0.515946, 0.063488) ,
-  rgb (0.970919, 0.522853, 0.058367) ,
-  rgb (0.97259, 0.529798, 0.053324) ,
-  rgb (0.974176, 0.53678, 0.048392) ,
-  rgb (0.975677, 0.543798, 0.043618) ,
-  rgb (0.977092, 0.55085, 0.03905) ,
-  rgb (0.978422, 0.557937, 0.034931) ,
-  rgb (0.979666, 0.565057, 0.031409) ,
-  rgb (0.980824, 0.572209, 0.028508) ,
-  rgb (0.981895, 0.579392, 0.02625) ,
-  rgb (0.982881, 0.586606, 0.024661) ,
-  rgb (0.983779, 0.593849, 0.02377) ,
-  rgb (0.984591, 0.601122, 0.023606) ,
-  rgb (0.985315, 0.608422, 0.024202) ,
-  rgb (0.985952, 0.61575, 0.025592) ,
-  rgb (0.986502, 0.623105, 0.027814) ,
-  rgb (0.986964, 0.630485, 0.030908) ,
-  rgb (0.987337, 0.63789, 0.034916) ,
-  rgb (0.987622, 0.64532, 0.039886) ,
-  rgb (0.987819, 0.652773, 0.045581) ,
-  rgb (0.987926, 0.66025, 0.05175) ,
-  rgb (0.987945, 0.667748, 0.058329) ,
-  rgb (0.987874, 0.675267, 0.065257) ,
-  rgb (0.987714, 0.682807, 0.072489) ,
-  rgb (0.987464, 0.690366, 0.07999) ,
-  rgb (0.987124, 0.697944, 0.087731) ,
-  rgb (0.986694, 0.70554, 0.095694) ,
-  rgb (0.986175, 0.713153, 0.103863) ,
-  rgb (0.985566, 0.720782, 0.112229) ,
-  rgb (0.984865, 0.728427, 0.120785) ,
-  rgb (0.984075, 0.736087, 0.129527) ,
-  rgb (0.983196, 0.743758, 0.138453) ,
-  rgb (0.982228, 0.751442, 0.147565) ,
-  rgb (0.981173, 0.759135, 0.156863) ,
-  rgb (0.980032, 0.766837, 0.166353) ,
-  rgb (0.978806, 0.774545, 0.176037) ,
-  rgb (0.977497, 0.782258, 0.185923) ,
-  rgb (0.976108, 0.789974, 0.196018) ,
-  rgb (0.974638, 0.797692, 0.206332) ,
-  rgb (0.973088, 0.805409, 0.216877) ,
-  rgb (0.971468, 0.813122, 0.227658) ,
-  rgb (0.969783, 0.820825, 0.238686) ,
-  rgb (0.968041, 0.828515, 0.249972) ,
-  rgb (0.966243, 0.836191, 0.261534) ,
-  rgb (0.964394, 0.843848, 0.273391) ,
-  rgb (0.962517, 0.851476, 0.285546) ,
-  rgb (0.960626, 0.859069, 0.29801) ,
-  rgb (0.95872, 0.866624, 0.31082) ,
-  rgb (0.956834, 0.874129, 0.323974) ,
-  rgb (0.954997, 0.881569, 0.337475) ,
-  rgb (0.953215, 0.888942, 0.351369) ,
-  rgb (0.951546, 0.896226, 0.365627) ,
-  rgb (0.950018, 0.903409, 0.380271) ,
-  rgb (0.948683, 0.910473, 0.395289) ,
-  rgb (0.947594, 0.917399, 0.410665) ,
-  rgb (0.946809, 0.924168, 0.426373) ,
-  rgb (0.946392, 0.930761, 0.442367) ,
-  rgb (0.946403, 0.937159, 0.458592) ,
-  rgb (0.946903, 0.943348, 0.47497) ,
-  rgb (0.947937, 0.949318, 0.491426) ,
-  rgb (0.949545, 0.955063, 0.50786) ,
-  rgb (0.95174, 0.960587, 0.524203) ,
-  rgb (0.954529, 0.965896, 0.540361) ,
-  rgb (0.957896, 0.971003, 0.556275) ,
-  rgb (0.961812, 0.975924, 0.571925) ,
-  rgb (0.966249, 0.980678, 0.587206) ,
-  rgb (0.971162, 0.985282, 0.602154) ,
-  rgb (0.976511, 0.989753, 0.61676) ,
-  rgb (0.982257, 0.994109, 0.631017) ,
-  rgb (0.988362, 0.998364, 0.644924)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002267, 0.00127, 0.01857) ,
+      rgb (0.003299, 0.002249, 0.024239) ,
+      rgb (0.004547, 0.003392, 0.030909) ,
+      rgb (0.006006, 0.004692, 0.038558) ,
+      rgb (0.007676, 0.006136, 0.046836) ,
+      rgb (0.009561, 0.007713, 0.055143) ,
+      rgb (0.011663, 0.009417, 0.06346) ,
+      rgb (0.013995, 0.011225, 0.071862) ,
+      rgb (0.016561, 0.013136, 0.080282) ,
+      rgb (0.019373, 0.015133, 0.088767) ,
+      rgb (0.022447, 0.017199, 0.097327) ,
+      rgb (0.025793, 0.019331, 0.10593) ,
+      rgb (0.029432, 0.021503, 0.114621) ,
+      rgb (0.033385, 0.023702, 0.123397) ,
+      rgb (0.037668, 0.025921, 0.132232) ,
+      rgb (0.042253, 0.028139, 0.141141) ,
+      rgb (0.046915, 0.030324, 0.150164) ,
+      rgb (0.051644, 0.032474, 0.159254) ,
+      rgb (0.056449, 0.034569, 0.168414) ,
+      rgb (0.06134, 0.03659, 0.177642) ,
+      rgb (0.066331, 0.038504, 0.186962) ,
+      rgb (0.071429, 0.040294, 0.196354) ,
+      rgb (0.076637, 0.041905, 0.205799) ,
+      rgb (0.081962, 0.043328, 0.215289) ,
+      rgb (0.087411, 0.044556, 0.224813) ,
+      rgb (0.09299, 0.045583, 0.234358) ,
+      rgb (0.098702, 0.046402, 0.243904) ,
+      rgb (0.104551, 0.047008, 0.25343) ,
+      rgb (0.110536, 0.047399, 0.262912) ,
+      rgb (0.116656, 0.047574, 0.272321) ,
+      rgb (0.122908, 0.047536, 0.281624) ,
+      rgb (0.129285, 0.047293, 0.290788) ,
+      rgb (0.135778, 0.046856, 0.299776) ,
+      rgb (0.142378, 0.046242, 0.308553) ,
+      rgb (0.149073, 0.045468, 0.317085) ,
+      rgb (0.15585, 0.044559, 0.325338) ,
+      rgb (0.162689, 0.043554, 0.333277) ,
+      rgb (0.169575, 0.042489, 0.340874) ,
+      rgb (0.176493, 0.041402, 0.348111) ,
+      rgb (0.183429, 0.040329, 0.354971) ,
+      rgb (0.190367, 0.039309, 0.361447) ,
+      rgb (0.197297, 0.0384, 0.367535) ,
+      rgb (0.204209, 0.037632, 0.373238) ,
+      rgb (0.211095, 0.03703, 0.378563) ,
+      rgb (0.217949, 0.036615, 0.383522) ,
+      rgb (0.224763, 0.036405, 0.388129) ,
+      rgb (0.231538, 0.036405, 0.3924) ,
+      rgb (0.238273, 0.036621, 0.396353) ,
+      rgb (0.244967, 0.037055, 0.400007) ,
+      rgb (0.25162, 0.037705, 0.403378) ,
+      rgb (0.258234, 0.038571, 0.406485) ,
+      rgb (0.26481, 0.039647, 0.409345) ,
+      rgb (0.271347, 0.040922, 0.411976) ,
+      rgb (0.27785, 0.042353, 0.414392) ,
+      rgb (0.284321, 0.043933, 0.416608) ,
+      rgb (0.290763, 0.045644, 0.418637) ,
+      rgb (0.297178, 0.04747, 0.420491) ,
+      rgb (0.303568, 0.049396, 0.422182) ,
+      rgb (0.309935, 0.051407, 0.423721) ,
+      rgb (0.316282, 0.05349, 0.425116) ,
+      rgb (0.32261, 0.055634, 0.426377) ,
+      rgb (0.328921, 0.057827, 0.427511) ,
+      rgb (0.335217, 0.06006, 0.428524) ,
+      rgb (0.3415, 0.062325, 0.429425) ,
+      rgb (0.347771, 0.064616, 0.430217) ,
+      rgb (0.354032, 0.066925, 0.430906) ,
+      rgb (0.360284, 0.069247, 0.431497) ,
+      rgb (0.366529, 0.071579, 0.431994) ,
+      rgb (0.372768, 0.073915, 0.4324) ,
+      rgb (0.379001, 0.076253, 0.432719) ,
+      rgb (0.385228, 0.078591, 0.432955) ,
+      rgb (0.391453, 0.080927, 0.433109) ,
+      rgb (0.397674, 0.083257, 0.433183) ,
+      rgb (0.403894, 0.08558, 0.433179) ,
+      rgb (0.410113, 0.087896, 0.433098) ,
+      rgb (0.416331, 0.090203, 0.432943) ,
+      rgb (0.422549, 0.092501, 0.432714) ,
+      rgb (0.428768, 0.09479, 0.432412) ,
+      rgb (0.434987, 0.097069, 0.432039) ,
+      rgb (0.441207, 0.099338, 0.431594) ,
+      rgb (0.447428, 0.101597, 0.43108) ,
+      rgb (0.453651, 0.103848, 0.430498) ,
+      rgb (0.459875, 0.106089, 0.429846) ,
+      rgb (0.4661, 0.108322, 0.429125) ,
+      rgb (0.472328, 0.110547, 0.428334) ,
+      rgb (0.478558, 0.112764, 0.427475) ,
+      rgb (0.484789, 0.114974, 0.426548) ,
+      rgb (0.491022, 0.117179, 0.425552) ,
+      rgb (0.497257, 0.119379, 0.424488) ,
+      rgb (0.503493, 0.121575, 0.423356) ,
+      rgb (0.50973, 0.123769, 0.422156) ,
+      rgb (0.515967, 0.12596, 0.420887) ,
+      rgb (0.522206, 0.12815, 0.419549) ,
+      rgb (0.528444, 0.130341, 0.418142) ,
+      rgb (0.534683, 0.132534, 0.416667) ,
+      rgb (0.54092, 0.134729, 0.415123) ,
+      rgb (0.547157, 0.136929, 0.413511) ,
+      rgb (0.553392, 0.139134, 0.411829) ,
+      rgb (0.559624, 0.141346, 0.410078) ,
+      rgb (0.565854, 0.143567, 0.408258) ,
+      rgb (0.572081, 0.145797, 0.406369) ,
+      rgb (0.578304, 0.148039, 0.404411) ,
+      rgb (0.584521, 0.150294, 0.402385) ,
+      rgb (0.590734, 0.152563, 0.40029) ,
+      rgb (0.59694, 0.154848, 0.398125) ,
+      rgb (0.603139, 0.157151, 0.395891) ,
+      rgb (0.60933, 0.159474, 0.393589) ,
+      rgb (0.615513, 0.161817, 0.391219) ,
+      rgb (0.621685, 0.164184, 0.388781) ,
+      rgb (0.627847, 0.166575, 0.386276) ,
+      rgb (0.633998, 0.168992, 0.383704) ,
+      rgb (0.640135, 0.171438, 0.381065) ,
+      rgb (0.64626, 0.173914, 0.378359) ,
+      rgb (0.652369, 0.176421, 0.375586) ,
+      rgb (0.658463, 0.178962, 0.372748) ,
+      rgb (0.66454, 0.181539, 0.369846) ,
+      rgb (0.670599, 0.184153, 0.366879) ,
+      rgb (0.676638, 0.186807, 0.363849) ,
+      rgb (0.682656, 0.189501, 0.360757) ,
+      rgb (0.688653, 0.192239, 0.357603) ,
+      rgb (0.694627, 0.195021, 0.354388) ,
+      rgb (0.700576, 0.197851, 0.351113) ,
+      rgb (0.7065, 0.200728, 0.347777) ,
+      rgb (0.712396, 0.203656, 0.344383) ,
+      rgb (0.718264, 0.206636, 0.340931) ,
+      rgb (0.724103, 0.20967, 0.337424) ,
+      rgb (0.729909, 0.212759, 0.333861) ,
+      rgb (0.735683, 0.215906, 0.330245) ,
+      rgb (0.741423, 0.219112, 0.326576) ,
+      rgb (0.747127, 0.222378, 0.322856) ,
+      rgb (0.752794, 0.225706, 0.319085) ,
+      rgb (0.758422, 0.229097, 0.315266) ,
+      rgb (0.76401, 0.232554, 0.311399) ,
+      rgb (0.769556, 0.236077, 0.307485) ,
+      rgb (0.775059, 0.239667, 0.303526) ,
+      rgb (0.780517, 0.243327, 0.299523) ,
+      rgb (0.785929, 0.247056, 0.295477) ,
+      rgb (0.791293, 0.250856, 0.29139) ,
+      rgb (0.796607, 0.254728, 0.287264) ,
+      rgb (0.801871, 0.258674, 0.283099) ,
+      rgb (0.807082, 0.262692, 0.278898) ,
+      rgb (0.812239, 0.266786, 0.274661) ,
+      rgb (0.817341, 0.270954, 0.27039) ,
+      rgb (0.822386, 0.275197, 0.266085) ,
+      rgb (0.827372, 0.279517, 0.26175) ,
+      rgb (0.832299, 0.283913, 0.257383) ,
+      rgb (0.837165, 0.288385, 0.252988) ,
+      rgb (0.841969, 0.292933, 0.248564) ,
+      rgb (0.846709, 0.297559, 0.244113) ,
+      rgb (0.851384, 0.30226, 0.239636) ,
+      rgb (0.855992, 0.307038, 0.235133) ,
+      rgb (0.860533, 0.311892, 0.230606) ,
+      rgb (0.865006, 0.316822, 0.226055) ,
+      rgb (0.869409, 0.321827, 0.221482) ,
+      rgb (0.873741, 0.326906, 0.216886) ,
+      rgb (0.878001, 0.33206, 0.212268) ,
+      rgb (0.882188, 0.337287, 0.207628) ,
+      rgb (0.886302, 0.342586, 0.202968) ,
+      rgb (0.890341, 0.347957, 0.198286) ,
+      rgb (0.894305, 0.353399, 0.193584) ,
+      rgb (0.898192, 0.358911, 0.18886) ,
+      rgb (0.902003, 0.364492, 0.184116) ,
+      rgb (0.905735, 0.37014, 0.17935) ,
+      rgb (0.90939, 0.375856, 0.174563) ,
+      rgb (0.912966, 0.381636, 0.169755) ,
+      rgb (0.916462, 0.387481, 0.164924) ,
+      rgb (0.919879, 0.393389, 0.16007) ,
+      rgb (0.923215, 0.399359, 0.155193) ,
+      rgb (0.92647, 0.405389, 0.150292) ,
+      rgb (0.929644, 0.411479, 0.145367) ,
+      rgb (0.932737, 0.417627, 0.140417) ,
+      rgb (0.935747, 0.423831, 0.13544) ,
+      rgb (0.938675, 0.430091, 0.130438) ,
+      rgb (0.941521, 0.436405, 0.125409) ,
+      rgb (0.944285, 0.442772, 0.120354) ,
+      rgb (0.946965, 0.449191, 0.115272) ,
+      rgb (0.949562, 0.45566, 0.110164) ,
+      rgb (0.952075, 0.462178, 0.105031) ,
+      rgb (0.954506, 0.468744, 0.099874) ,
+      rgb (0.956852, 0.475356, 0.094695) ,
+      rgb (0.959114, 0.482014, 0.089499) ,
+      rgb (0.961293, 0.488716, 0.084289) ,
+      rgb (0.963387, 0.495462, 0.079073) ,
+      rgb (0.965397, 0.502249, 0.073859) ,
+      rgb (0.967322, 0.509078, 0.068659) ,
+      rgb (0.969163, 0.515946, 0.063488) ,
+      rgb (0.970919, 0.522853, 0.058367) ,
+      rgb (0.97259, 0.529798, 0.053324) ,
+      rgb (0.974176, 0.53678, 0.048392) ,
+      rgb (0.975677, 0.543798, 0.043618) ,
+      rgb (0.977092, 0.55085, 0.03905) ,
+      rgb (0.978422, 0.557937, 0.034931) ,
+      rgb (0.979666, 0.565057, 0.031409) ,
+      rgb (0.980824, 0.572209, 0.028508) ,
+      rgb (0.981895, 0.579392, 0.02625) ,
+      rgb (0.982881, 0.586606, 0.024661) ,
+      rgb (0.983779, 0.593849, 0.02377) ,
+      rgb (0.984591, 0.601122, 0.023606) ,
+      rgb (0.985315, 0.608422, 0.024202) ,
+      rgb (0.985952, 0.61575, 0.025592) ,
+      rgb (0.986502, 0.623105, 0.027814) ,
+      rgb (0.986964, 0.630485, 0.030908) ,
+      rgb (0.987337, 0.63789, 0.034916) ,
+      rgb (0.987622, 0.64532, 0.039886) ,
+      rgb (0.987819, 0.652773, 0.045581) ,
+      rgb (0.987926, 0.66025, 0.05175) ,
+      rgb (0.987945, 0.667748, 0.058329) ,
+      rgb (0.987874, 0.675267, 0.065257) ,
+      rgb (0.987714, 0.682807, 0.072489) ,
+      rgb (0.987464, 0.690366, 0.07999) ,
+      rgb (0.987124, 0.697944, 0.087731) ,
+      rgb (0.986694, 0.70554, 0.095694) ,
+      rgb (0.986175, 0.713153, 0.103863) ,
+      rgb (0.985566, 0.720782, 0.112229) ,
+      rgb (0.984865, 0.728427, 0.120785) ,
+      rgb (0.984075, 0.736087, 0.129527) ,
+      rgb (0.983196, 0.743758, 0.138453) ,
+      rgb (0.982228, 0.751442, 0.147565) ,
+      rgb (0.981173, 0.759135, 0.156863) ,
+      rgb (0.980032, 0.766837, 0.166353) ,
+      rgb (0.978806, 0.774545, 0.176037) ,
+      rgb (0.977497, 0.782258, 0.185923) ,
+      rgb (0.976108, 0.789974, 0.196018) ,
+      rgb (0.974638, 0.797692, 0.206332) ,
+      rgb (0.973088, 0.805409, 0.216877) ,
+      rgb (0.971468, 0.813122, 0.227658) ,
+      rgb (0.969783, 0.820825, 0.238686) ,
+      rgb (0.968041, 0.828515, 0.249972) ,
+      rgb (0.966243, 0.836191, 0.261534) ,
+      rgb (0.964394, 0.843848, 0.273391) ,
+      rgb (0.962517, 0.851476, 0.285546) ,
+      rgb (0.960626, 0.859069, 0.29801) ,
+      rgb (0.95872, 0.866624, 0.31082) ,
+      rgb (0.956834, 0.874129, 0.323974) ,
+      rgb (0.954997, 0.881569, 0.337475) ,
+      rgb (0.953215, 0.888942, 0.351369) ,
+      rgb (0.951546, 0.896226, 0.365627) ,
+      rgb (0.950018, 0.903409, 0.380271) ,
+      rgb (0.948683, 0.910473, 0.395289) ,
+      rgb (0.947594, 0.917399, 0.410665) ,
+      rgb (0.946809, 0.924168, 0.426373) ,
+      rgb (0.946392, 0.930761, 0.442367) ,
+      rgb (0.946403, 0.937159, 0.458592) ,
+      rgb (0.946903, 0.943348, 0.47497) ,
+      rgb (0.947937, 0.949318, 0.491426) ,
+      rgb (0.949545, 0.955063, 0.50786) ,
+      rgb (0.95174, 0.960587, 0.524203) ,
+      rgb (0.954529, 0.965896, 0.540361) ,
+      rgb (0.957896, 0.971003, 0.556275) ,
+      rgb (0.961812, 0.975924, 0.571925) ,
+      rgb (0.966249, 0.980678, 0.587206) ,
+      rgb (0.971162, 0.985282, 0.602154) ,
+      rgb (0.976511, 0.989753, 0.61676) ,
+      rgb (0.982257, 0.994109, 0.631017) ,
+      rgb (0.988362, 0.998364, 0.644924)
+      });
 
 
 list_data magma = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002258, 0.001295, 0.018331) ,
-  rgb (0.003279, 0.002305, 0.023708) ,
-  rgb (0.004512, 0.00349, 0.029965) ,
-  rgb (0.00595, 0.004843, 0.03713) ,
-  rgb (0.007588, 0.006356, 0.044973) ,
-  rgb (0.009426, 0.008022, 0.052844) ,
-  rgb (0.011465, 0.009828, 0.06075) ,
-  rgb (0.013708, 0.011771, 0.068667) ,
-  rgb (0.016156, 0.01384, 0.076603) ,
-  rgb (0.018815, 0.016026, 0.084584) ,
-  rgb (0.021692, 0.01832, 0.09261) ,
-  rgb (0.024792, 0.020715, 0.100676) ,
-  rgb (0.028123, 0.023201, 0.108787) ,
-  rgb (0.031696, 0.025765, 0.116965) ,
-  rgb (0.03552, 0.028397, 0.125209) ,
-  rgb (0.039608, 0.03109, 0.133515) ,
-  rgb (0.04383, 0.03383, 0.141886) ,
-  rgb (0.048062, 0.036607, 0.150327) ,
-  rgb (0.05232, 0.039407, 0.158841) ,
-  rgb (0.056615, 0.04216, 0.167446) ,
-  rgb (0.060949, 0.044794, 0.176129) ,
-  rgb (0.06533, 0.047318, 0.184892) ,
-  rgb (0.069764, 0.049726, 0.193735) ,
-  rgb (0.074257, 0.052017, 0.20266) ,
-  rgb (0.078815, 0.054184, 0.211667) ,
-  rgb (0.083446, 0.056225, 0.220755) ,
-  rgb (0.088155, 0.058133, 0.229922) ,
-  rgb (0.092949, 0.059904, 0.239164) ,
-  rgb (0.097833, 0.061531, 0.248477) ,
-  rgb (0.102815, 0.06301, 0.257854) ,
-  rgb (0.107899, 0.064335, 0.267289) ,
-  rgb (0.113094, 0.065492, 0.276784) ,
-  rgb (0.118405, 0.066479, 0.286321) ,
-  rgb (0.123833, 0.067295, 0.295879) ,
-  rgb (0.12938, 0.067935, 0.305443) ,
-  rgb (0.135053, 0.068391, 0.315) ,
-  rgb (0.140858, 0.068654, 0.324538) ,
-  rgb (0.146785, 0.068738, 0.334011) ,
-  rgb (0.152839, 0.068637, 0.343404) ,
-  rgb (0.159018, 0.068354, 0.352688) ,
-  rgb (0.165308, 0.067911, 0.361816) ,
-  rgb (0.171713, 0.067305, 0.370771) ,
-  rgb (0.178212, 0.066576, 0.379497) ,
-  rgb (0.184801, 0.065732, 0.387973) ,
-  rgb (0.19146, 0.064818, 0.396152) ,
-  rgb (0.198177, 0.063862, 0.404009) ,
-  rgb (0.204935, 0.062907, 0.411514) ,
-  rgb (0.211718, 0.061992, 0.418647) ,
-  rgb (0.218512, 0.061158, 0.425392) ,
-  rgb (0.225302, 0.060445, 0.431742) ,
-  rgb (0.232077, 0.059889, 0.437695) ,
-  rgb (0.238826, 0.059517, 0.443256) ,
-  rgb (0.245543, 0.059352, 0.448436) ,
-  rgb (0.25222, 0.059415, 0.453248) ,
-  rgb (0.258857, 0.059706, 0.45771) ,
-  rgb (0.265447, 0.060237, 0.46184) ,
-  rgb (0.271994, 0.060994, 0.46566) ,
-  rgb (0.278493, 0.061978, 0.46919) ,
-  rgb (0.284951, 0.063168, 0.472451) ,
-  rgb (0.291366, 0.064553, 0.475462) ,
-  rgb (0.29774, 0.066117, 0.478243) ,
-  rgb (0.304081, 0.067835, 0.480812) ,
-  rgb (0.310382, 0.069702, 0.483186) ,
-  rgb (0.316654, 0.07169, 0.48538) ,
-  rgb (0.322899, 0.073782, 0.487408) ,
-  rgb (0.329114, 0.075972, 0.489287) ,
-  rgb (0.335308, 0.078236, 0.491024) ,
-  rgb (0.341482, 0.080564, 0.492631) ,
-  rgb (0.347636, 0.082946, 0.494121) ,
-  rgb (0.353773, 0.085373, 0.495501) ,
-  rgb (0.359898, 0.087831, 0.496778) ,
-  rgb (0.366012, 0.090314, 0.49796) ,
-  rgb (0.372116, 0.092816, 0.499053) ,
-  rgb (0.378211, 0.095332, 0.500067) ,
-  rgb (0.384299, 0.097855, 0.501002) ,
-  rgb (0.390384, 0.100379, 0.501864) ,
-  rgb (0.396467, 0.102902, 0.502658) ,
-  rgb (0.402548, 0.10542, 0.503386) ,
-  rgb (0.408629, 0.10793, 0.504052) ,
-  rgb (0.414709, 0.110431, 0.504662) ,
-  rgb (0.420791, 0.11292, 0.505215) ,
-  rgb (0.426877, 0.115395, 0.505714) ,
-  rgb (0.432967, 0.117855, 0.50616) ,
-  rgb (0.439062, 0.120298, 0.506555) ,
-  rgb (0.445163, 0.122724, 0.506901) ,
-  rgb (0.451271, 0.125132, 0.507198) ,
-  rgb (0.457386, 0.127522, 0.507448) ,
-  rgb (0.463508, 0.129893, 0.507652) ,
-  rgb (0.46964, 0.132245, 0.507809) ,
-  rgb (0.47578, 0.134577, 0.507921) ,
-  rgb (0.481929, 0.136891, 0.507989) ,
-  rgb (0.488088, 0.139186, 0.508011) ,
-  rgb (0.494258, 0.141462, 0.507988) ,
-  rgb (0.500438, 0.143719, 0.50792) ,
-  rgb (0.506629, 0.145958, 0.507806) ,
-  rgb (0.512831, 0.148179, 0.507648) ,
-  rgb (0.519045, 0.150383, 0.507443) ,
-  rgb (0.52527, 0.152569, 0.507192) ,
-  rgb (0.531507, 0.154739, 0.506895) ,
-  rgb (0.537755, 0.156894, 0.506551) ,
-  rgb (0.544015, 0.159033, 0.506159) ,
-  rgb (0.550287, 0.161158, 0.505719) ,
-  rgb (0.556571, 0.163269, 0.50523) ,
-  rgb (0.562866, 0.165368, 0.504692) ,
-  rgb (0.569172, 0.167454, 0.504105) ,
-  rgb (0.57549, 0.16953, 0.503466) ,
-  rgb (0.581819, 0.171596, 0.502777) ,
-  rgb (0.588158, 0.173652, 0.502035) ,
-  rgb (0.594508, 0.175701, 0.501241) ,
-  rgb (0.600868, 0.177743, 0.500394) ,
-  rgb (0.607238, 0.179779, 0.499492) ,
-  rgb (0.613617, 0.181811, 0.498536) ,
-  rgb (0.620005, 0.18384, 0.497524) ,
-  rgb (0.626401, 0.185867, 0.496456) ,
-  rgb (0.632805, 0.187893, 0.495332) ,
-  rgb (0.639216, 0.189921, 0.49415) ,
-  rgb (0.645633, 0.191952, 0.49291) ,
-  rgb (0.652056, 0.193986, 0.491611) ,
-  rgb (0.658483, 0.196027, 0.490253) ,
-  rgb (0.664915, 0.198075, 0.488836) ,
-  rgb (0.671349, 0.200133, 0.487358) ,
-  rgb (0.677786, 0.202203, 0.485819) ,
-  rgb (0.684224, 0.204286, 0.484219) ,
-  rgb (0.690661, 0.206384, 0.482558) ,
-  rgb (0.697098, 0.208501, 0.480835) ,
-  rgb (0.703532, 0.210638, 0.479049) ,
-  rgb (0.709962, 0.212797, 0.477201) ,
-  rgb (0.716387, 0.214982, 0.47529) ,
-  rgb (0.722805, 0.217194, 0.473316) ,
-  rgb (0.729216, 0.219437, 0.471279) ,
-  rgb (0.735616, 0.221713, 0.46918) ,
-  rgb (0.742004, 0.224025, 0.467018) ,
-  rgb (0.748378, 0.226377, 0.464794) ,
-  rgb (0.754737, 0.228772, 0.462509) ,
-  rgb (0.761077, 0.231214, 0.460162) ,
-  rgb (0.767398, 0.233705, 0.457755) ,
-  rgb (0.773695, 0.236249, 0.455289) ,
-  rgb (0.779968, 0.238851, 0.452765) ,
-  rgb (0.786212, 0.241514, 0.450184) ,
-  rgb (0.792427, 0.244242, 0.447543) ,
-  rgb (0.798608, 0.24704, 0.444848) ,
-  rgb (0.804752, 0.249911, 0.442102) ,
-  rgb (0.810855, 0.252861, 0.439305) ,
-  rgb (0.816914, 0.255895, 0.436461) ,
-  rgb (0.822926, 0.259016, 0.433573) ,
-  rgb (0.828886, 0.262229, 0.430644) ,
-  rgb (0.834791, 0.26554, 0.427671) ,
-  rgb (0.840636, 0.268953, 0.424666) ,
-  rgb (0.846416, 0.272473, 0.421631) ,
-  rgb (0.852126, 0.276106, 0.418573) ,
-  rgb (0.857763, 0.279857, 0.415496) ,
-  rgb (0.86332, 0.283729, 0.412403) ,
-  rgb (0.868793, 0.287728, 0.409303) ,
-  rgb (0.874176, 0.291859, 0.406205) ,
-  rgb (0.879464, 0.296125, 0.403118) ,
-  rgb (0.884651, 0.30053, 0.400047) ,
-  rgb (0.889731, 0.305079, 0.397002) ,
-  rgb (0.8947, 0.309773, 0.393995) ,
-  rgb (0.899552, 0.314616, 0.391037) ,
-  rgb (0.904281, 0.31961, 0.388137) ,
-  rgb (0.908884, 0.324755, 0.385308) ,
-  rgb (0.913354, 0.330052, 0.382563) ,
-  rgb (0.917689, 0.3355, 0.379915) ,
-  rgb (0.921884, 0.341098, 0.377376) ,
-  rgb (0.925937, 0.346844, 0.374959) ,
-  rgb (0.929845, 0.352734, 0.372677) ,
-  rgb (0.933606, 0.358764, 0.370541) ,
-  rgb (0.937221, 0.364929, 0.368567) ,
-  rgb (0.940687, 0.371224, 0.366762) ,
-  rgb (0.944006, 0.377643, 0.365136) ,
-  rgb (0.94718, 0.384178, 0.363701) ,
-  rgb (0.95021, 0.39082, 0.362468) ,
-  rgb (0.953099, 0.397563, 0.361438) ,
-  rgb (0.955849, 0.4044, 0.360619) ,
-  rgb (0.958464, 0.411324, 0.360014) ,
-  rgb (0.960949, 0.418323, 0.35963) ,
-  rgb (0.96331, 0.42539, 0.359469) ,
-  rgb (0.965549, 0.432519, 0.359529) ,
-  rgb (0.967671, 0.439703, 0.35981) ,
-  rgb (0.96968, 0.446936, 0.360311) ,
-  rgb (0.971582, 0.45421, 0.36103) ,
-  rgb (0.973381, 0.46152, 0.361965) ,
-  rgb (0.975082, 0.468861, 0.363111) ,
-  rgb (0.97669, 0.476226, 0.364466) ,
-  rgb (0.97821, 0.483612, 0.366025) ,
-  rgb (0.979645, 0.491014, 0.367783) ,
-  rgb (0.981, 0.498428, 0.369734) ,
-  rgb (0.982279, 0.505851, 0.371874) ,
-  rgb (0.983485, 0.51328, 0.374198) ,
-  rgb (0.984622, 0.520713, 0.376698) ,
-  rgb (0.985693, 0.528148, 0.379371) ,
-  rgb (0.9867, 0.535582, 0.38221) ,
-  rgb (0.987646, 0.543015, 0.38521) ,
-  rgb (0.988533, 0.550446, 0.388365) ,
-  rgb (0.989363, 0.557873, 0.391671) ,
-  rgb (0.990138, 0.565296, 0.395122) ,
-  rgb (0.990871, 0.572706, 0.398714) ,
-  rgb (0.991558, 0.580107, 0.402441) ,
-  rgb (0.992196, 0.587502, 0.406299) ,
-  rgb (0.992785, 0.594891, 0.410283) ,
-  rgb (0.993326, 0.602275, 0.41439) ,
-  rgb (0.993834, 0.609644, 0.418613) ,
-  rgb (0.994309, 0.616999, 0.42295) ,
-  rgb (0.994738, 0.62435, 0.427397) ,
-  rgb (0.995122, 0.631696, 0.431951) ,
-  rgb (0.99548, 0.639027, 0.436607) ,
-  rgb (0.99581, 0.646344, 0.441361) ,
-  rgb (0.996096, 0.653659, 0.446213) ,
-  rgb (0.996341, 0.660969, 0.45116) ,
-  rgb (0.99658, 0.668256, 0.456192) ,
-  rgb (0.996775, 0.675541, 0.461314) ,
-  rgb (0.996925, 0.682828, 0.466526) ,
-  rgb (0.997077, 0.690088, 0.471811) ,
-  rgb (0.997186, 0.697349, 0.477182) ,
-  rgb (0.997254, 0.704611, 0.482635) ,
-  rgb (0.997325, 0.711848, 0.488154) ,
-  rgb (0.997351, 0.719089, 0.493755) ,
-  rgb (0.997351, 0.726324, 0.499428) ,
-  rgb (0.997341, 0.733545, 0.505167) ,
-  rgb (0.997285, 0.740772, 0.510983) ,
-  rgb (0.997228, 0.747981, 0.516859) ,
-  rgb (0.997138, 0.75519, 0.522806) ,
-  rgb (0.997019, 0.762398, 0.528821) ,
-  rgb (0.996898, 0.769591, 0.534892) ,
-  rgb (0.996727, 0.776795, 0.541039) ,
-  rgb (0.996571, 0.783977, 0.547233) ,
-  rgb (0.996369, 0.791167, 0.553499) ,
-  rgb (0.996162, 0.798348, 0.55982) ,
-  rgb (0.995932, 0.805527, 0.566202) ,
-  rgb (0.99568, 0.812706, 0.572645) ,
-  rgb (0.995424, 0.819875, 0.57914) ,
-  rgb (0.995131, 0.827052, 0.585701) ,
-  rgb (0.994851, 0.834213, 0.592307) ,
-  rgb (0.994524, 0.841387, 0.598983) ,
-  rgb (0.994222, 0.84854, 0.605696) ,
-  rgb (0.993866, 0.855711, 0.612482) ,
-  rgb (0.993545, 0.862859, 0.619299) ,
-  rgb (0.99317, 0.870024, 0.626189) ,
-  rgb (0.992831, 0.877168, 0.633109) ,
-  rgb (0.99244, 0.88433, 0.640099) ,
-  rgb (0.992089, 0.89147, 0.647116) ,
-  rgb (0.991688, 0.898627, 0.654202) ,
-  rgb (0.991332, 0.905763, 0.661309) ,
-  rgb (0.99093, 0.912915, 0.668481) ,
-  rgb (0.99057, 0.920049, 0.675675) ,
-  rgb (0.990175, 0.927196, 0.682926) ,
-  rgb (0.989815, 0.934329, 0.690198) ,
-  rgb (0.989434, 0.94147, 0.697519) ,
-  rgb (0.989077, 0.948604, 0.704863) ,
-  rgb (0.988717, 0.955742, 0.712242) ,
-  rgb (0.988367, 0.962878, 0.719649) ,
-  rgb (0.988033, 0.970012, 0.727077) ,
-  rgb (0.987691, 0.977154, 0.734536) ,
-  rgb (0.987387, 0.984288, 0.742002) ,
-  rgb (0.987053, 0.991438, 0.749504)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002258, 0.001295, 0.018331) ,
+      rgb (0.003279, 0.002305, 0.023708) ,
+      rgb (0.004512, 0.00349, 0.029965) ,
+      rgb (0.00595, 0.004843, 0.03713) ,
+      rgb (0.007588, 0.006356, 0.044973) ,
+      rgb (0.009426, 0.008022, 0.052844) ,
+      rgb (0.011465, 0.009828, 0.06075) ,
+      rgb (0.013708, 0.011771, 0.068667) ,
+      rgb (0.016156, 0.01384, 0.076603) ,
+      rgb (0.018815, 0.016026, 0.084584) ,
+      rgb (0.021692, 0.01832, 0.09261) ,
+      rgb (0.024792, 0.020715, 0.100676) ,
+      rgb (0.028123, 0.023201, 0.108787) ,
+      rgb (0.031696, 0.025765, 0.116965) ,
+      rgb (0.03552, 0.028397, 0.125209) ,
+      rgb (0.039608, 0.03109, 0.133515) ,
+      rgb (0.04383, 0.03383, 0.141886) ,
+      rgb (0.048062, 0.036607, 0.150327) ,
+      rgb (0.05232, 0.039407, 0.158841) ,
+      rgb (0.056615, 0.04216, 0.167446) ,
+      rgb (0.060949, 0.044794, 0.176129) ,
+      rgb (0.06533, 0.047318, 0.184892) ,
+      rgb (0.069764, 0.049726, 0.193735) ,
+      rgb (0.074257, 0.052017, 0.20266) ,
+      rgb (0.078815, 0.054184, 0.211667) ,
+      rgb (0.083446, 0.056225, 0.220755) ,
+      rgb (0.088155, 0.058133, 0.229922) ,
+      rgb (0.092949, 0.059904, 0.239164) ,
+      rgb (0.097833, 0.061531, 0.248477) ,
+      rgb (0.102815, 0.06301, 0.257854) ,
+      rgb (0.107899, 0.064335, 0.267289) ,
+      rgb (0.113094, 0.065492, 0.276784) ,
+      rgb (0.118405, 0.066479, 0.286321) ,
+      rgb (0.123833, 0.067295, 0.295879) ,
+      rgb (0.12938, 0.067935, 0.305443) ,
+      rgb (0.135053, 0.068391, 0.315) ,
+      rgb (0.140858, 0.068654, 0.324538) ,
+      rgb (0.146785, 0.068738, 0.334011) ,
+      rgb (0.152839, 0.068637, 0.343404) ,
+      rgb (0.159018, 0.068354, 0.352688) ,
+      rgb (0.165308, 0.067911, 0.361816) ,
+      rgb (0.171713, 0.067305, 0.370771) ,
+      rgb (0.178212, 0.066576, 0.379497) ,
+      rgb (0.184801, 0.065732, 0.387973) ,
+      rgb (0.19146, 0.064818, 0.396152) ,
+      rgb (0.198177, 0.063862, 0.404009) ,
+      rgb (0.204935, 0.062907, 0.411514) ,
+      rgb (0.211718, 0.061992, 0.418647) ,
+      rgb (0.218512, 0.061158, 0.425392) ,
+      rgb (0.225302, 0.060445, 0.431742) ,
+      rgb (0.232077, 0.059889, 0.437695) ,
+      rgb (0.238826, 0.059517, 0.443256) ,
+      rgb (0.245543, 0.059352, 0.448436) ,
+      rgb (0.25222, 0.059415, 0.453248) ,
+      rgb (0.258857, 0.059706, 0.45771) ,
+      rgb (0.265447, 0.060237, 0.46184) ,
+      rgb (0.271994, 0.060994, 0.46566) ,
+      rgb (0.278493, 0.061978, 0.46919) ,
+      rgb (0.284951, 0.063168, 0.472451) ,
+      rgb (0.291366, 0.064553, 0.475462) ,
+      rgb (0.29774, 0.066117, 0.478243) ,
+      rgb (0.304081, 0.067835, 0.480812) ,
+      rgb (0.310382, 0.069702, 0.483186) ,
+      rgb (0.316654, 0.07169, 0.48538) ,
+      rgb (0.322899, 0.073782, 0.487408) ,
+      rgb (0.329114, 0.075972, 0.489287) ,
+      rgb (0.335308, 0.078236, 0.491024) ,
+      rgb (0.341482, 0.080564, 0.492631) ,
+      rgb (0.347636, 0.082946, 0.494121) ,
+      rgb (0.353773, 0.085373, 0.495501) ,
+      rgb (0.359898, 0.087831, 0.496778) ,
+      rgb (0.366012, 0.090314, 0.49796) ,
+      rgb (0.372116, 0.092816, 0.499053) ,
+      rgb (0.378211, 0.095332, 0.500067) ,
+      rgb (0.384299, 0.097855, 0.501002) ,
+      rgb (0.390384, 0.100379, 0.501864) ,
+      rgb (0.396467, 0.102902, 0.502658) ,
+      rgb (0.402548, 0.10542, 0.503386) ,
+      rgb (0.408629, 0.10793, 0.504052) ,
+      rgb (0.414709, 0.110431, 0.504662) ,
+      rgb (0.420791, 0.11292, 0.505215) ,
+      rgb (0.426877, 0.115395, 0.505714) ,
+      rgb (0.432967, 0.117855, 0.50616) ,
+      rgb (0.439062, 0.120298, 0.506555) ,
+      rgb (0.445163, 0.122724, 0.506901) ,
+      rgb (0.451271, 0.125132, 0.507198) ,
+      rgb (0.457386, 0.127522, 0.507448) ,
+      rgb (0.463508, 0.129893, 0.507652) ,
+      rgb (0.46964, 0.132245, 0.507809) ,
+      rgb (0.47578, 0.134577, 0.507921) ,
+      rgb (0.481929, 0.136891, 0.507989) ,
+      rgb (0.488088, 0.139186, 0.508011) ,
+      rgb (0.494258, 0.141462, 0.507988) ,
+      rgb (0.500438, 0.143719, 0.50792) ,
+      rgb (0.506629, 0.145958, 0.507806) ,
+      rgb (0.512831, 0.148179, 0.507648) ,
+      rgb (0.519045, 0.150383, 0.507443) ,
+      rgb (0.52527, 0.152569, 0.507192) ,
+      rgb (0.531507, 0.154739, 0.506895) ,
+      rgb (0.537755, 0.156894, 0.506551) ,
+      rgb (0.544015, 0.159033, 0.506159) ,
+      rgb (0.550287, 0.161158, 0.505719) ,
+      rgb (0.556571, 0.163269, 0.50523) ,
+      rgb (0.562866, 0.165368, 0.504692) ,
+      rgb (0.569172, 0.167454, 0.504105) ,
+      rgb (0.57549, 0.16953, 0.503466) ,
+      rgb (0.581819, 0.171596, 0.502777) ,
+      rgb (0.588158, 0.173652, 0.502035) ,
+      rgb (0.594508, 0.175701, 0.501241) ,
+      rgb (0.600868, 0.177743, 0.500394) ,
+      rgb (0.607238, 0.179779, 0.499492) ,
+      rgb (0.613617, 0.181811, 0.498536) ,
+      rgb (0.620005, 0.18384, 0.497524) ,
+      rgb (0.626401, 0.185867, 0.496456) ,
+      rgb (0.632805, 0.187893, 0.495332) ,
+      rgb (0.639216, 0.189921, 0.49415) ,
+      rgb (0.645633, 0.191952, 0.49291) ,
+      rgb (0.652056, 0.193986, 0.491611) ,
+      rgb (0.658483, 0.196027, 0.490253) ,
+      rgb (0.664915, 0.198075, 0.488836) ,
+      rgb (0.671349, 0.200133, 0.487358) ,
+      rgb (0.677786, 0.202203, 0.485819) ,
+      rgb (0.684224, 0.204286, 0.484219) ,
+      rgb (0.690661, 0.206384, 0.482558) ,
+      rgb (0.697098, 0.208501, 0.480835) ,
+      rgb (0.703532, 0.210638, 0.479049) ,
+      rgb (0.709962, 0.212797, 0.477201) ,
+      rgb (0.716387, 0.214982, 0.47529) ,
+      rgb (0.722805, 0.217194, 0.473316) ,
+      rgb (0.729216, 0.219437, 0.471279) ,
+      rgb (0.735616, 0.221713, 0.46918) ,
+      rgb (0.742004, 0.224025, 0.467018) ,
+      rgb (0.748378, 0.226377, 0.464794) ,
+      rgb (0.754737, 0.228772, 0.462509) ,
+      rgb (0.761077, 0.231214, 0.460162) ,
+      rgb (0.767398, 0.233705, 0.457755) ,
+      rgb (0.773695, 0.236249, 0.455289) ,
+      rgb (0.779968, 0.238851, 0.452765) ,
+      rgb (0.786212, 0.241514, 0.450184) ,
+      rgb (0.792427, 0.244242, 0.447543) ,
+      rgb (0.798608, 0.24704, 0.444848) ,
+      rgb (0.804752, 0.249911, 0.442102) ,
+      rgb (0.810855, 0.252861, 0.439305) ,
+      rgb (0.816914, 0.255895, 0.436461) ,
+      rgb (0.822926, 0.259016, 0.433573) ,
+      rgb (0.828886, 0.262229, 0.430644) ,
+      rgb (0.834791, 0.26554, 0.427671) ,
+      rgb (0.840636, 0.268953, 0.424666) ,
+      rgb (0.846416, 0.272473, 0.421631) ,
+      rgb (0.852126, 0.276106, 0.418573) ,
+      rgb (0.857763, 0.279857, 0.415496) ,
+      rgb (0.86332, 0.283729, 0.412403) ,
+      rgb (0.868793, 0.287728, 0.409303) ,
+      rgb (0.874176, 0.291859, 0.406205) ,
+      rgb (0.879464, 0.296125, 0.403118) ,
+      rgb (0.884651, 0.30053, 0.400047) ,
+      rgb (0.889731, 0.305079, 0.397002) ,
+      rgb (0.8947, 0.309773, 0.393995) ,
+      rgb (0.899552, 0.314616, 0.391037) ,
+      rgb (0.904281, 0.31961, 0.388137) ,
+      rgb (0.908884, 0.324755, 0.385308) ,
+      rgb (0.913354, 0.330052, 0.382563) ,
+      rgb (0.917689, 0.3355, 0.379915) ,
+      rgb (0.921884, 0.341098, 0.377376) ,
+      rgb (0.925937, 0.346844, 0.374959) ,
+      rgb (0.929845, 0.352734, 0.372677) ,
+      rgb (0.933606, 0.358764, 0.370541) ,
+      rgb (0.937221, 0.364929, 0.368567) ,
+      rgb (0.940687, 0.371224, 0.366762) ,
+      rgb (0.944006, 0.377643, 0.365136) ,
+      rgb (0.94718, 0.384178, 0.363701) ,
+      rgb (0.95021, 0.39082, 0.362468) ,
+      rgb (0.953099, 0.397563, 0.361438) ,
+      rgb (0.955849, 0.4044, 0.360619) ,
+      rgb (0.958464, 0.411324, 0.360014) ,
+      rgb (0.960949, 0.418323, 0.35963) ,
+      rgb (0.96331, 0.42539, 0.359469) ,
+      rgb (0.965549, 0.432519, 0.359529) ,
+      rgb (0.967671, 0.439703, 0.35981) ,
+      rgb (0.96968, 0.446936, 0.360311) ,
+      rgb (0.971582, 0.45421, 0.36103) ,
+      rgb (0.973381, 0.46152, 0.361965) ,
+      rgb (0.975082, 0.468861, 0.363111) ,
+      rgb (0.97669, 0.476226, 0.364466) ,
+      rgb (0.97821, 0.483612, 0.366025) ,
+      rgb (0.979645, 0.491014, 0.367783) ,
+      rgb (0.981, 0.498428, 0.369734) ,
+      rgb (0.982279, 0.505851, 0.371874) ,
+      rgb (0.983485, 0.51328, 0.374198) ,
+      rgb (0.984622, 0.520713, 0.376698) ,
+      rgb (0.985693, 0.528148, 0.379371) ,
+      rgb (0.9867, 0.535582, 0.38221) ,
+      rgb (0.987646, 0.543015, 0.38521) ,
+      rgb (0.988533, 0.550446, 0.388365) ,
+      rgb (0.989363, 0.557873, 0.391671) ,
+      rgb (0.990138, 0.565296, 0.395122) ,
+      rgb (0.990871, 0.572706, 0.398714) ,
+      rgb (0.991558, 0.580107, 0.402441) ,
+      rgb (0.992196, 0.587502, 0.406299) ,
+      rgb (0.992785, 0.594891, 0.410283) ,
+      rgb (0.993326, 0.602275, 0.41439) ,
+      rgb (0.993834, 0.609644, 0.418613) ,
+      rgb (0.994309, 0.616999, 0.42295) ,
+      rgb (0.994738, 0.62435, 0.427397) ,
+      rgb (0.995122, 0.631696, 0.431951) ,
+      rgb (0.99548, 0.639027, 0.436607) ,
+      rgb (0.99581, 0.646344, 0.441361) ,
+      rgb (0.996096, 0.653659, 0.446213) ,
+      rgb (0.996341, 0.660969, 0.45116) ,
+      rgb (0.99658, 0.668256, 0.456192) ,
+      rgb (0.996775, 0.675541, 0.461314) ,
+      rgb (0.996925, 0.682828, 0.466526) ,
+      rgb (0.997077, 0.690088, 0.471811) ,
+      rgb (0.997186, 0.697349, 0.477182) ,
+      rgb (0.997254, 0.704611, 0.482635) ,
+      rgb (0.997325, 0.711848, 0.488154) ,
+      rgb (0.997351, 0.719089, 0.493755) ,
+      rgb (0.997351, 0.726324, 0.499428) ,
+      rgb (0.997341, 0.733545, 0.505167) ,
+      rgb (0.997285, 0.740772, 0.510983) ,
+      rgb (0.997228, 0.747981, 0.516859) ,
+      rgb (0.997138, 0.75519, 0.522806) ,
+      rgb (0.997019, 0.762398, 0.528821) ,
+      rgb (0.996898, 0.769591, 0.534892) ,
+      rgb (0.996727, 0.776795, 0.541039) ,
+      rgb (0.996571, 0.783977, 0.547233) ,
+      rgb (0.996369, 0.791167, 0.553499) ,
+      rgb (0.996162, 0.798348, 0.55982) ,
+      rgb (0.995932, 0.805527, 0.566202) ,
+      rgb (0.99568, 0.812706, 0.572645) ,
+      rgb (0.995424, 0.819875, 0.57914) ,
+      rgb (0.995131, 0.827052, 0.585701) ,
+      rgb (0.994851, 0.834213, 0.592307) ,
+      rgb (0.994524, 0.841387, 0.598983) ,
+      rgb (0.994222, 0.84854, 0.605696) ,
+      rgb (0.993866, 0.855711, 0.612482) ,
+      rgb (0.993545, 0.862859, 0.619299) ,
+      rgb (0.99317, 0.870024, 0.626189) ,
+      rgb (0.992831, 0.877168, 0.633109) ,
+      rgb (0.99244, 0.88433, 0.640099) ,
+      rgb (0.992089, 0.89147, 0.647116) ,
+      rgb (0.991688, 0.898627, 0.654202) ,
+      rgb (0.991332, 0.905763, 0.661309) ,
+      rgb (0.99093, 0.912915, 0.668481) ,
+      rgb (0.99057, 0.920049, 0.675675) ,
+      rgb (0.990175, 0.927196, 0.682926) ,
+      rgb (0.989815, 0.934329, 0.690198) ,
+      rgb (0.989434, 0.94147, 0.697519) ,
+      rgb (0.989077, 0.948604, 0.704863) ,
+      rgb (0.988717, 0.955742, 0.712242) ,
+      rgb (0.988367, 0.962878, 0.719649) ,
+      rgb (0.988033, 0.970012, 0.727077) ,
+      rgb (0.987691, 0.977154, 0.734536) ,
+      rgb (0.987387, 0.984288, 0.742002) ,
+      rgb (0.987053, 0.991438, 0.749504)
+      });
 
 
 list_data plasma = list_data(new pen[] {
-  rgb (0.050383, 0.029803, 0.527975) ,
-  rgb (0.063536, 0.028426, 0.533124) ,
-  rgb (0.075353, 0.027206, 0.538007) ,
-  rgb (0.086222, 0.026125, 0.542658) ,
-  rgb (0.096379, 0.025165, 0.547103) ,
-  rgb (0.10598, 0.024309, 0.551368) ,
-  rgb (0.115124, 0.023556, 0.555468) ,
-  rgb (0.123903, 0.022878, 0.559423) ,
-  rgb (0.132381, 0.022258, 0.56325) ,
-  rgb (0.140603, 0.021687, 0.566959) ,
-  rgb (0.148607, 0.021154, 0.570562) ,
-  rgb (0.156421, 0.020651, 0.574065) ,
-  rgb (0.16407, 0.020171, 0.577478) ,
-  rgb (0.171574, 0.019706, 0.580806) ,
-  rgb (0.17895, 0.019252, 0.584054) ,
-  rgb (0.186213, 0.018803, 0.587228) ,
-  rgb (0.193374, 0.018354, 0.59033) ,
-  rgb (0.200445, 0.017902, 0.593364) ,
-  rgb (0.207435, 0.017442, 0.596333) ,
-  rgb (0.21435, 0.016973, 0.599239) ,
-  rgb (0.221197, 0.016497, 0.602083) ,
-  rgb (0.227983, 0.016007, 0.604867) ,
-  rgb (0.234715, 0.015502, 0.607592) ,
-  rgb (0.241396, 0.014979, 0.610259) ,
-  rgb (0.248032, 0.014439, 0.612868) ,
-  rgb (0.254627, 0.013882, 0.615419) ,
-  rgb (0.261183, 0.013308, 0.617911) ,
-  rgb (0.267703, 0.012716, 0.620346) ,
-  rgb (0.274191, 0.012109, 0.622722) ,
-  rgb (0.280648, 0.011488, 0.625038) ,
-  rgb (0.287076, 0.010855, 0.627295) ,
-  rgb (0.293478, 0.010213, 0.62949) ,
-  rgb (0.299855, 0.009561, 0.631624) ,
-  rgb (0.30621, 0.008902, 0.633694) ,
-  rgb (0.312543, 0.008239, 0.6357) ,
-  rgb (0.318856, 0.007576, 0.63764) ,
-  rgb (0.32515, 0.006915, 0.639512) ,
-  rgb (0.331426, 0.006261, 0.641316) ,
-  rgb (0.337683, 0.005618, 0.643049) ,
-  rgb (0.343925, 0.004991, 0.64471) ,
-  rgb (0.35015, 0.004382, 0.646298) ,
-  rgb (0.356359, 0.003798, 0.64781) ,
-  rgb (0.362553, 0.003243, 0.649245) ,
-  rgb (0.368733, 0.002724, 0.650601) ,
-  rgb (0.374897, 0.002245, 0.651876) ,
-  rgb (0.381047, 0.001814, 0.653068) ,
-  rgb (0.387183, 0.001434, 0.654177) ,
-  rgb (0.393304, 0.001114, 0.655199) ,
-  rgb (0.399411, 0.000859, 0.656133) ,
-  rgb (0.405503, 0.000678, 0.656977) ,
-  rgb (0.41158, 0.000577, 0.65773) ,
-  rgb (0.417642, 0.000564, 0.65839) ,
-  rgb (0.423689, 0.000646, 0.658956) ,
-  rgb (0.429719, 0.000831, 0.659425) ,
-  rgb (0.435734, 0.001127, 0.659797) ,
-  rgb (0.441732, 0.00154, 0.660069) ,
-  rgb (0.447714, 0.00208, 0.66024) ,
-  rgb (0.453677, 0.002755, 0.66031) ,
-  rgb (0.459623, 0.003574, 0.660277) ,
-  rgb (0.46555, 0.004545, 0.660139) ,
-  rgb (0.471457, 0.005678, 0.659897) ,
-  rgb (0.477344, 0.00698, 0.659549) ,
-  rgb (0.48321, 0.00846, 0.659095) ,
-  rgb (0.489055, 0.010127, 0.658534) ,
-  rgb (0.494877, 0.01199, 0.657865) ,
-  rgb (0.500678, 0.014055, 0.657088) ,
-  rgb (0.506454, 0.016333, 0.656202) ,
-  rgb (0.512206, 0.018833, 0.655209) ,
-  rgb (0.517933, 0.021563, 0.654109) ,
-  rgb (0.523633, 0.024532, 0.652901) ,
-  rgb (0.529306, 0.027747, 0.651586) ,
-  rgb (0.534952, 0.031217, 0.650165) ,
-  rgb (0.54057, 0.03495, 0.64864) ,
-  rgb (0.546157, 0.038954, 0.64701) ,
-  rgb (0.551715, 0.043136, 0.645277) ,
-  rgb (0.557243, 0.047331, 0.643443) ,
-  rgb (0.562738, 0.051545, 0.641509) ,
-  rgb (0.568201, 0.055778, 0.639477) ,
-  rgb (0.573632, 0.060028, 0.637349) ,
-  rgb (0.579029, 0.064296, 0.635126) ,
-  rgb (0.584391, 0.068579, 0.632812) ,
-  rgb (0.589719, 0.072878, 0.630408) ,
-  rgb (0.595011, 0.07719, 0.627917) ,
-  rgb (0.600266, 0.081516, 0.625342) ,
-  rgb (0.605485, 0.085854, 0.622686) ,
-  rgb (0.610667, 0.090204, 0.619951) ,
-  rgb (0.615812, 0.094564, 0.61714) ,
-  rgb (0.620919, 0.098934, 0.614257) ,
-  rgb (0.625987, 0.103312, 0.611305) ,
-  rgb (0.631017, 0.107699, 0.608287) ,
-  rgb (0.636008, 0.112092, 0.605205) ,
-  rgb (0.640959, 0.116492, 0.602065) ,
-  rgb (0.645872, 0.120898, 0.598867) ,
-  rgb (0.650746, 0.125309, 0.595617) ,
-  rgb (0.65558, 0.129725, 0.592317) ,
-  rgb (0.660374, 0.134144, 0.588971) ,
-  rgb (0.665129, 0.138566, 0.585582) ,
-  rgb (0.669845, 0.142992, 0.582154) ,
-  rgb (0.674522, 0.147419, 0.578688) ,
-  rgb (0.67916, 0.151848, 0.575189) ,
-  rgb (0.683758, 0.156278, 0.57166) ,
-  rgb (0.688318, 0.160709, 0.568103) ,
-  rgb (0.69284, 0.165141, 0.564522) ,
-  rgb (0.697324, 0.169573, 0.560919) ,
-  rgb (0.701769, 0.174005, 0.557296) ,
-  rgb (0.706178, 0.178437, 0.553657) ,
-  rgb (0.710549, 0.182868, 0.550004) ,
-  rgb (0.714883, 0.187299, 0.546338) ,
-  rgb (0.719181, 0.191729, 0.542663) ,
-  rgb (0.723444, 0.196158, 0.538981) ,
-  rgb (0.72767, 0.200586, 0.535293) ,
-  rgb (0.731862, 0.205013, 0.531601) ,
-  rgb (0.736019, 0.209439, 0.527908) ,
-  rgb (0.740143, 0.213864, 0.524216) ,
-  rgb (0.744232, 0.218288, 0.520524) ,
-  rgb (0.748289, 0.222711, 0.516834) ,
-  rgb (0.752312, 0.227133, 0.513149) ,
-  rgb (0.756304, 0.231555, 0.509468) ,
-  rgb (0.760264, 0.235976, 0.505794) ,
-  rgb (0.764193, 0.240396, 0.502126) ,
-  rgb (0.76809, 0.244817, 0.498465) ,
-  rgb (0.771958, 0.249237, 0.494813) ,
-  rgb (0.775796, 0.253658, 0.491171) ,
-  rgb (0.779604, 0.258078, 0.487539) ,
-  rgb (0.783383, 0.2625, 0.483918) ,
-  rgb (0.787133, 0.266922, 0.480307) ,
-  rgb (0.790855, 0.271345, 0.476706) ,
-  rgb (0.794549, 0.27577, 0.473117) ,
-  rgb (0.798216, 0.280197, 0.469538) ,
-  rgb (0.801855, 0.284626, 0.465971) ,
-  rgb (0.805467, 0.289057, 0.462415) ,
-  rgb (0.809052, 0.293491, 0.45887) ,
-  rgb (0.812612, 0.297928, 0.455338) ,
-  rgb (0.816144, 0.302368, 0.451816) ,
-  rgb (0.819651, 0.306812, 0.448306) ,
-  rgb (0.823132, 0.311261, 0.444806) ,
-  rgb (0.826588, 0.315714, 0.441316) ,
-  rgb (0.830018, 0.320172, 0.437836) ,
-  rgb (0.833422, 0.324635, 0.434366) ,
-  rgb (0.836801, 0.329105, 0.430905) ,
-  rgb (0.840155, 0.33358, 0.427455) ,
-  rgb (0.843484, 0.338062, 0.424013) ,
-  rgb (0.846788, 0.342551, 0.420579) ,
-  rgb (0.850066, 0.347048, 0.417153) ,
-  rgb (0.853319, 0.351553, 0.413734) ,
-  rgb (0.856547, 0.356066, 0.410322) ,
-  rgb (0.85975, 0.360588, 0.406917) ,
-  rgb (0.862927, 0.365119, 0.403519) ,
-  rgb (0.866078, 0.36966, 0.400126) ,
-  rgb (0.869203, 0.374212, 0.396738) ,
-  rgb (0.872303, 0.378774, 0.393355) ,
-  rgb (0.875376, 0.383347, 0.389976) ,
-  rgb (0.878423, 0.387932, 0.3866) ,
-  rgb (0.881443, 0.392529, 0.383229) ,
-  rgb (0.884436, 0.397139, 0.37986) ,
-  rgb (0.887402, 0.401762, 0.376494) ,
-  rgb (0.89034, 0.406398, 0.37313) ,
-  rgb (0.89325, 0.411048, 0.369768) ,
-  rgb (0.896131, 0.415712, 0.366407) ,
-  rgb (0.898984, 0.420392, 0.363047) ,
-  rgb (0.901807, 0.425087, 0.359688) ,
-  rgb (0.904601, 0.429797, 0.356329) ,
-  rgb (0.907365, 0.434524, 0.35297) ,
-  rgb (0.910098, 0.439268, 0.34961) ,
-  rgb (0.9128, 0.444029, 0.346251) ,
-  rgb (0.915471, 0.448807, 0.34289) ,
-  rgb (0.918109, 0.453603, 0.339529) ,
-  rgb (0.920714, 0.458417, 0.336166) ,
-  rgb (0.923287, 0.463251, 0.332801) ,
-  rgb (0.925825, 0.468103, 0.329435) ,
-  rgb (0.928329, 0.472975, 0.326067) ,
-  rgb (0.930798, 0.477867, 0.322697) ,
-  rgb (0.933232, 0.48278, 0.319325) ,
-  rgb (0.93563, 0.487712, 0.315952) ,
-  rgb (0.93799, 0.492667, 0.312575) ,
-  rgb (0.940313, 0.497642, 0.309197) ,
-  rgb (0.942598, 0.502639, 0.305816) ,
-  rgb (0.944844, 0.507658, 0.302433) ,
-  rgb (0.947051, 0.512699, 0.299049) ,
-  rgb (0.949217, 0.517763, 0.295662) ,
-  rgb (0.951344, 0.52285, 0.292275) ,
-  rgb (0.953428, 0.52796, 0.288883) ,
-  rgb (0.95547, 0.533093, 0.28549) ,
-  rgb (0.957469, 0.53825, 0.282096) ,
-  rgb (0.959424, 0.543431, 0.278701) ,
-  rgb (0.961336, 0.548636, 0.275305) ,
-  rgb (0.963203, 0.553865, 0.271909) ,
-  rgb (0.965024, 0.559118, 0.268513) ,
-  rgb (0.966798, 0.564396, 0.265118) ,
-  rgb (0.968526, 0.5697, 0.261721) ,
-  rgb (0.970205, 0.575028, 0.258325) ,
-  rgb (0.971835, 0.580382, 0.254931) ,
-  rgb (0.973416, 0.585761, 0.25154) ,
-  rgb (0.974947, 0.591165, 0.248151) ,
-  rgb (0.976428, 0.596595, 0.244767) ,
-  rgb (0.977856, 0.602051, 0.241387) ,
-  rgb (0.979233, 0.607532, 0.238013) ,
-  rgb (0.980556, 0.613039, 0.234646) ,
-  rgb (0.981826, 0.618572, 0.231287) ,
-  rgb (0.983041, 0.624131, 0.227937) ,
-  rgb (0.984199, 0.629718, 0.224595) ,
-  rgb (0.985301, 0.63533, 0.221265) ,
-  rgb (0.986345, 0.640969, 0.217948) ,
-  rgb (0.987332, 0.646633, 0.214648) ,
-  rgb (0.98826, 0.652325, 0.211364) ,
-  rgb (0.989128, 0.658043, 0.2081) ,
-  rgb (0.989935, 0.663787, 0.204859) ,
-  rgb (0.990681, 0.669558, 0.201642) ,
-  rgb (0.991365, 0.675355, 0.198453) ,
-  rgb (0.991985, 0.681179, 0.195295) ,
-  rgb (0.992541, 0.68703, 0.19217) ,
-  rgb (0.993032, 0.692907, 0.189084) ,
-  rgb (0.993456, 0.69881, 0.186041) ,
-  rgb (0.993814, 0.704741, 0.183043) ,
-  rgb (0.994103, 0.710698, 0.180097) ,
-  rgb (0.994324, 0.716681, 0.177208) ,
-  rgb (0.994474, 0.722691, 0.174381) ,
-  rgb (0.994553, 0.728728, 0.171622) ,
-  rgb (0.994561, 0.734791, 0.168938) ,
-  rgb (0.994495, 0.74088, 0.166335) ,
-  rgb (0.994355, 0.746995, 0.163821) ,
-  rgb (0.994141, 0.753137, 0.161404) ,
-  rgb (0.993851, 0.759304, 0.159092) ,
-  rgb (0.993482, 0.765499, 0.156891) ,
-  rgb (0.993033, 0.77172, 0.154808) ,
-  rgb (0.992505, 0.777967, 0.152855) ,
-  rgb (0.991897, 0.784239, 0.151042) ,
-  rgb (0.991209, 0.790537, 0.149377) ,
-  rgb (0.990439, 0.796859, 0.14787) ,
-  rgb (0.989587, 0.803205, 0.146529) ,
-  rgb (0.988648, 0.809579, 0.145357) ,
-  rgb (0.987621, 0.815978, 0.144363) ,
-  rgb (0.986509, 0.822401, 0.143557) ,
-  rgb (0.985314, 0.828846, 0.142945) ,
-  rgb (0.984031, 0.835315, 0.142528) ,
-  rgb (0.982653, 0.841812, 0.142303) ,
-  rgb (0.98119, 0.848329, 0.142279) ,
-  rgb (0.979644, 0.854866, 0.142453) ,
-  rgb (0.977995, 0.861432, 0.142808) ,
-  rgb (0.976265, 0.868016, 0.143351) ,
-  rgb (0.974443, 0.874622, 0.144061) ,
-  rgb (0.97253, 0.88125, 0.144923) ,
-  rgb (0.970533, 0.887896, 0.145919) ,
-  rgb (0.968443, 0.894564, 0.147014) ,
-  rgb (0.966271, 0.901249, 0.14818) ,
-  rgb (0.964021, 0.90795, 0.14937) ,
-  rgb (0.961681, 0.914672, 0.15052) ,
-  rgb (0.959276, 0.921407, 0.151566) ,
-  rgb (0.956808, 0.928152, 0.152409) ,
-  rgb (0.954287, 0.934908, 0.152921) ,
-  rgb (0.951726, 0.941671, 0.152925) ,
-  rgb (0.949151, 0.948435, 0.152178) ,
-  rgb (0.946602, 0.95519, 0.150328) ,
-  rgb (0.944152, 0.961916, 0.146861) ,
-  rgb (0.941896, 0.96859, 0.140956) ,
-  rgb (0.940015, 0.975158, 0.131326)
-});
+    rgb (0.050383, 0.029803, 0.527975) ,
+      rgb (0.063536, 0.028426, 0.533124) ,
+      rgb (0.075353, 0.027206, 0.538007) ,
+      rgb (0.086222, 0.026125, 0.542658) ,
+      rgb (0.096379, 0.025165, 0.547103) ,
+      rgb (0.10598, 0.024309, 0.551368) ,
+      rgb (0.115124, 0.023556, 0.555468) ,
+      rgb (0.123903, 0.022878, 0.559423) ,
+      rgb (0.132381, 0.022258, 0.56325) ,
+      rgb (0.140603, 0.021687, 0.566959) ,
+      rgb (0.148607, 0.021154, 0.570562) ,
+      rgb (0.156421, 0.020651, 0.574065) ,
+      rgb (0.16407, 0.020171, 0.577478) ,
+      rgb (0.171574, 0.019706, 0.580806) ,
+      rgb (0.17895, 0.019252, 0.584054) ,
+      rgb (0.186213, 0.018803, 0.587228) ,
+      rgb (0.193374, 0.018354, 0.59033) ,
+      rgb (0.200445, 0.017902, 0.593364) ,
+      rgb (0.207435, 0.017442, 0.596333) ,
+      rgb (0.21435, 0.016973, 0.599239) ,
+      rgb (0.221197, 0.016497, 0.602083) ,
+      rgb (0.227983, 0.016007, 0.604867) ,
+      rgb (0.234715, 0.015502, 0.607592) ,
+      rgb (0.241396, 0.014979, 0.610259) ,
+      rgb (0.248032, 0.014439, 0.612868) ,
+      rgb (0.254627, 0.013882, 0.615419) ,
+      rgb (0.261183, 0.013308, 0.617911) ,
+      rgb (0.267703, 0.012716, 0.620346) ,
+      rgb (0.274191, 0.012109, 0.622722) ,
+      rgb (0.280648, 0.011488, 0.625038) ,
+      rgb (0.287076, 0.010855, 0.627295) ,
+      rgb (0.293478, 0.010213, 0.62949) ,
+      rgb (0.299855, 0.009561, 0.631624) ,
+      rgb (0.30621, 0.008902, 0.633694) ,
+      rgb (0.312543, 0.008239, 0.6357) ,
+      rgb (0.318856, 0.007576, 0.63764) ,
+      rgb (0.32515, 0.006915, 0.639512) ,
+      rgb (0.331426, 0.006261, 0.641316) ,
+      rgb (0.337683, 0.005618, 0.643049) ,
+      rgb (0.343925, 0.004991, 0.64471) ,
+      rgb (0.35015, 0.004382, 0.646298) ,
+      rgb (0.356359, 0.003798, 0.64781) ,
+      rgb (0.362553, 0.003243, 0.649245) ,
+      rgb (0.368733, 0.002724, 0.650601) ,
+      rgb (0.374897, 0.002245, 0.651876) ,
+      rgb (0.381047, 0.001814, 0.653068) ,
+      rgb (0.387183, 0.001434, 0.654177) ,
+      rgb (0.393304, 0.001114, 0.655199) ,
+      rgb (0.399411, 0.000859, 0.656133) ,
+      rgb (0.405503, 0.000678, 0.656977) ,
+      rgb (0.41158, 0.000577, 0.65773) ,
+      rgb (0.417642, 0.000564, 0.65839) ,
+      rgb (0.423689, 0.000646, 0.658956) ,
+      rgb (0.429719, 0.000831, 0.659425) ,
+      rgb (0.435734, 0.001127, 0.659797) ,
+      rgb (0.441732, 0.00154, 0.660069) ,
+      rgb (0.447714, 0.00208, 0.66024) ,
+      rgb (0.453677, 0.002755, 0.66031) ,
+      rgb (0.459623, 0.003574, 0.660277) ,
+      rgb (0.46555, 0.004545, 0.660139) ,
+      rgb (0.471457, 0.005678, 0.659897) ,
+      rgb (0.477344, 0.00698, 0.659549) ,
+      rgb (0.48321, 0.00846, 0.659095) ,
+      rgb (0.489055, 0.010127, 0.658534) ,
+      rgb (0.494877, 0.01199, 0.657865) ,
+      rgb (0.500678, 0.014055, 0.657088) ,
+      rgb (0.506454, 0.016333, 0.656202) ,
+      rgb (0.512206, 0.018833, 0.655209) ,
+      rgb (0.517933, 0.021563, 0.654109) ,
+      rgb (0.523633, 0.024532, 0.652901) ,
+      rgb (0.529306, 0.027747, 0.651586) ,
+      rgb (0.534952, 0.031217, 0.650165) ,
+      rgb (0.54057, 0.03495, 0.64864) ,
+      rgb (0.546157, 0.038954, 0.64701) ,
+      rgb (0.551715, 0.043136, 0.645277) ,
+      rgb (0.557243, 0.047331, 0.643443) ,
+      rgb (0.562738, 0.051545, 0.641509) ,
+      rgb (0.568201, 0.055778, 0.639477) ,
+      rgb (0.573632, 0.060028, 0.637349) ,
+      rgb (0.579029, 0.064296, 0.635126) ,
+      rgb (0.584391, 0.068579, 0.632812) ,
+      rgb (0.589719, 0.072878, 0.630408) ,
+      rgb (0.595011, 0.07719, 0.627917) ,
+      rgb (0.600266, 0.081516, 0.625342) ,
+      rgb (0.605485, 0.085854, 0.622686) ,
+      rgb (0.610667, 0.090204, 0.619951) ,
+      rgb (0.615812, 0.094564, 0.61714) ,
+      rgb (0.620919, 0.098934, 0.614257) ,
+      rgb (0.625987, 0.103312, 0.611305) ,
+      rgb (0.631017, 0.107699, 0.608287) ,
+      rgb (0.636008, 0.112092, 0.605205) ,
+      rgb (0.640959, 0.116492, 0.602065) ,
+      rgb (0.645872, 0.120898, 0.598867) ,
+      rgb (0.650746, 0.125309, 0.595617) ,
+      rgb (0.65558, 0.129725, 0.592317) ,
+      rgb (0.660374, 0.134144, 0.588971) ,
+      rgb (0.665129, 0.138566, 0.585582) ,
+      rgb (0.669845, 0.142992, 0.582154) ,
+      rgb (0.674522, 0.147419, 0.578688) ,
+      rgb (0.67916, 0.151848, 0.575189) ,
+      rgb (0.683758, 0.156278, 0.57166) ,
+      rgb (0.688318, 0.160709, 0.568103) ,
+      rgb (0.69284, 0.165141, 0.564522) ,
+      rgb (0.697324, 0.169573, 0.560919) ,
+      rgb (0.701769, 0.174005, 0.557296) ,
+      rgb (0.706178, 0.178437, 0.553657) ,
+      rgb (0.710549, 0.182868, 0.550004) ,
+      rgb (0.714883, 0.187299, 0.546338) ,
+      rgb (0.719181, 0.191729, 0.542663) ,
+      rgb (0.723444, 0.196158, 0.538981) ,
+      rgb (0.72767, 0.200586, 0.535293) ,
+      rgb (0.731862, 0.205013, 0.531601) ,
+      rgb (0.736019, 0.209439, 0.527908) ,
+      rgb (0.740143, 0.213864, 0.524216) ,
+      rgb (0.744232, 0.218288, 0.520524) ,
+      rgb (0.748289, 0.222711, 0.516834) ,
+      rgb (0.752312, 0.227133, 0.513149) ,
+      rgb (0.756304, 0.231555, 0.509468) ,
+      rgb (0.760264, 0.235976, 0.505794) ,
+      rgb (0.764193, 0.240396, 0.502126) ,
+      rgb (0.76809, 0.244817, 0.498465) ,
+      rgb (0.771958, 0.249237, 0.494813) ,
+      rgb (0.775796, 0.253658, 0.491171) ,
+      rgb (0.779604, 0.258078, 0.487539) ,
+      rgb (0.783383, 0.2625, 0.483918) ,
+      rgb (0.787133, 0.266922, 0.480307) ,
+      rgb (0.790855, 0.271345, 0.476706) ,
+      rgb (0.794549, 0.27577, 0.473117) ,
+      rgb (0.798216, 0.280197, 0.469538) ,
+      rgb (0.801855, 0.284626, 0.465971) ,
+      rgb (0.805467, 0.289057, 0.462415) ,
+      rgb (0.809052, 0.293491, 0.45887) ,
+      rgb (0.812612, 0.297928, 0.455338) ,
+      rgb (0.816144, 0.302368, 0.451816) ,
+      rgb (0.819651, 0.306812, 0.448306) ,
+      rgb (0.823132, 0.311261, 0.444806) ,
+      rgb (0.826588, 0.315714, 0.441316) ,
+      rgb (0.830018, 0.320172, 0.437836) ,
+      rgb (0.833422, 0.324635, 0.434366) ,
+      rgb (0.836801, 0.329105, 0.430905) ,
+      rgb (0.840155, 0.33358, 0.427455) ,
+      rgb (0.843484, 0.338062, 0.424013) ,
+      rgb (0.846788, 0.342551, 0.420579) ,
+      rgb (0.850066, 0.347048, 0.417153) ,
+      rgb (0.853319, 0.351553, 0.413734) ,
+      rgb (0.856547, 0.356066, 0.410322) ,
+      rgb (0.85975, 0.360588, 0.406917) ,
+      rgb (0.862927, 0.365119, 0.403519) ,
+      rgb (0.866078, 0.36966, 0.400126) ,
+      rgb (0.869203, 0.374212, 0.396738) ,
+      rgb (0.872303, 0.378774, 0.393355) ,
+      rgb (0.875376, 0.383347, 0.389976) ,
+      rgb (0.878423, 0.387932, 0.3866) ,
+      rgb (0.881443, 0.392529, 0.383229) ,
+      rgb (0.884436, 0.397139, 0.37986) ,
+      rgb (0.887402, 0.401762, 0.376494) ,
+      rgb (0.89034, 0.406398, 0.37313) ,
+      rgb (0.89325, 0.411048, 0.369768) ,
+      rgb (0.896131, 0.415712, 0.366407) ,
+      rgb (0.898984, 0.420392, 0.363047) ,
+      rgb (0.901807, 0.425087, 0.359688) ,
+      rgb (0.904601, 0.429797, 0.356329) ,
+      rgb (0.907365, 0.434524, 0.35297) ,
+      rgb (0.910098, 0.439268, 0.34961) ,
+      rgb (0.9128, 0.444029, 0.346251) ,
+      rgb (0.915471, 0.448807, 0.34289) ,
+      rgb (0.918109, 0.453603, 0.339529) ,
+      rgb (0.920714, 0.458417, 0.336166) ,
+      rgb (0.923287, 0.463251, 0.332801) ,
+      rgb (0.925825, 0.468103, 0.329435) ,
+      rgb (0.928329, 0.472975, 0.326067) ,
+      rgb (0.930798, 0.477867, 0.322697) ,
+      rgb (0.933232, 0.48278, 0.319325) ,
+      rgb (0.93563, 0.487712, 0.315952) ,
+      rgb (0.93799, 0.492667, 0.312575) ,
+      rgb (0.940313, 0.497642, 0.309197) ,
+      rgb (0.942598, 0.502639, 0.305816) ,
+      rgb (0.944844, 0.507658, 0.302433) ,
+      rgb (0.947051, 0.512699, 0.299049) ,
+      rgb (0.949217, 0.517763, 0.295662) ,
+      rgb (0.951344, 0.52285, 0.292275) ,
+      rgb (0.953428, 0.52796, 0.288883) ,
+      rgb (0.95547, 0.533093, 0.28549) ,
+      rgb (0.957469, 0.53825, 0.282096) ,
+      rgb (0.959424, 0.543431, 0.278701) ,
+      rgb (0.961336, 0.548636, 0.275305) ,
+      rgb (0.963203, 0.553865, 0.271909) ,
+      rgb (0.965024, 0.559118, 0.268513) ,
+      rgb (0.966798, 0.564396, 0.265118) ,
+      rgb (0.968526, 0.5697, 0.261721) ,
+      rgb (0.970205, 0.575028, 0.258325) ,
+      rgb (0.971835, 0.580382, 0.254931) ,
+      rgb (0.973416, 0.585761, 0.25154) ,
+      rgb (0.974947, 0.591165, 0.248151) ,
+      rgb (0.976428, 0.596595, 0.244767) ,
+      rgb (0.977856, 0.602051, 0.241387) ,
+      rgb (0.979233, 0.607532, 0.238013) ,
+      rgb (0.980556, 0.613039, 0.234646) ,
+      rgb (0.981826, 0.618572, 0.231287) ,
+      rgb (0.983041, 0.624131, 0.227937) ,
+      rgb (0.984199, 0.629718, 0.224595) ,
+      rgb (0.985301, 0.63533, 0.221265) ,
+      rgb (0.986345, 0.640969, 0.217948) ,
+      rgb (0.987332, 0.646633, 0.214648) ,
+      rgb (0.98826, 0.652325, 0.211364) ,
+      rgb (0.989128, 0.658043, 0.2081) ,
+      rgb (0.989935, 0.663787, 0.204859) ,
+      rgb (0.990681, 0.669558, 0.201642) ,
+      rgb (0.991365, 0.675355, 0.198453) ,
+      rgb (0.991985, 0.681179, 0.195295) ,
+      rgb (0.992541, 0.68703, 0.19217) ,
+      rgb (0.993032, 0.692907, 0.189084) ,
+      rgb (0.993456, 0.69881, 0.186041) ,
+      rgb (0.993814, 0.704741, 0.183043) ,
+      rgb (0.994103, 0.710698, 0.180097) ,
+      rgb (0.994324, 0.716681, 0.177208) ,
+      rgb (0.994474, 0.722691, 0.174381) ,
+      rgb (0.994553, 0.728728, 0.171622) ,
+      rgb (0.994561, 0.734791, 0.168938) ,
+      rgb (0.994495, 0.74088, 0.166335) ,
+      rgb (0.994355, 0.746995, 0.163821) ,
+      rgb (0.994141, 0.753137, 0.161404) ,
+      rgb (0.993851, 0.759304, 0.159092) ,
+      rgb (0.993482, 0.765499, 0.156891) ,
+      rgb (0.993033, 0.77172, 0.154808) ,
+      rgb (0.992505, 0.777967, 0.152855) ,
+      rgb (0.991897, 0.784239, 0.151042) ,
+      rgb (0.991209, 0.790537, 0.149377) ,
+      rgb (0.990439, 0.796859, 0.14787) ,
+      rgb (0.989587, 0.803205, 0.146529) ,
+      rgb (0.988648, 0.809579, 0.145357) ,
+      rgb (0.987621, 0.815978, 0.144363) ,
+      rgb (0.986509, 0.822401, 0.143557) ,
+      rgb (0.985314, 0.828846, 0.142945) ,
+      rgb (0.984031, 0.835315, 0.142528) ,
+      rgb (0.982653, 0.841812, 0.142303) ,
+      rgb (0.98119, 0.848329, 0.142279) ,
+      rgb (0.979644, 0.854866, 0.142453) ,
+      rgb (0.977995, 0.861432, 0.142808) ,
+      rgb (0.976265, 0.868016, 0.143351) ,
+      rgb (0.974443, 0.874622, 0.144061) ,
+      rgb (0.97253, 0.88125, 0.144923) ,
+      rgb (0.970533, 0.887896, 0.145919) ,
+      rgb (0.968443, 0.894564, 0.147014) ,
+      rgb (0.966271, 0.901249, 0.14818) ,
+      rgb (0.964021, 0.90795, 0.14937) ,
+      rgb (0.961681, 0.914672, 0.15052) ,
+      rgb (0.959276, 0.921407, 0.151566) ,
+      rgb (0.956808, 0.928152, 0.152409) ,
+      rgb (0.954287, 0.934908, 0.152921) ,
+      rgb (0.951726, 0.941671, 0.152925) ,
+      rgb (0.949151, 0.948435, 0.152178) ,
+      rgb (0.946602, 0.95519, 0.150328) ,
+      rgb (0.944152, 0.961916, 0.146861) ,
+      rgb (0.941896, 0.96859, 0.140956) ,
+      rgb (0.940015, 0.975158, 0.131326)
+      });
 
 
 list_data twilight = list_data(new pen[] {
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
-});
+    rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
+      });
 
 
 list_data twilight_shifted = list_data(new pen[] {
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
-});
+    rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
+      });
 
 
 list_data viridis = list_data(new pen[] {
-  rgb (0.267004, 0.004874, 0.329415) ,
-  rgb (0.26851, 0.009605, 0.335427) ,
-  rgb (0.269944, 0.014625, 0.341379) ,
-  rgb (0.271305, 0.019942, 0.347269) ,
-  rgb (0.272594, 0.025563, 0.353093) ,
-  rgb (0.273809, 0.031497, 0.358853) ,
-  rgb (0.274952, 0.037752, 0.364543) ,
-  rgb (0.276022, 0.044167, 0.370164) ,
-  rgb (0.277018, 0.050344, 0.375715) ,
-  rgb (0.277941, 0.056324, 0.381191) ,
-  rgb (0.278791, 0.062145, 0.386592) ,
-  rgb (0.279566, 0.067836, 0.391917) ,
-  rgb (0.280267, 0.073417, 0.397163) ,
-  rgb (0.280894, 0.078907, 0.402329) ,
-  rgb (0.281446, 0.08432, 0.407414) ,
-  rgb (0.281924, 0.089666, 0.412415) ,
-  rgb (0.282327, 0.094955, 0.417331) ,
-  rgb (0.282656, 0.100196, 0.42216) ,
-  rgb (0.28291, 0.105393, 0.426902) ,
-  rgb (0.283091, 0.110553, 0.431554) ,
-  rgb (0.283197, 0.11568, 0.436115) ,
-  rgb (0.283229, 0.120777, 0.440584) ,
-  rgb (0.283187, 0.125848, 0.44496) ,
-  rgb (0.283072, 0.130895, 0.449241) ,
-  rgb (0.282884, 0.13592, 0.453427) ,
-  rgb (0.282623, 0.140926, 0.457517) ,
-  rgb (0.28229, 0.145912, 0.46151) ,
-  rgb (0.281887, 0.150881, 0.465405) ,
-  rgb (0.281412, 0.155834, 0.469201) ,
-  rgb (0.280868, 0.160771, 0.472899) ,
-  rgb (0.280255, 0.165693, 0.476498) ,
-  rgb (0.279574, 0.170599, 0.479997) ,
-  rgb (0.278826, 0.17549, 0.483397) ,
-  rgb (0.278012, 0.180367, 0.486697) ,
-  rgb (0.277134, 0.185228, 0.489898) ,
-  rgb (0.276194, 0.190074, 0.493001) ,
-  rgb (0.275191, 0.194905, 0.496005) ,
-  rgb (0.274128, 0.199721, 0.498911) ,
-  rgb (0.273006, 0.20452, 0.501721) ,
-  rgb (0.271828, 0.209303, 0.504434) ,
-  rgb (0.270595, 0.214069, 0.507052) ,
-  rgb (0.269308, 0.218818, 0.509577) ,
-  rgb (0.267968, 0.223549, 0.512008) ,
-  rgb (0.26658, 0.228262, 0.514349) ,
-  rgb (0.265145, 0.232956, 0.516599) ,
-  rgb (0.263663, 0.237631, 0.518762) ,
-  rgb (0.262138, 0.242286, 0.520837) ,
-  rgb (0.260571, 0.246922, 0.522828) ,
-  rgb (0.258965, 0.251537, 0.524736) ,
-  rgb (0.257322, 0.25613, 0.526563) ,
-  rgb (0.255645, 0.260703, 0.528312) ,
-  rgb (0.253935, 0.265254, 0.529983) ,
-  rgb (0.252194, 0.269783, 0.531579) ,
-  rgb (0.250425, 0.27429, 0.533103) ,
-  rgb (0.248629, 0.278775, 0.534556) ,
-  rgb (0.246811, 0.283237, 0.535941) ,
-  rgb (0.244972, 0.287675, 0.53726) ,
-  rgb (0.243113, 0.292092, 0.538516) ,
-  rgb (0.241237, 0.296485, 0.539709) ,
-  rgb (0.239346, 0.300855, 0.540844) ,
-  rgb (0.237441, 0.305202, 0.541921) ,
-  rgb (0.235526, 0.309527, 0.542944) ,
-  rgb (0.233603, 0.313828, 0.543914) ,
-  rgb (0.231674, 0.318106, 0.544834) ,
-  rgb (0.229739, 0.322361, 0.545706) ,
-  rgb (0.227802, 0.326594, 0.546532) ,
-  rgb (0.225863, 0.330805, 0.547314) ,
-  rgb (0.223925, 0.334994, 0.548053) ,
-  rgb (0.221989, 0.339161, 0.548752) ,
-  rgb (0.220057, 0.343307, 0.549413) ,
-  rgb (0.21813, 0.347432, 0.550038) ,
-  rgb (0.21621, 0.351535, 0.550627) ,
-  rgb (0.214298, 0.355619, 0.551184) ,
-  rgb (0.212395, 0.359683, 0.55171) ,
-  rgb (0.210503, 0.363727, 0.552206) ,
-  rgb (0.208623, 0.367752, 0.552675) ,
-  rgb (0.206756, 0.371758, 0.553117) ,
-  rgb (0.204903, 0.375746, 0.553533) ,
-  rgb (0.203063, 0.379716, 0.553925) ,
-  rgb (0.201239, 0.38367, 0.554294) ,
-  rgb (0.19943, 0.387607, 0.554642) ,
-  rgb (0.197636, 0.391528, 0.554969) ,
-  rgb (0.19586, 0.395433, 0.555276) ,
-  rgb (0.1941, 0.399323, 0.555565) ,
-  rgb (0.192357, 0.403199, 0.555836) ,
-  rgb (0.190631, 0.407061, 0.556089) ,
-  rgb (0.188923, 0.41091, 0.556326) ,
-  rgb (0.187231, 0.414746, 0.556547) ,
-  rgb (0.185556, 0.41857, 0.556753) ,
-  rgb (0.183898, 0.422383, 0.556944) ,
-  rgb (0.182256, 0.426184, 0.55712) ,
-  rgb (0.180629, 0.429975, 0.557282) ,
-  rgb (0.179019, 0.433756, 0.55743) ,
-  rgb (0.177423, 0.437527, 0.557565) ,
-  rgb (0.175841, 0.44129, 0.557685) ,
-  rgb (0.174274, 0.445044, 0.557792) ,
-  rgb (0.172719, 0.448791, 0.557885) ,
-  rgb (0.171176, 0.45253, 0.557965) ,
-  rgb (0.169646, 0.456262, 0.55803) ,
-  rgb (0.168126, 0.459988, 0.558082) ,
-  rgb (0.166617, 0.463708, 0.558119) ,
-  rgb (0.165117, 0.467423, 0.558141) ,
-  rgb (0.163625, 0.471133, 0.558148) ,
-  rgb (0.162142, 0.474838, 0.55814) ,
-  rgb (0.160665, 0.47854, 0.558115) ,
-  rgb (0.159194, 0.482237, 0.558073) ,
-  rgb (0.157729, 0.485932, 0.558013) ,
-  rgb (0.15627, 0.489624, 0.557936) ,
-  rgb (0.154815, 0.493313, 0.55784) ,
-  rgb (0.153364, 0.497, 0.557724) ,
-  rgb (0.151918, 0.500685, 0.557587) ,
-  rgb (0.150476, 0.504369, 0.55743) ,
-  rgb (0.149039, 0.508051, 0.55725) ,
-  rgb (0.147607, 0.511733, 0.557049) ,
-  rgb (0.14618, 0.515413, 0.556823) ,
-  rgb (0.144759, 0.519093, 0.556572) ,
-  rgb (0.143343, 0.522773, 0.556295) ,
-  rgb (0.141935, 0.526453, 0.555991) ,
-  rgb (0.140536, 0.530132, 0.555659) ,
-  rgb (0.139147, 0.533812, 0.555298) ,
-  rgb (0.13777, 0.537492, 0.554906) ,
-  rgb (0.136408, 0.541173, 0.554483) ,
-  rgb (0.135066, 0.544853, 0.554029) ,
-  rgb (0.133743, 0.548535, 0.553541) ,
-  rgb (0.132444, 0.552216, 0.553018) ,
-  rgb (0.131172, 0.555899, 0.552459) ,
-  rgb (0.129933, 0.559582, 0.551864) ,
-  rgb (0.128729, 0.563265, 0.551229) ,
-  rgb (0.127568, 0.566949, 0.550556) ,
-  rgb (0.126453, 0.570633, 0.549841) ,
-  rgb (0.125394, 0.574318, 0.549086) ,
-  rgb (0.124395, 0.578002, 0.548287) ,
-  rgb (0.123463, 0.581687, 0.547445) ,
-  rgb (0.122606, 0.585371, 0.546557) ,
-  rgb (0.121831, 0.589055, 0.545623) ,
-  rgb (0.121148, 0.592739, 0.544641) ,
-  rgb (0.120565, 0.596422, 0.543611) ,
-  rgb (0.120092, 0.600104, 0.54253) ,
-  rgb (0.119738, 0.603785, 0.5414) ,
-  rgb (0.119512, 0.607464, 0.540218) ,
-  rgb (0.119423, 0.611141, 0.538982) ,
-  rgb (0.119483, 0.614817, 0.537692) ,
-  rgb (0.119699, 0.61849, 0.536347) ,
-  rgb (0.120081, 0.622161, 0.534946) ,
-  rgb (0.120638, 0.625828, 0.533488) ,
-  rgb (0.12138, 0.629492, 0.531973) ,
-  rgb (0.122312, 0.633153, 0.530398) ,
-  rgb (0.123444, 0.636809, 0.528763) ,
-  rgb (0.12478, 0.640461, 0.527068) ,
-  rgb (0.126326, 0.644107, 0.525311) ,
-  rgb (0.128087, 0.647749, 0.523491) ,
-  rgb (0.130067, 0.651384, 0.521608) ,
-  rgb (0.132268, 0.655014, 0.519661) ,
-  rgb (0.134692, 0.658636, 0.517649) ,
-  rgb (0.137339, 0.662252, 0.515571) ,
-  rgb (0.14021, 0.665859, 0.513427) ,
-  rgb (0.143303, 0.669459, 0.511215) ,
-  rgb (0.146616, 0.67305, 0.508936) ,
-  rgb (0.150148, 0.676631, 0.506589) ,
-  rgb (0.153894, 0.680203, 0.504172) ,
-  rgb (0.157851, 0.683765, 0.501686) ,
-  rgb (0.162016, 0.687316, 0.499129) ,
-  rgb (0.166383, 0.690856, 0.496502) ,
-  rgb (0.170948, 0.694384, 0.493803) ,
-  rgb (0.175707, 0.6979, 0.491033) ,
-  rgb (0.180653, 0.701402, 0.488189) ,
-  rgb (0.185783, 0.704891, 0.485273) ,
-  rgb (0.19109, 0.708366, 0.482284) ,
-  rgb (0.196571, 0.711827, 0.479221) ,
-  rgb (0.202219, 0.715272, 0.476084) ,
-  rgb (0.20803, 0.718701, 0.472873) ,
-  rgb (0.214, 0.722114, 0.469588) ,
-  rgb (0.220124, 0.725509, 0.466226) ,
-  rgb (0.226397, 0.728888, 0.462789) ,
-  rgb (0.232815, 0.732247, 0.459277) ,
-  rgb (0.239374, 0.735588, 0.455688) ,
-  rgb (0.24607, 0.73891, 0.452024) ,
-  rgb (0.252899, 0.742211, 0.448284) ,
-  rgb (0.259857, 0.745492, 0.444467) ,
-  rgb (0.266941, 0.748751, 0.440573) ,
-  rgb (0.274149, 0.751988, 0.436601) ,
-  rgb (0.281477, 0.755203, 0.432552) ,
-  rgb (0.288921, 0.758394, 0.428426) ,
-  rgb (0.296479, 0.761561, 0.424223) ,
-  rgb (0.304148, 0.764704, 0.419943) ,
-  rgb (0.311925, 0.767822, 0.415586) ,
-  rgb (0.319809, 0.770914, 0.411152) ,
-  rgb (0.327796, 0.77398, 0.40664) ,
-  rgb (0.335885, 0.777018, 0.402049) ,
-  rgb (0.344074, 0.780029, 0.397381) ,
-  rgb (0.35236, 0.783011, 0.392636) ,
-  rgb (0.360741, 0.785964, 0.387814) ,
-  rgb (0.369214, 0.788888, 0.382914) ,
-  rgb (0.377779, 0.791781, 0.377939) ,
-  rgb (0.386433, 0.794644, 0.372886) ,
-  rgb (0.395174, 0.797475, 0.367757) ,
-  rgb (0.404001, 0.800275, 0.362552) ,
-  rgb (0.412913, 0.803041, 0.357269) ,
-  rgb (0.421908, 0.805774, 0.35191) ,
-  rgb (0.430983, 0.808473, 0.346476) ,
-  rgb (0.440137, 0.811138, 0.340967) ,
-  rgb (0.449368, 0.813768, 0.335384) ,
-  rgb (0.458674, 0.816363, 0.329727) ,
-  rgb (0.468053, 0.818921, 0.323998) ,
-  rgb (0.477504, 0.821444, 0.318195) ,
-  rgb (0.487026, 0.823929, 0.312321) ,
-  rgb (0.496615, 0.826376, 0.306377) ,
-  rgb (0.506271, 0.828786, 0.300362) ,
-  rgb (0.515992, 0.831158, 0.294279) ,
-  rgb (0.525776, 0.833491, 0.288127) ,
-  rgb (0.535621, 0.835785, 0.281908) ,
-  rgb (0.545524, 0.838039, 0.275626) ,
-  rgb (0.555484, 0.840254, 0.269281) ,
-  rgb (0.565498, 0.84243, 0.262877) ,
-  rgb (0.575563, 0.844566, 0.256415) ,
-  rgb (0.585678, 0.846661, 0.249897) ,
-  rgb (0.595839, 0.848717, 0.243329) ,
-  rgb (0.606045, 0.850733, 0.236712) ,
-  rgb (0.616293, 0.852709, 0.230052) ,
-  rgb (0.626579, 0.854645, 0.223353) ,
-  rgb (0.636902, 0.856542, 0.21662) ,
-  rgb (0.647257, 0.8584, 0.209861) ,
-  rgb (0.657642, 0.860219, 0.203082) ,
-  rgb (0.668054, 0.861999, 0.196293) ,
-  rgb (0.678489, 0.863742, 0.189503) ,
-  rgb (0.688944, 0.865448, 0.182725) ,
-  rgb (0.699415, 0.867117, 0.175971) ,
-  rgb (0.709898, 0.868751, 0.169257) ,
-  rgb (0.720391, 0.87035, 0.162603) ,
-  rgb (0.730889, 0.871916, 0.156029) ,
-  rgb (0.741388, 0.873449, 0.149561) ,
-  rgb (0.751884, 0.874951, 0.143228) ,
-  rgb (0.762373, 0.876424, 0.137064) ,
-  rgb (0.772852, 0.877868, 0.131109) ,
-  rgb (0.783315, 0.879285, 0.125405) ,
-  rgb (0.79376, 0.880678, 0.120005) ,
-  rgb (0.804182, 0.882046, 0.114965) ,
-  rgb (0.814576, 0.883393, 0.110347) ,
-  rgb (0.82494, 0.88472, 0.106217) ,
-  rgb (0.83527, 0.886029, 0.102646) ,
-  rgb (0.845561, 0.887322, 0.099702) ,
-  rgb (0.85581, 0.888601, 0.097452) ,
-  rgb (0.866013, 0.889868, 0.095953) ,
-  rgb (0.876168, 0.891125, 0.09525) ,
-  rgb (0.886271, 0.892374, 0.095374) ,
-  rgb (0.89632, 0.893616, 0.096335) ,
-  rgb (0.906311, 0.894855, 0.098125) ,
-  rgb (0.916242, 0.896091, 0.100717) ,
-  rgb (0.926106, 0.89733, 0.104071) ,
-  rgb (0.935904, 0.89857, 0.108131) ,
-  rgb (0.945636, 0.899815, 0.112838) ,
-  rgb (0.9553, 0.901065, 0.118128) ,
-  rgb (0.964894, 0.902323, 0.123941) ,
-  rgb (0.974417, 0.90359, 0.130215) ,
-  rgb (0.983868, 0.904867, 0.136897) ,
-  rgb (0.993248, 0.906157, 0.143936)
-});
+    rgb (0.267004, 0.004874, 0.329415) ,
+      rgb (0.26851, 0.009605, 0.335427) ,
+      rgb (0.269944, 0.014625, 0.341379) ,
+      rgb (0.271305, 0.019942, 0.347269) ,
+      rgb (0.272594, 0.025563, 0.353093) ,
+      rgb (0.273809, 0.031497, 0.358853) ,
+      rgb (0.274952, 0.037752, 0.364543) ,
+      rgb (0.276022, 0.044167, 0.370164) ,
+      rgb (0.277018, 0.050344, 0.375715) ,
+      rgb (0.277941, 0.056324, 0.381191) ,
+      rgb (0.278791, 0.062145, 0.386592) ,
+      rgb (0.279566, 0.067836, 0.391917) ,
+      rgb (0.280267, 0.073417, 0.397163) ,
+      rgb (0.280894, 0.078907, 0.402329) ,
+      rgb (0.281446, 0.08432, 0.407414) ,
+      rgb (0.281924, 0.089666, 0.412415) ,
+      rgb (0.282327, 0.094955, 0.417331) ,
+      rgb (0.282656, 0.100196, 0.42216) ,
+      rgb (0.28291, 0.105393, 0.426902) ,
+      rgb (0.283091, 0.110553, 0.431554) ,
+      rgb (0.283197, 0.11568, 0.436115) ,
+      rgb (0.283229, 0.120777, 0.440584) ,
+      rgb (0.283187, 0.125848, 0.44496) ,
+      rgb (0.283072, 0.130895, 0.449241) ,
+      rgb (0.282884, 0.13592, 0.453427) ,
+      rgb (0.282623, 0.140926, 0.457517) ,
+      rgb (0.28229, 0.145912, 0.46151) ,
+      rgb (0.281887, 0.150881, 0.465405) ,
+      rgb (0.281412, 0.155834, 0.469201) ,
+      rgb (0.280868, 0.160771, 0.472899) ,
+      rgb (0.280255, 0.165693, 0.476498) ,
+      rgb (0.279574, 0.170599, 0.479997) ,
+      rgb (0.278826, 0.17549, 0.483397) ,
+      rgb (0.278012, 0.180367, 0.486697) ,
+      rgb (0.277134, 0.185228, 0.489898) ,
+      rgb (0.276194, 0.190074, 0.493001) ,
+      rgb (0.275191, 0.194905, 0.496005) ,
+      rgb (0.274128, 0.199721, 0.498911) ,
+      rgb (0.273006, 0.20452, 0.501721) ,
+      rgb (0.271828, 0.209303, 0.504434) ,
+      rgb (0.270595, 0.214069, 0.507052) ,
+      rgb (0.269308, 0.218818, 0.509577) ,
+      rgb (0.267968, 0.223549, 0.512008) ,
+      rgb (0.26658, 0.228262, 0.514349) ,
+      rgb (0.265145, 0.232956, 0.516599) ,
+      rgb (0.263663, 0.237631, 0.518762) ,
+      rgb (0.262138, 0.242286, 0.520837) ,
+      rgb (0.260571, 0.246922, 0.522828) ,
+      rgb (0.258965, 0.251537, 0.524736) ,
+      rgb (0.257322, 0.25613, 0.526563) ,
+      rgb (0.255645, 0.260703, 0.528312) ,
+      rgb (0.253935, 0.265254, 0.529983) ,
+      rgb (0.252194, 0.269783, 0.531579) ,
+      rgb (0.250425, 0.27429, 0.533103) ,
+      rgb (0.248629, 0.278775, 0.534556) ,
+      rgb (0.246811, 0.283237, 0.535941) ,
+      rgb (0.244972, 0.287675, 0.53726) ,
+      rgb (0.243113, 0.292092, 0.538516) ,
+      rgb (0.241237, 0.296485, 0.539709) ,
+      rgb (0.239346, 0.300855, 0.540844) ,
+      rgb (0.237441, 0.305202, 0.541921) ,
+      rgb (0.235526, 0.309527, 0.542944) ,
+      rgb (0.233603, 0.313828, 0.543914) ,
+      rgb (0.231674, 0.318106, 0.544834) ,
+      rgb (0.229739, 0.322361, 0.545706) ,
+      rgb (0.227802, 0.326594, 0.546532) ,
+      rgb (0.225863, 0.330805, 0.547314) ,
+      rgb (0.223925, 0.334994, 0.548053) ,
+      rgb (0.221989, 0.339161, 0.548752) ,
+      rgb (0.220057, 0.343307, 0.549413) ,
+      rgb (0.21813, 0.347432, 0.550038) ,
+      rgb (0.21621, 0.351535, 0.550627) ,
+      rgb (0.214298, 0.355619, 0.551184) ,
+      rgb (0.212395, 0.359683, 0.55171) ,
+      rgb (0.210503, 0.363727, 0.552206) ,
+      rgb (0.208623, 0.367752, 0.552675) ,
+      rgb (0.206756, 0.371758, 0.553117) ,
+      rgb (0.204903, 0.375746, 0.553533) ,
+      rgb (0.203063, 0.379716, 0.553925) ,
+      rgb (0.201239, 0.38367, 0.554294) ,
+      rgb (0.19943, 0.387607, 0.554642) ,
+      rgb (0.197636, 0.391528, 0.554969) ,
+      rgb (0.19586, 0.395433, 0.555276) ,
+      rgb (0.1941, 0.399323, 0.555565) ,
+      rgb (0.192357, 0.403199, 0.555836) ,
+      rgb (0.190631, 0.407061, 0.556089) ,
+      rgb (0.188923, 0.41091, 0.556326) ,
+      rgb (0.187231, 0.414746, 0.556547) ,
+      rgb (0.185556, 0.41857, 0.556753) ,
+      rgb (0.183898, 0.422383, 0.556944) ,
+      rgb (0.182256, 0.426184, 0.55712) ,
+      rgb (0.180629, 0.429975, 0.557282) ,
+      rgb (0.179019, 0.433756, 0.55743) ,
+      rgb (0.177423, 0.437527, 0.557565) ,
+      rgb (0.175841, 0.44129, 0.557685) ,
+      rgb (0.174274, 0.445044, 0.557792) ,
+      rgb (0.172719, 0.448791, 0.557885) ,
+      rgb (0.171176, 0.45253, 0.557965) ,
+      rgb (0.169646, 0.456262, 0.55803) ,
+      rgb (0.168126, 0.459988, 0.558082) ,
+      rgb (0.166617, 0.463708, 0.558119) ,
+      rgb (0.165117, 0.467423, 0.558141) ,
+      rgb (0.163625, 0.471133, 0.558148) ,
+      rgb (0.162142, 0.474838, 0.55814) ,
+      rgb (0.160665, 0.47854, 0.558115) ,
+      rgb (0.159194, 0.482237, 0.558073) ,
+      rgb (0.157729, 0.485932, 0.558013) ,
+      rgb (0.15627, 0.489624, 0.557936) ,
+      rgb (0.154815, 0.493313, 0.55784) ,
+      rgb (0.153364, 0.497, 0.557724) ,
+      rgb (0.151918, 0.500685, 0.557587) ,
+      rgb (0.150476, 0.504369, 0.55743) ,
+      rgb (0.149039, 0.508051, 0.55725) ,
+      rgb (0.147607, 0.511733, 0.557049) ,
+      rgb (0.14618, 0.515413, 0.556823) ,
+      rgb (0.144759, 0.519093, 0.556572) ,
+      rgb (0.143343, 0.522773, 0.556295) ,
+      rgb (0.141935, 0.526453, 0.555991) ,
+      rgb (0.140536, 0.530132, 0.555659) ,
+      rgb (0.139147, 0.533812, 0.555298) ,
+      rgb (0.13777, 0.537492, 0.554906) ,
+      rgb (0.136408, 0.541173, 0.554483) ,
+      rgb (0.135066, 0.544853, 0.554029) ,
+      rgb (0.133743, 0.548535, 0.553541) ,
+      rgb (0.132444, 0.552216, 0.553018) ,
+      rgb (0.131172, 0.555899, 0.552459) ,
+      rgb (0.129933, 0.559582, 0.551864) ,
+      rgb (0.128729, 0.563265, 0.551229) ,
+      rgb (0.127568, 0.566949, 0.550556) ,
+      rgb (0.126453, 0.570633, 0.549841) ,
+      rgb (0.125394, 0.574318, 0.549086) ,
+      rgb (0.124395, 0.578002, 0.548287) ,
+      rgb (0.123463, 0.581687, 0.547445) ,
+      rgb (0.122606, 0.585371, 0.546557) ,
+      rgb (0.121831, 0.589055, 0.545623) ,
+      rgb (0.121148, 0.592739, 0.544641) ,
+      rgb (0.120565, 0.596422, 0.543611) ,
+      rgb (0.120092, 0.600104, 0.54253) ,
+      rgb (0.119738, 0.603785, 0.5414) ,
+      rgb (0.119512, 0.607464, 0.540218) ,
+      rgb (0.119423, 0.611141, 0.538982) ,
+      rgb (0.119483, 0.614817, 0.537692) ,
+      rgb (0.119699, 0.61849, 0.536347) ,
+      rgb (0.120081, 0.622161, 0.534946) ,
+      rgb (0.120638, 0.625828, 0.533488) ,
+      rgb (0.12138, 0.629492, 0.531973) ,
+      rgb (0.122312, 0.633153, 0.530398) ,
+      rgb (0.123444, 0.636809, 0.528763) ,
+      rgb (0.12478, 0.640461, 0.527068) ,
+      rgb (0.126326, 0.644107, 0.525311) ,
+      rgb (0.128087, 0.647749, 0.523491) ,
+      rgb (0.130067, 0.651384, 0.521608) ,
+      rgb (0.132268, 0.655014, 0.519661) ,
+      rgb (0.134692, 0.658636, 0.517649) ,
+      rgb (0.137339, 0.662252, 0.515571) ,
+      rgb (0.14021, 0.665859, 0.513427) ,
+      rgb (0.143303, 0.669459, 0.511215) ,
+      rgb (0.146616, 0.67305, 0.508936) ,
+      rgb (0.150148, 0.676631, 0.506589) ,
+      rgb (0.153894, 0.680203, 0.504172) ,
+      rgb (0.157851, 0.683765, 0.501686) ,
+      rgb (0.162016, 0.687316, 0.499129) ,
+      rgb (0.166383, 0.690856, 0.496502) ,
+      rgb (0.170948, 0.694384, 0.493803) ,
+      rgb (0.175707, 0.6979, 0.491033) ,
+      rgb (0.180653, 0.701402, 0.488189) ,
+      rgb (0.185783, 0.704891, 0.485273) ,
+      rgb (0.19109, 0.708366, 0.482284) ,
+      rgb (0.196571, 0.711827, 0.479221) ,
+      rgb (0.202219, 0.715272, 0.476084) ,
+      rgb (0.20803, 0.718701, 0.472873) ,
+      rgb (0.214, 0.722114, 0.469588) ,
+      rgb (0.220124, 0.725509, 0.466226) ,
+      rgb (0.226397, 0.728888, 0.462789) ,
+      rgb (0.232815, 0.732247, 0.459277) ,
+      rgb (0.239374, 0.735588, 0.455688) ,
+      rgb (0.24607, 0.73891, 0.452024) ,
+      rgb (0.252899, 0.742211, 0.448284) ,
+      rgb (0.259857, 0.745492, 0.444467) ,
+      rgb (0.266941, 0.748751, 0.440573) ,
+      rgb (0.274149, 0.751988, 0.436601) ,
+      rgb (0.281477, 0.755203, 0.432552) ,
+      rgb (0.288921, 0.758394, 0.428426) ,
+      rgb (0.296479, 0.761561, 0.424223) ,
+      rgb (0.304148, 0.764704, 0.419943) ,
+      rgb (0.311925, 0.767822, 0.415586) ,
+      rgb (0.319809, 0.770914, 0.411152) ,
+      rgb (0.327796, 0.77398, 0.40664) ,
+      rgb (0.335885, 0.777018, 0.402049) ,
+      rgb (0.344074, 0.780029, 0.397381) ,
+      rgb (0.35236, 0.783011, 0.392636) ,
+      rgb (0.360741, 0.785964, 0.387814) ,
+      rgb (0.369214, 0.788888, 0.382914) ,
+      rgb (0.377779, 0.791781, 0.377939) ,
+      rgb (0.386433, 0.794644, 0.372886) ,
+      rgb (0.395174, 0.797475, 0.367757) ,
+      rgb (0.404001, 0.800275, 0.362552) ,
+      rgb (0.412913, 0.803041, 0.357269) ,
+      rgb (0.421908, 0.805774, 0.35191) ,
+      rgb (0.430983, 0.808473, 0.346476) ,
+      rgb (0.440137, 0.811138, 0.340967) ,
+      rgb (0.449368, 0.813768, 0.335384) ,
+      rgb (0.458674, 0.816363, 0.329727) ,
+      rgb (0.468053, 0.818921, 0.323998) ,
+      rgb (0.477504, 0.821444, 0.318195) ,
+      rgb (0.487026, 0.823929, 0.312321) ,
+      rgb (0.496615, 0.826376, 0.306377) ,
+      rgb (0.506271, 0.828786, 0.300362) ,
+      rgb (0.515992, 0.831158, 0.294279) ,
+      rgb (0.525776, 0.833491, 0.288127) ,
+      rgb (0.535621, 0.835785, 0.281908) ,
+      rgb (0.545524, 0.838039, 0.275626) ,
+      rgb (0.555484, 0.840254, 0.269281) ,
+      rgb (0.565498, 0.84243, 0.262877) ,
+      rgb (0.575563, 0.844566, 0.256415) ,
+      rgb (0.585678, 0.846661, 0.249897) ,
+      rgb (0.595839, 0.848717, 0.243329) ,
+      rgb (0.606045, 0.850733, 0.236712) ,
+      rgb (0.616293, 0.852709, 0.230052) ,
+      rgb (0.626579, 0.854645, 0.223353) ,
+      rgb (0.636902, 0.856542, 0.21662) ,
+      rgb (0.647257, 0.8584, 0.209861) ,
+      rgb (0.657642, 0.860219, 0.203082) ,
+      rgb (0.668054, 0.861999, 0.196293) ,
+      rgb (0.678489, 0.863742, 0.189503) ,
+      rgb (0.688944, 0.865448, 0.182725) ,
+      rgb (0.699415, 0.867117, 0.175971) ,
+      rgb (0.709898, 0.868751, 0.169257) ,
+      rgb (0.720391, 0.87035, 0.162603) ,
+      rgb (0.730889, 0.871916, 0.156029) ,
+      rgb (0.741388, 0.873449, 0.149561) ,
+      rgb (0.751884, 0.874951, 0.143228) ,
+      rgb (0.762373, 0.876424, 0.137064) ,
+      rgb (0.772852, 0.877868, 0.131109) ,
+      rgb (0.783315, 0.879285, 0.125405) ,
+      rgb (0.79376, 0.880678, 0.120005) ,
+      rgb (0.804182, 0.882046, 0.114965) ,
+      rgb (0.814576, 0.883393, 0.110347) ,
+      rgb (0.82494, 0.88472, 0.106217) ,
+      rgb (0.83527, 0.886029, 0.102646) ,
+      rgb (0.845561, 0.887322, 0.099702) ,
+      rgb (0.85581, 0.888601, 0.097452) ,
+      rgb (0.866013, 0.889868, 0.095953) ,
+      rgb (0.876168, 0.891125, 0.09525) ,
+      rgb (0.886271, 0.892374, 0.095374) ,
+      rgb (0.89632, 0.893616, 0.096335) ,
+      rgb (0.906311, 0.894855, 0.098125) ,
+      rgb (0.916242, 0.896091, 0.100717) ,
+      rgb (0.926106, 0.89733, 0.104071) ,
+      rgb (0.935904, 0.89857, 0.108131) ,
+      rgb (0.945636, 0.899815, 0.112838) ,
+      rgb (0.9553, 0.901065, 0.118128) ,
+      rgb (0.964894, 0.902323, 0.123941) ,
+      rgb (0.974417, 0.90359, 0.130215) ,
+      rgb (0.983868, 0.904867, 0.136897) ,
+      rgb (0.993248, 0.906157, 0.143936)
+      });
 
 

Modified: trunk/Master/texmf-dist/asymptote/contour.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/contour.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/contour.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,10 +1,10 @@
 // Contour routines written by Radoslav Marinov and John Bowman.
-         
+
 import graph_settings;
 
 real eps=10000*realEpsilon;
 
-//                         1  
+//                         1
 //             6 +-------------------+ 5
 //               | \               / |
 //               |   \          /    |
@@ -16,7 +16,7 @@
 //               |   /           \   |
 //               | /               \ |
 //             7 +-------------------+ 4 or 8
-//                         3  
+//                         3
 
 private struct segment
 {
@@ -76,11 +76,11 @@
 private segment checktriangle(pair p0, pair p1, pair p2,
                               real v0, real v1, real v2, int edge=-1)
 {
-  // default null return  
+  // default null return
   static segment dflt;
 
   real eps=eps*max(abs(v0),abs(v1),abs(v2));
-  
+
   if(v0 < -eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -92,10 +92,10 @@
       else return case2(p1,p0,p2,v1,v0,v2,5+edge);
     } else {
       if(v2 < -eps) return case3(p0,p1,p2,v0,v1,v2,edge);
-      else if(v2 <= eps) 
+      else if(v2 <= eps)
         return case2(p2,p0,p1,v2,v0,v1,edge);
       else return case3(p1,p0,p2,v1,v0,v2,edge);
-    } 
+    }
   } else if(v0 <= eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -109,7 +109,7 @@
       if(v2 < -eps) return case2(p0,p1,p2,v0,v1,v2,4+edge);
       else if(v2 <= eps) return case1(p0,p2,4+edge);
       else return dflt; // nothing to do
-    } 
+    }
   } else {
     if(v1 < -eps) {
       if(v2 < -eps) return case3(p1,p0,p2,v1,v0,v2,edge);
@@ -124,8 +124,8 @@
       if(v2 < -eps) return case3(p0,p2,p1,v0,v2,v1);
       else if(v2 <= eps) return dflt; // nothing to do
       else return dflt; // nothing to do
-    } 
-  }      
+    }
+  }
 }
 
 // Collect connecting path segments.
@@ -135,7 +135,7 @@
   int[] reverseF(int n) {return sequence(new int(int x){return n-1-x;},n-1);}
   // use to reverse an array, omitting the last point
   int[] reverseL(int n) {return sequence(new int(int x){return n-2-x;},n-1);}
-  
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] gdscnt=points[cnt];
     for(int i=0; i < gdscnt.length; ++i) {
@@ -144,11 +144,11 @@
       for(int j=i+1; j < gdscnt.length; ++j) {
         pair[] gjg=gdscnt[j];
         int Lj=gjg.length;
-        if(abs(gig[0]-gjg[0]) < eps) { 
+        if(abs(gig[0]-gjg[0]) < eps) {
           gdscnt[j]=gjg[reverseF(Lj)];
           gdscnt[j].append(gig);
-          gdscnt.delete(i); 
-          --i; 
+          gdscnt.delete(i);
+          --i;
           break;
         } else if(abs(gig[0]-gjg[Lj-1]) < eps) {
           gig.delete(0);
@@ -169,7 +169,7 @@
           gdscnt.delete(i);
           --i;
           break;
-        } 
+        }
       }
     }
   }
@@ -176,7 +176,8 @@
 }
 
 // Join path segments.
-private guide[][] connect(pair[][][] points, real[] c, interpolate join)
+private guide[][] connect(picture pic, pair[][][] points, real[] c,
+                          interpolate join)
 {
   // set up return value
   guide[][] result=new guide[c.length][];
@@ -189,13 +190,13 @@
       if(pts.length > 0) {
         if(pts.length > 1 && abs(pts[0]-pts[pts.length-1]) < eps) {
           guide[] g=sequence(new guide(int i) {
-              return pts[i];
+              return (pic.scale.x.T(pts[i].x), pic.scale.y.T(pts[i].y));
             },pts.length-1);
           g.push(cycle);
           gd=join(...g);
         } else
           gd=join(...sequence(new guide(int i) {
-                return pts[i];
+                return (pic.scale.x.T(pts[i].x), pic.scale.y.T(pts[i].y));
               },pts.length));
       }
       resultcnt[i]=gd;
@@ -211,7 +212,7 @@
 // midpoint:  optional array containing values of f at cell midpoints
 // c:         array of contour values
 // join:      interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(pair[][] z, real[][] f,
+guide[][] contour(picture pic=currentpicture, pair[][] z, real[][] f,
                   real[][] midpoint=new real[][], real[] c,
                   interpolate join=operator --)
 {
@@ -224,7 +225,7 @@
 
   c=sort(c);
   bool midpoints=midpoint.length > 0;
-  
+
   segment segments[][][]=new segment[nx][ny][];
 
   // go over region a rectangle at a time
@@ -238,7 +239,7 @@
     segment[][] segmentsi=segments[i];
     for(int j=0; j < ny; ++j) {
       segment[] segmentsij=segmentsi[j];
-      
+
       // define points
       pair bleft=zi[j];
       pair bright=zp[j];
@@ -264,26 +265,26 @@
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vertdat) {
           if(vertdat < -eps) ++countm;
           else {
-            if(vertdat <= eps) ++countz; 
+            if(vertdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vertdat0);
         check(vertdat1);
         check(vertdat2);
         check(vertdat3);
 
-        if(countm == 4) return 1;  // nothing to do 
-        if(countp == 4) return -1; // nothing to do 
+        if(countm == 4) return 1;  // nothing to do
+        if(countp == 4) return -1; // nothing to do
         if((countm == 3 || countp == 3) && countz == 1) return 0;
 
         // go through the triangles
-        
+
         void addseg(segment seg) {
           if(seg.active) {
             seg.c=cnt;
@@ -301,7 +302,7 @@
                              vertdat0,vertdat1,vertdat4,3));
         return 0;
       }
-      
+
       void process(int l, int u) {
         if(l >= u) return;
         int i=quotient(l+u,2);
@@ -313,7 +314,7 @@
           process(i+1,u);
         }
       }
-    
+
       process(0,c.length);
     }
   }
@@ -356,7 +357,7 @@
           }
           return -1;
         }
-        
+
         int backward(int I, int J, bool first=true) {
           if(I >= 0 && I < nx && J >= 0 && J < ny) {
             segment[] segmentsIJ=segments[I][J];
@@ -380,7 +381,7 @@
           }
           return -1;
         }
-        
+
         void follow(int f(int, int, bool first=true), int edge) {
           int I=i;
           int J=j;
@@ -445,7 +446,7 @@
 
   collect(points,c); // Required to join remaining case1 cycles.
 
-  return connect(points,c,join);
+  return connect(pic,points,c,join);
 }
 
 // Return contour guides for a 2D data array on a uniform lattice
@@ -454,8 +455,8 @@
 // a,b:       diagonally opposite vertices of rectangular domain
 // c:         array of contour values
 // join:      interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(real[][] f, real[][] midpoint=new real[][],
-                  pair a, pair b, real[] c,
+guide[][] contour(picture pic=currentpicture, real[][] f,
+                  real[][] midpoint=new real[][], pair a, pair b, real[] c,
                   interpolate join=operator --)
 {
   int nx=f.length-1;
@@ -473,7 +474,7 @@
       zi[j]=(xi,interp(a.y,b.y,j/ny));
     }
   }
-  return contour(z,f,midpoint,c,join);
+  return contour(pic,z,f,midpoint,c,join);
 }
 
 // return contour guides for a real-valued function
@@ -482,14 +483,14 @@
 // c:        array of contour values
 // nx,ny:    number of subdivisions in x and y directions (determines accuracy)
 // join:     interpolation operator (e.g. operator -- or operator ..)
-guide[][] contour(real f(real, real), pair a, pair b,
-                  real[] c, int nx=ngraph, int ny=nx,
+guide[][] contour(picture pic=currentpicture, real f(real, real), pair a,
+                  pair b, real[] c, int nx=ngraph, int ny=nx,
                   interpolate join=operator --)
 {
   // evaluate function at points and midpoints
   real[][] dat=new real[nx+1][ny+1];
   real[][] midpoint=new real[nx+1][ny+1];
-  
+
   for(int i=0; i <= nx; ++i) {
     real x=interp(a.x,b.x,i/nx);
     real x2=interp(a.x,b.x,(i+0.5)/nx);
@@ -501,9 +502,9 @@
     }
   }
 
-  return contour(dat,midpoint,a,b,c,join);
+  return contour(pic,dat,midpoint,a,b,c,join);
 }
-  
+
 void draw(picture pic=currentpicture, Label[] L=new Label[],
           guide[][] g, pen[] p)
 {
@@ -576,7 +577,7 @@
                 index=i;
             }
           }
-        } 
+        }
         fillpalettei[j]=palette[index];
       }
       fillpalette[i]=fillpalettei;
@@ -620,7 +621,7 @@
 // check existing guides and adds new segment to them if possible,
 // or otherwise store segment as a new guide
 private void addseg(pair[][] gds, segment seg)
-{ 
+{
   if(!seg.active) return;
   // search for a path to extend
   for(int i=0; i < gds.length; ++i) {
@@ -629,33 +630,33 @@
       gd.insert(0,seg.a);
       return;
     } else if(abs(gd[gd.length-1]-seg.b) < eps) {
-      gd.push(seg.a); 
+      gd.push(seg.a);
       return;
     } else if(abs(gd[0]-seg.a) < eps) {
       gd.insert(0,seg.b);
       return;
-    } else if(abs(gd[gd.length-1]-seg.a) < eps) {  
+    } else if(abs(gd[gd.length-1]-seg.a) < eps) {
       gd.push(seg.b);
       return;
     }
   }
- 
+
   // in case nothing is found
   pair[] segm;
-  segm=new pair[] {seg.a,seg.b}; 
+  segm=new pair[] {seg.a,seg.b};
   gds.push(segm);
-  
+
   return;
 }
 
-guide[][] contour(real f(pair), pair a, pair b,
+guide[][] contour(picture pic=currentpicture, real f(pair), pair a, pair b,
                   real[] c, int nx=ngraph, int ny=nx,
                   interpolate join=operator --)
 {
-  return contour(new real(real x, real y) {return f((x,y));},a,b,c,nx,ny,join);
+  return contour(pic,new real(real x, real y) {return f((x,y));},a,b,c,nx,ny,join);
 }
 
-guide[][] contour(pair[] z, real[] f, real[] c, interpolate join=operator --)
+guide[][] contour(picture pic=currentpicture, pair[] z, real[] f, real[] c, interpolate join=operator --)
 {
   if(z.length != f.length)
     abort("z and f arrays have different lengths");
@@ -664,7 +665,7 @@
 
   // array to store guides found so far
   pair[][][] points=new pair[c.length][][];
-        
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] pointscnt=points[cnt];
     real C=c[cnt];
@@ -678,5 +679,5 @@
 
   collect(points,c);
 
-  return connect(points,c,join);
+  return connect(pic,points,c,join);
 }

Modified: trunk/Master/texmf-dist/asymptote/contour3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/contour3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/contour3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -81,7 +81,7 @@
       int j2=2j;
       int j2p1=j2+1;
       int j2p2=j2+2;
- 
+
       for(int k=0; k < nz; ++k) {
         // vertex values
         real vdat0=fij[k];
@@ -108,21 +108,21 @@
         triple m3=0.25*(p100+p000+p001+p101);
         triple m4=0.25*(p000+p010+p011+p001);
         triple m5=0.25*(p001+p011+p111+p101);
-        triple mc=0.5*(m0+m5);                   
+        triple mc=0.5*(m0+m5);
 
         // optimization: we make sure we don't work with empty rectangles
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vdat) {
           if(vdat < -eps) ++countm;
           else {
-            if(vdat <= eps) ++countz; 
+            if(vdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vdat0);
         check(vdat1);
         check(vdat2);
@@ -132,32 +132,32 @@
         check(vdat6);
         check(vdat7);
 
-        if(countm == 8 || countp == 8 || 
+        if(countm == 8 || countp == 8 ||
            ((countm == 7 || countp == 7) && countz == 1)) continue;
 
         int k2=2k;
         int k2p1=k2+1;
         int k2p2=k2+2;
- 
+
         // Evaluate midpoints of cube sides.
         // Then evaluate midpoint of cube.
         real vdat8=midpoints ? midpoint[i2p1][j2p1][k2] :
           0.25*(vdat0+vdat2+vdat6+vdat4);
-        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] : 
+        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] :
           0.25*(vdat2+vdat6+vdat7+vdat3);
-        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] : 
+        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] :
           0.25*(vdat7+vdat6+vdat4+vdat5);
-        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] : 
+        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] :
           0.25*(vdat0+vdat4+vdat5+vdat1);
-        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] : 
+        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] :
           0.25*(vdat0+vdat2+vdat3+vdat1);
-        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] : 
+        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] :
           0.25*(vdat1+vdat3+vdat7+vdat5);
-        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] : 
+        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] :
           0.125*(vdat0+vdat1+vdat2+vdat3+vdat4+vdat5+vdat6+vdat7);
-      
+
         // Go through the 24 pyramids, 4 for each side.
-        
+
         void addval(int kp0, int kp1, int kp2, triple add, triple v) {
           bucket[] cur=kps[kp0][kp1][kp2];
           for(int q=0; q < cur.length; ++q) {
@@ -192,8 +192,14 @@
           vec0=unit(vec0);
           triple normal=cross(vec2,vec1);
           normal *= sgn(dot(normal,dir));
-          real angle0=acos(-dot(vec1,vec2));
-          real angle1=acos(-dot(vec2,vec0));
+
+          real angle(triple u, triple v) {
+            real Dot=-dot(u,v);
+            return Dot > 1 ? 0 : Dot < -1 ? pi : acos(Dot);
+          }
+
+          real angle0=angle(vec1,vec2);
+          real angle1=angle(vec2,vec0);
           pts[0].normal=normal*angle0;
           pts[1].normal=normal*angle1;
           pts[2].normal=normal*(pi-angle0-angle1);
@@ -206,7 +212,7 @@
             weighted[] points=obj.pts;
             object obj1;
             object obj2;
-            obj1.active=true; 
+            obj1.active=true;
             obj2.active=true;
             obj1.pts=new weighted[] {points[0],points[1],points[2]};
             obj2.pts=new weighted[] {points[1],points[2],points[3]};
@@ -220,7 +226,7 @@
           }
         }
 
-        weighted setupweighted(triple va, triple vb, real da, real db, 
+        weighted setupweighted(triple va, triple vb, real da, real db,
                                int[] kpa, int[] kpb) {
           weighted w;
           real ratio=abs(da/(db-da));
@@ -318,7 +324,7 @@
         static int[] pm4={0,1,1};
         static int[] pm5={1,1,2};
         static int[] pmc={1,1,1};
- 
+
         check4pyr(p000,p010,p110,p100,mc,m0,
                   vdat0,vdat2,vdat6,vdat4,vdat14,vdat8,
                   pp000,pp010,pp110,pp100,pmc,pm0);
@@ -378,14 +384,14 @@
     ret.normal=normal*2/count;
     return ret;
   }
-  
+
   // Prepare return value.
   vertex[][] g;
-  
+
   for(int q=0; q < objects.length; ++q) {
     object p=objects[q];
     g.push(new vertex[] {preparevertex(p.pts[0]),preparevertex(p.pts[1]),
-          preparevertex(p.pts[2])});
+                           preparevertex(p.pts[2])});
   }
   return g;
 }
@@ -454,7 +460,7 @@
         datij[k]=f(x,y,z);
         if(i == nx || j == ny || k == nz) continue;
         int k2p1=2k+1;
-        midpointi2p1j2p1[2k]=f(x2,y2,z); 
+        midpointi2p1j2p1[2k]=f(x2,y2,z);
         midpointi2p1j2p1[k2p1]=f(x2,y2,z2);
         midpointi2p1j2[k2p1]=f(x2,y,z2);
         midpointi2j2p1[k2p1]=f(x,y2,z2);

Modified: trunk/Master/texmf-dist/asymptote/embed.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/embed.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/embed.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,23 +7,23 @@
 // For documentation of the options see
 // http://mirror.ctan.org/macros/latex/contrib/media9/doc/media9.pdf
 
-// Embed PRC or SWF content in pdf file 
+// Embed PRC or SWF content in pdf file
 string embedplayer(string name, string text="", string options="",
                    real width=0, real height=0)
 {
-  if(width != 0) options += ",width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options += ",height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ",width="+(string) (width/pt)+"pt";
+  if(height != 0) options += ",height="+(string) (height/pt)+"pt";
   return "%
 \includemedia[noplaybutton,"+options+"]{"+text+"}{"+name+"}";
 }
 
-// Embed media in pdf file 
+// Embed media in pdf file
 string embed(string name, string text="", string options="",
              real width=0, real height=0)
 {
   return embedplayer("VPlayer.swf",text,"label="+name+
                      ",activate=pageopen,addresource="+name+
-                      ",flashvars={source="+name+"&scaleMode=letterbox},"+
+                     ",flashvars={source="+name+"&scaleMode=letterbox},"+
                      options,width,height);
 }
 

Modified: trunk/Master/texmf-dist/asymptote/external.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/external.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/external.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,8 +20,8 @@
       atexit(exitfunction);
     }
   }
-  if(width != 0) options += ", width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options +=", height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ", width="+(string) (width/pt)+"pt";
+  if(height != 0) options +=", height="+(string) (height/pt)+"pt";
   return "\href{run:"+name+"}{"+graphic(image,options)+"}";
 }
 

Modified: trunk/Master/texmf-dist/asymptote/feynman.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/feynman.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/feynman.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,12 +10,12 @@
 
 // default ratio of width (distance between two loops) to amplitude for a gluon
 // line. The gluon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real gluonratio;
 
 // default ratio of width (distance between two crests) to amplitude for a
 // photon  line. The photon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real photonratio;
 
 // default gluon amplitude
@@ -337,7 +337,7 @@
                real vertexangle = minvertexangle,
                real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
   draw(pic, p, fgpen, arrow);
 }
@@ -358,7 +358,7 @@
                     real vertexangle = minvertexangle,
                     real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
 
   real htw = linewidth(fgpen)+dlspacing/2;
@@ -466,7 +466,7 @@
                  pen fgpen = vertexpen)
 {
   draw(pic, shift(xy)*scale(r)*((-1,-1)--(1,1)), fgpen);
-  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);    
+  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);
 }
 
 // draw a circle with an X in the middle on picture pic, at position xy with
@@ -508,7 +508,7 @@
 }
 
 // draw a momentum arrow on picture pic, along path p, at position position
-// (use one of the predefined pairs left or right), with an offset offset 
+// (use one of the predefined pairs left or right), with an offset offset
 // from the path, a length length, a pen fgpen and an arrowhead arrow. Making
 // adjust nonzero shifts the momentum arrow along the path. If erasebg is true,
 // the background is erased inside a margin margin around the momentum arrow.
@@ -527,7 +527,7 @@
                   real margin = momarrowmargin)
 {
   path momarrow = momArrowPath(p, align, pos, offset, length);
-  if(erasebg) do_overpaint(pic, momarrow, bgpen, 
+  if(erasebg) do_overpaint(pic, momarrow, bgpen,
                            linewidth(fgpen)+margin, 90);
   draw(pic, momarrow, fgpen, arrow);
 }
@@ -540,7 +540,7 @@
 // (essentially, currentpen, arrowfactor and dotfactor). After customising the
 // default parameters of plain.asy, you may call fmdefaults to adjust the
 // parameters of feynman.asy.
-void fmdefaults() 
+void fmdefaults()
 {
   real arrowsize=arrowsize(currentpen);
   real linewidth=linewidth(currentpen);

Modified: trunk/Master/texmf-dist/asymptote/flowchart.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/flowchart.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/flowchart.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -57,29 +57,29 @@
   // in absolute coordinates.
   pair top(transform t=identity()) {
     return shift(t)+f_top;
-  } 
+  }
   pair bottom(transform t=identity()) {
     return shift(t)+f_bottom;
-  } 
+  }
   pair left(transform t=identity()) {
     return shift(t)+f_left;
-  } 
+  }
   pair right(transform t=identity()) {
     return shift(t)+f_right;
-  } 
+  }
   pair topleft(transform t=identity()) {
     return shift(t)+f_topleft;
-  } 
+  }
   pair topright(transform t=identity()) {
     return shift(t)+f_topright;
-  } 
+  }
   pair bottomleft(transform t=identity()) {
     return shift(t)+f_bottomleft;
-  } 
+  }
   pair bottomright(transform t=identity()) {
     return shift(t)+f_bottomright;
-  } 
-  
+  }
+
   // Return a frame representing the block.
   frame draw(pen p=currentpen);
 
@@ -118,25 +118,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
-    add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
-    filldraw(block,box((0,0),z1),bodypen,drawpen);
-    add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
-    return block;
+                               frame block;
+                               filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
+                               add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
+                               filldraw(block,box((0,0),z1),bodypen,drawpen);
+                               add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=interp(point(shape,0),point(shape,3),0.5);
-  block.f_bottomleft=point(shape,0); 
-  block.f_bottom=point(shape,5.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,0);
+  block.f_bottom=point(shape,5.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,0.5);
   block.center=center;
   block.size=point(shape,3);
   return block;
@@ -156,25 +156,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,0.5z);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,0.5z);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=0.5*z;
   block.center=center;
   block.size=z;
   block.f_bottomleft=point(shape,0);
-  block.f_bottom=point(shape,0.5); 
-  block.f_bottomright=point(shape,1); 
-  block.f_right=point(shape,1.5); 
-  block.f_topright=point(shape,2); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,3); 
-  block.f_left=point(shape,3.5); 
+  block.f_bottom=point(shape,0.5);
+  block.f_bottomright=point(shape,1);
+  block.f_right=point(shape,1.5);
+  block.f_topright=point(shape,2);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,3);
+  block.f_left=point(shape,3.5);
   return block;
 }
 
@@ -197,13 +197,13 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=((a+skew)/2,b/2);
   block.center=center;
@@ -229,7 +229,7 @@
   pair m=min(f);
   pair M=max(f);
   pair bound=maxbound(M-m,(minwidth,minheight));
-  
+
   real e=ds;
   real a=0.5bound.x-dw;
   real b=0.5bound.y;
@@ -244,25 +244,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(d,c));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(d,c));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(point(shape,1).x,point(shape,0).y);
   block.center=center;
   block.size=(point(shape,0).x,point(shape,1).y);
-  block.f_bottomleft=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomright=point(shape,3.5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,2); 
+  block.f_bottomleft=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomright=point(shape,3.5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,2);
   return block;
 }
 
@@ -274,30 +274,30 @@
   pair m=min(f);
   pair M=max(f);
   real r=max(0.5length(M-m)+dr,0.5mindiameter);
-  
+
   path shape=(0,r)..(r,2r)..(2r,r)..(r,0)..cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(r,r));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(r,r));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(r,r);
   block.center=center;
   block.size=(2r,2r);
   block.f_left=point(shape,0);
-  block.f_topleft=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topright=point(shape,1.5); 
-  block.f_right=point(shape,2); 
-  block.f_bottomright=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomleft=point(shape,3.5); 
+  block.f_topleft=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topright=point(shape,1.5);
+  block.f_right=point(shape,2);
+  block.f_bottomright=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomleft=point(shape,3.5);
   return block;
 }
 
@@ -313,33 +313,33 @@
 
   real a=bound.x;
   real b=bound.y;
-  
+
   path shape=(0,ds+dw)--(0,ds+b-dw){up}..{right}
   (ds+dw,2ds+b)--(ds+a-dw,2ds+b){right}..{down}
   (2ds+a,ds+b-dw)--(2ds+a,ds+dw){down}..{left}
   (ds+a-dw,0)--(ds+dw,0){left}..{up}cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(ds+0.5a,ds+0.5b);
   block.center=center;
   block.size=(2ds+a,2ds+b);
-  block.f_bottomleft=point(shape,7.5); 
-  block.f_bottom=point(shape,6.5); 
-  block.f_bottomright=point(shape,5.5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3.5); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,7.5);
+  block.f_bottom=point(shape,6.5);
+  block.f_bottomright=point(shape,5.5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3.5);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,0.5);
   return block;
 }
 
@@ -359,25 +359,25 @@
     (dw+a,0)--cycle;
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(dw+0.5a,dh+b);
   block.center=center;
   block.size=(2dw+a,2dh+2b);
-  block.f_bottomleft=point(shape,4); 
-  block.f_bottom=point(shape,4.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,1); 
-  block.f_top=point(shape,1.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,3); 
+  block.f_bottomleft=point(shape,4);
+  block.f_bottom=point(shape,4.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,1);
+  block.f_top=point(shape,1.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,3);
   return block;
 }
 
@@ -388,14 +388,14 @@
   for(int i=1; i < point.length; ++i) {
     if(i-1 >= dir.length || dir[i-1] == Horizontal)
       current=(point[i].x,point[i-1].y);
-    else 
+    else
       current=(point[i-1].x,point[i].y);
-    
+
     if(current != prev) {
       line=line--current;
       prev=current;
     }
-    
+
     current=point[i];
     if(current != prev) {
       line=line--current;

Modified: trunk/Master/texmf-dist/asymptote/geometry.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/geometry.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/geometry.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -40,7 +40,7 @@
   real angle=degrees(dir);
   if(angle > 90 && angle < 270) angle -= 180;
   return rotate(angle);
-} 
+}
 
 // *=======================================================*
 // *........................HEADER.........................*
@@ -165,7 +165,7 @@
   ed = ea - 6 * eb;
   ee = ed + ec + ec;
   return 3 * sum + fac * (1.0 + ed * (-C1 + C5 * ed - C6 * delz * ee)
-                    +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
+                          +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
 }
 
 /*<asyxml><function type="real" signature="elle(real,real)"><code></asyxml>*/
@@ -258,10 +258,10 @@
 {/*<asyxml></code><documentation>This structure represents a coordinate system in the plane.</documentation></asyxml>*/
   /*<asyxml><method type = "pair" signature="relativetodefault(pair)"><code></asyxml>*/
   restricted convert relativetodefault = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to this coordinate system to
-                                                                     the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "pair" signature="defaulttorelativet(pair)"><code></asyxml>*/
   restricted convert defaulttorelative = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to the default coordinate system to
-                                                                     the pair relatively to this coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="dot(pair,pair)"><code></asyxml>*/
   restricted dot dot = new real(pair m, pair n){return dot(m, n);};/*<asyxml></code><documentation>Return the dot product of this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="abs(pair)"><code></asyxml>*/
@@ -287,50 +287,50 @@
 
 /*<asyxml><operator type = "bool" signature="==(coordsys,coordsys)"><code></asyxml>*/
 bool operator ==(coordsys c1, coordsys c2)
-{/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
-  return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
-}
+  {/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
+   return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
+  }
 
 /*<asyxml><function type="coordsys" signature="cartesiansystem(pair,pair,pair)"><code></asyxml>*/
 coordsys cartesiansystem(pair O = (0, 0), pair i, pair j)
 {/*<asyxml></code><documentation>Return the Cartesian coordinate system (O, i, j).</documentation></function></asyxml>*/
-  coordsys R;
-  real[][] P = {{0, 0}, {0, 0}};
-  real[][] iP;
-  P[0][0] = i.x;
-  P[0][1] = j.x;
-  P[1][0] = i.y;
-  P[1][1] = j.y;
-  iP = inverse(P);
-  real ni = abs(i);
-  real nj = abs(j);
-  real ij = angle(j) - angle(i);
+ coordsys R;
+ real[][] P = {{0, 0}, {0, 0}};
+ real[][] iP;
+ P[0][0] = i.x;
+ P[0][1] = j.x;
+ P[1][0] = i.y;
+ P[1][1] = j.y;
+ iP = inverse(P);
+ real ni = abs(i);
+ real nj = abs(j);
+ real ij = angle(j) - angle(i);
 
-  pair rtd(pair m)
-  {
-    return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
-  }
+ pair rtd(pair m)
+ {
+   return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
+ }
 
-  pair dtr(pair m)
-  {
-    m-=O;
-    return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
-  }
+ pair dtr(pair m)
+ {
+   m-=O;
+   return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
+ }
 
-  pair polar(real r, real a)
-  {
-    real ca = sin(ij - a)/(ni * sin(ij));
-    real sa = sin(a)/(nj * sin(ij));
-    return r * (ca, sa);
-  }
+ pair polar(real r, real a)
+ {
+   real ca = sin(ij - a)/(ni * sin(ij));
+   real sa = sin(a)/(nj * sin(ij));
+   return r * (ca, sa);
+ }
 
-  real tdot(pair m, pair n)
-  {
-    return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
-  }
+ real tdot(pair m, pair n)
+ {
+   return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
+ }
 
-  R.init(rtd, dtr, polar, tdot);
-  return R;
+ R.init(rtd, dtr, polar, tdot);
+ return R;
 }
 
 
@@ -344,19 +344,19 @@
           pen jpen = ipen,
           arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the components (O, i, j, x - axis, y - axis) of 'R'.</documentation></function></asyxml>*/
-  unravel R;
-  dot(pic, O, dotpen);
-  drawline(pic, O, O + i, xpen);
-  drawline(pic, O, O + j, ypen);
-  draw(pic, li, O--(O + i), ipen, arrow);
-  Label lj = lj.copy();
-  lj.align(lj.align, unit(I * j));
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  Label lo = lo.copy();
-  lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
-  lo.p(dotpen);
-  label(pic, lo, O);
+ unravel R;
+ dot(pic, O, dotpen);
+ drawline(pic, O, O + i, xpen);
+ drawline(pic, O, O + j, ypen);
+ draw(pic, li, O--(O + i), ipen, arrow);
+ Label lj = lj.copy();
+ lj.align(lj.align, unit(I * j));
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ Label lo = lo.copy();
+ lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
+ lo.p(dotpen);
+ label(pic, lo, O);
 }
 
 /*<asyxml><operator type = "pair" signature="/(pair,coordsys)"><code></asyxml>*/
@@ -364,7 +364,7 @@
 {/*<asyxml></code><documentation>Return the xy - coordinates of 'p' relatively to
    the coordinate system 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), (0, 0)/R is (-1, -2).</documentation></operator></asyxml>*/
-  return R.defaulttorelative(p);
+ return R.defaulttorelative(p);
 }
 
 /*<asyxml><operator type = "pair" signature="*(coordsys,pair)"><code></asyxml>*/
@@ -372,25 +372,25 @@
 {/*<asyxml></code><documentation>Return the coordinates of 'p' given in the
    xy - coordinates 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), R * (0, 0) is (1, 2).</documentation></operator></asyxml>*/
-  return R.relativetodefault(p);
+ return R.relativetodefault(p);
 }
 
 /*<asyxml><operator type = "path" signature="*(coordsys,path)"><code></asyxml>*/
 path operator *(coordsys R, path g)
 {/*<asyxml></code><documentation>Return the reconstructed path applying R * pair to each node, pre and post control point of 'g'.</documentation></operator></asyxml>*/
-  guide og = R * point(g, 0);
-  real l = length(g);
-  for(int i = 1; i <= l; ++i)
-    {
-      pair P = R * point(g, i);
-      pair post = R * postcontrol(g, i - 1);
-      pair pre = R * precontrol(g, i);
-      if(i == l && (cyclic(g)))
-        og = og..controls post and pre..cycle;
-      else
-        og = og..controls post and pre..P;
-    }
-  return og;
+ guide og = R * point(g, 0);
+ real l = length(g);
+ for(int i = 1; i <= l; ++i)
+   {
+     pair P = R * point(g, i);
+     pair post = R * postcontrol(g, i - 1);
+     pair pre = R * precontrol(g, i);
+     if(i == l && (cyclic(g)))
+       og = og..controls post and pre..cycle;
+     else
+       og = og..controls post and pre..P;
+   }
+ return og;
 }
 
 /*<asyxml><operator type = "coordsys" signature="*(transform,coordsys)"><code></asyxml>*/
@@ -397,9 +397,9 @@
 coordsys operator *(transform t,coordsys R)
 {/*<asyxml></code><documentation>Provide transform * coordsys.
    Note that shiftless(t) is applied to R.i and R.j.</documentation></operator></asyxml>*/
-  coordsys oc;
-  oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
-  return oc;
+ coordsys oc;
+ oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
+ return oc;
 }
 
 /*<asyxml><constant type = "coordsys" signature="defaultcoordsys"><code></asyxml>*/
@@ -651,26 +651,26 @@
 
 /*<asyxml><operator type = "bool" signature="==(explicit point,explicit point)"><code></asyxml>*/
 bool operator ==(explicit point M, explicit point N)
-{/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
-  return abs(locate(M) - locate(N)) < EPS;
-}
+  {/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
+   return abs(locate(M) - locate(N)) < EPS;
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(explicit point,explicit point)"><code></asyxml>*/
 bool operator !=(explicit point M, explicit point N)
 {/*<asyxml></code><documentation>Provide the test 'M != N' wish return true iff MN >= EPS</documentation></operator></asyxml>*/
-  return !(M == N);
+ return !(M == N);
 }
 
 /*<asyxml><operator type = "guide" signature="cast(point)"><code></asyxml>*/
 guide operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to guide.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><operator type = "path" signature="cast(point)"><code></asyxml>*/
 path operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to path.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><function type="void" signature="dot(picture,Label,explicit point,align,string,pen)"><code></asyxml>*/
@@ -678,70 +678,70 @@
          align align = NoAlign,
          string format = defaultformat, pen p = currentpen)
 {/*<asyxml></code><documentation></documentation></function></asyxml>*/
-  Label L = L.copy();
-  L.position(locate(Z));
-  if(L.s == "") {
-    if(format == "") format = defaultformat;
-    L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
-  }
-  L.align(align, E);
-  L.p(p);
-  dot(pic, locate(Z), p);
-  add(pic, L);
+ Label L = L.copy();
+ L.position(locate(Z));
+ if(L.s == "") {
+   if(format == "") format = defaultformat;
+   L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
+ }
+ L.align(align, E);
+ L.p(p);
+ dot(pic, locate(Z), p);
+ add(pic, L);
 }
 
 /*<asyxml><function type="real" signature="abs(coordsys,pair)"><code></asyxml>*/
 real abs(coordsys R, pair m)
 {/*<asyxml></code><documentation>Return the modulus |m| in the coordinate system 'R'.</documentation></function></asyxml>*/
-  return R.abs(m);
+ return R.abs(m);
 }
 
 /*<asyxml><function type="real" signature="abs(explicit point)"><code></asyxml>*/
 real abs(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system.</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="real" signature="length(explicit point)"><code></asyxml>*/
 real length(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system (same as 'abs').</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="point" signature="conj(explicit point)"><code></asyxml>*/
 point conj(explicit point M)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return point(M.coordsys, conj(M.coordinates), M.m);
+ return point(M.coordsys, conj(M.coordinates), M.m);
 }
 
 /*<asyxml><function type="real" signature="degrees(explicit point,coordsys,bool)"><code></asyxml>*/
 real degrees(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
+ return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(explicit point,coordsys,bool)"><code></asyxml>*/
 real angle(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(M, R, warn));
+ return radians(degrees(M, R, warn));
 }
 
 bool Finite(explicit point z)
 {
-  return abs(z.x) < Infinity && abs(z.y) < Infinity;
+ return abs(z.x) < Infinity && abs(z.y) < Infinity;
 }
 
 /*<asyxml><function type="bool" signature="finite(explicit point)"><code></asyxml>*/
 bool finite(explicit point p)
 {/*<asyxml></code><documentation>Avoid to compute 'finite((pair)(infinite_point))'.</documentation></function></asyxml>*/
-  return finite(p.coordinates);
+ return finite(p.coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,point)"><code></asyxml>*/
 real dot(point A, point B)
 {/*<asyxml></code><documentation>Return the dot product in the coordinate system of 'A'.</documentation></function></asyxml>*/
-  point[] P = standardizecoordsys(A.coordsys, A, B);
-  return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
+ point[] P = standardizecoordsys(A.coordsys, A, B);
+ return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,explicit pair)"><code></asyxml>*/
@@ -748,33 +748,33 @@
 real dot(point A, explicit pair B)
 {/*<asyxml></code><documentation>Return the dot product in the default coordinate system.
    dot(explicit pair, point) is also defined.</documentation></function></asyxml>*/
-  return dot(locate(A), B);
+ return dot(locate(A), B);
 }
 real dot(explicit pair A, point B)
 {
-  return dot(A, locate(B));
+ return dot(A, locate(B));
 }
 
 /*<asyxml><function type="transforms" signature="rotateO(real)"><code></asyxml>*/
 transform rotateO(real a)
 {/*<asyxml></code><documentation>Rotation around the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return rotate(a, currentcoordsys.O);
+ return rotate(a, currentcoordsys.O);
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point)"><code></asyxml>*/
 transform projection(point A, point B)
 {/*<asyxml></code><documentation>Return the orthogonal projection on the line (AB).</documentation></function></asyxml>*/
-  pair dir = unit(locate(A) - locate(B));
-  pair a = locate(A);
-  real cof = dir.x * a.x + dir.y * a.y;
-  real tx = a.x - dir.x * cof;
-  real txx = dir.x^2;
-  real txy = dir.x * dir.y;
-  real ty = a.y - dir.y * cof;
-  real tyx = txy;
-  real tyy = dir.y^2;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair dir = unit(locate(A) - locate(B));
+ pair a = locate(A);
+ real cof = dir.x * a.x + dir.y * a.y;
+ real tx = a.x - dir.x * cof;
+ real txx = dir.x^2;
+ real txy = dir.x * dir.y;
+ real ty = a.y - dir.y * cof;
+ real tyx = txy;
+ real tyy = dir.y^2;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point,point,point,bool)"><code></asyxml>*/
@@ -782,45 +782,45 @@
 {/*<asyxml></code><documentation>Return the (CD) parallel projection on (AB).
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return an infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = c * v.x/d;
-  real ty = c * v.y/d;
-  real txx = u.x * v.y/d;
-  real txy = -u.x * v.x/d;
-  real tyx = u.y * v.y/d;
-  real tyy = -u.y * v.x/d;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = c * v.x/d;
+ real ty = c * v.y/d;
+ real txx = u.x * v.y/d;
+ real txy = -u.x * v.x/d;
+ real tyx = u.y * v.y/d;
+ real tyy = -u.y * v.x/d;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point)"><code></asyxml>*/
 transform scale(real k, point M)
 {/*<asyxml></code><documentation>Homothety.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  return shift(P) * scale(k) * shift(-P);
+ pair P = locate(M);
+ return shift(P) * scale(k) * shift(-P);
 }
 
 /*<asyxml><function type="transform" signature="xscale(real,point)"><code></asyxml>*/
 transform xscale(real k, point M)
 {/*<asyxml></code><documentation>xscale from 'M' relatively to the x - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.i);
-  return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.i);
+ return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="yscale(real,point)"><code></asyxml>*/
 transform yscale(real k, point M)
 {/*<asyxml></code><documentation>yscale from 'M' relatively to the y - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.j) - 90;
-  return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.j) - 90;
+ return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point,point,point,point,bool)"><code></asyxml>*/
@@ -829,41 +829,41 @@
    (help me for English translation...)
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return a infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = (1 - k) * c * v.x/d;
-  real ty = (1 - k) * c * v.y/d;
-  real txx = (1 - k) * u.x * v.y/d + k;
-  real txy = (k - 1) * u.x * v.x/d;
-  real tyx = (1 - k) * u.y * v.y/d;
-  real tyy = (k - 1) * u.y * v.x/d + k;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = (1 - k) * c * v.x/d;
+ real ty = (1 - k) * c * v.y/d;
+ real txx = (1 - k) * u.x * v.y/d + k;
+ real txy = (k - 1) * u.x * v.x/d;
+ real tyx = (1 - k) * u.y * v.y/d;
+ real tyy = (k - 1) * u.y * v.x/d + k;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scaleO(real)"><code></asyxml>*/
 transform scaleO(real x)
 {/*<asyxml></code><documentation>Homothety from the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0));
+ return scale(x, (0, 0));
 }
 
 /*<asyxml><function type="transform" signature="xscaleO(real)"><code></asyxml>*/
 transform xscaleO(real x)
 {/*<asyxml></code><documentation>xscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
+ return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
 }
 
 /*<asyxml><function type="transform" signature="yscaleO(real)"><code></asyxml>*/
 transform yscaleO(real x)
 {/*<asyxml></code><documentation>yscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
+ return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
 }
 
 /*<asyxml><struct signature="vector"><code></asyxml>*/
@@ -876,7 +876,7 @@
 /*<asyxml><operator type = "point" signature="cast(vector)"><code></asyxml>*/
 point operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector 'v' to point 'M' so that OM = v.</documentation></operator></asyxml>*/
-  return v.v;
+ return v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(pair)"><code></asyxml>*/
@@ -883,9 +883,9 @@
 vector operator cast(pair v)
 {/*<asyxml></code><documentation>Cast pair to vector relatively to the current coordinate
    system 'currentcoordsys'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = point(currentcoordsys, v);
-  return ov;
+ vector ov;
+ ov.v = point(currentcoordsys, v);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(explicit point)"><code></asyxml>*/
@@ -892,29 +892,29 @@
 vector operator cast(explicit point v)
 {/*<asyxml></code><documentation>A point can be interpreted like a vector using the code
    '(vector)a_point'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = v;
-  return ov;
+ vector ov;
+ ov.v = v;
+ return ov;
 }
 
 /*<asyxml><operator type = "pair" signature="cast(explicit vector)"><code></asyxml>*/
 pair operator cast(explicit vector v)
 {/*<asyxml></code><documentation>Cast vector to pair (the coordinates of 'v' in the default coordinate system).</documentation></operator></asyxml>*/
-  return locate(v.v) - v.v.coordsys.O;
+ return locate(v.v) - v.v.coordsys.O;
 }
 
 /*<asyxml><operator type = "align" signature="cast(vector)"><code></asyxml>*/
 align operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector to align.</documentation></operator></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="vector" signature="vector(coordsys, pair)"><code></asyxml>*/
 vector vector(coordsys R = currentcoordsys, pair v)
 {/*<asyxml></code><documentation>Return the vector of 'R' which has the coordinates 'v'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, v);
-  return ov;
+ vector ov;
+ ov.v = point(R, v);
+ return ov;
 }
 
 /*<asyxml><function type="vector" signature="vector(point)"><code></asyxml>*/
@@ -921,76 +921,76 @@
 vector vector(point M)
 {/*<asyxml></code><documentation>Return the vector OM, where O is the origin of the coordinate system of 'M'.
    Useful to write 'vector(P - M);' instead of '(vector)(P - M)'.</documentation></function></asyxml>*/
-  return M;
+ return M;
 }
 
 /*<asyxml><function type="point" signature="point(explicit vector)"><code></asyxml>*/
 point point(explicit vector u)
 {/*<asyxml></code><documentation>Return the point M so that OM = u, where O is the origin of the coordinate system of 'u'.</documentation></function></asyxml>*/
-  return u.v;
+ return u.v;
 }
 
 /*<asyxml><function type="pair" signature="locate(explicit vector)"><code></asyxml>*/
 pair locate(explicit vector v)
 {/*<asyxml></code><documentation>Return the coordinates of 'v' in the default coordinate system (like casting vector to pair).</documentation></function></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="void" signature="show(Label,pen,arrowbar)"><code></asyxml>*/
 void show(Label L, vector v, pen p = currentpen, arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the vector v (from the origin of its coordinate system).</documentation></function></asyxml>*/
-  coordsys R = v.v.coordsys;
-  draw(L, R.O--v.v, p, arrow);
+ coordsys R = v.v.coordsys;
+ draw(L, R.O--v.v, p, arrow);
 }
 
 /*<asyxml><function type="vector" signature="changecoordsys(coordsys,vector)"><code></asyxml>*/
 vector changecoordsys(coordsys R, vector v)
 {/*<asyxml></code><documentation>Return the vector 'v' relatively to coordinate system 'R'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, (locate(v) + R.O)/R);
-  return ov;
+ vector ov;
+ ov.v = point(R, (locate(v) + R.O)/R);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="*(real,explicit vector)"><code></asyxml>*/
 vector operator *(real x, explicit vector v)
 {/*<asyxml></code><documentation>Provide real * vector.</documentation></operator></asyxml>*/
-  return x * v.v;
+ return x * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="/(explicit vector,real)"><code></asyxml>*/
 vector operator /(explicit vector v, real x)
 {/*<asyxml></code><documentation>Provide vector/real</documentation></operator></asyxml>*/
-  return v.v/x;
+ return v.v/x;
 }
 
 /*<asyxml><operator type = "vector" signature="*(transform t,explicit vector)"><code></asyxml>*/
 vector operator *(transform t, explicit vector v)
 {/*<asyxml></code><documentation>Provide transform * vector.</documentation></operator></asyxml>*/
-  return t * v.v;
+ return t * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="*(explicit point,explicit vector)"><code></asyxml>*/
 vector operator *(explicit point M, explicit vector v)
 {/*<asyxml></code><documentation>Provide point * vector</documentation></operator></asyxml>*/
-  return M * v.v;
+ return M * v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit point,explicit vector)"><code></asyxml>*/
 point operator +(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by 'v'.</documentation></operator></asyxml>*/
-  return shift(locate(v)) * M;
+ return shift(locate(v)) * M;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit point,explicit vector)"><code></asyxml>*/
 point operator -(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by '-v'.</documentation></operator></asyxml>*/
-  return shift(-locate(v)) * M;
+ return shift(-locate(v)) * M;
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector)"><code></asyxml>*/
 vector operator -(explicit vector v)
 {/*<asyxml></code><documentation>Provide -v.</documentation></operator></asyxml>*/
-  return -v.v;
+ return -v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit pair,explicit vector)"><code></asyxml>*/
@@ -998,7 +998,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector 'v'.</documentation></operator></asyxml>*/
-  return locate(m) + v;
+ return locate(m) + v;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit pair,explicit vector)"><code></asyxml>*/
@@ -1006,7 +1006,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector '-v'.</documentation></operator></asyxml>*/
-  return m + (-v);
+ return m + (-v);
 }
 
 /*<asyxml><operator type = "vector" signature="+(explicit vector,explicit vector)"><code></asyxml>*/
@@ -1014,9 +1014,9 @@
 {/*<asyxml></code><documentation>Provide vector + vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  coordsys R = v1.v.coordsys;
-  if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
-  return vector(R, (locate(v1) + locate(v2))/R);
+ coordsys R = v1.v.coordsys;
+ if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
+ return vector(R, (locate(v1) + locate(v2))/R);
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector, explicit vector)"><code></asyxml>*/
@@ -1024,31 +1024,31 @@
 {/*<asyxml></code><documentation>Provide vector - vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  return v1 + (-v2);
+ return v1 + (-v2);
 }
 
 /*<asyxml><operator type = "bool" signature="==(explicit vector,explicit vector)"><code></asyxml>*/
 bool operator ==(explicit vector u, explicit vector v)
-{/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
-  return abs(u - v) < EPS;
-}
+  {/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
+   return abs(u - v) < EPS;
+  }
 
 /*<asyxml><function type="bool" signature="collinear(vector,vector)"><code></asyxml>*/
 bool collinear(vector u, vector v)
 {/*<asyxml></code><documentation>Return 'true' iff the vectors 'u' and 'v' are collinear.</documentation></function></asyxml>*/
-  return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
+ return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
 }
 
 /*<asyxml><function type="vector" signature="unit(point)"><code></asyxml>*/
 vector unit(point M)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return M/abs(M);
+ return M/abs(M);
 }
 
 /*<asyxml><function type="vector" signature="unit(vector)"><code></asyxml>*/
 vector unit(vector u)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return u.v/abs(u.v);
+ return u.v/abs(u.v);
 }
 
 /*<asyxml><function type="real" signature="degrees(vector,coordsys,bool)"><code></asyxml>*/
@@ -1056,7 +1056,7 @@
              coordsys R = v.v.coordsys,
              bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(v), warn) - degrees(R.i))%360;
+ return (degrees(locate(v), warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(vector,coordsys,bool)"><code></asyxml>*/
@@ -1064,13 +1064,13 @@
            coordsys R = v.v.coordsys,
            bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(v, R, warn));
+ return radians(degrees(v, R, warn));
 }
 
 /*<asyxml><function type="vector" signature="conj(explicit vector)"><code></asyxml>*/
 vector conj(explicit vector u)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return conj(u.v);
+ return conj(u.v);
 }
 
 /*<asyxml><function type="transform" signature="rotate(explicit vector)"><code></asyxml>*/
@@ -1079,7 +1079,7 @@
    This is useful for rotating text along a line in the direction dir.
    rotate(explicit point dir) is also defined.
    </documentation></function></asyxml>*/
-  return rotate(locate(dir));
+ return rotate(locate(dir));
 }
 transform rotate(explicit point dir){return rotate(locate(vector(dir)));}
 // *......................COORDINATES......................*
@@ -1311,7 +1311,7 @@
   g = margin(g, p).g;
   draw(apic, g, p);
   if(filltype != NoFill) filltype.fill(apic, (relpoint(g, 0) - relpoint(g, 0.5)+
-                                             relpoint(g, 1))--g--cycle, p + solid);
+                                              relpoint(g, 1))--g--cycle, p + solid);
   add(pic, apic, locate(z));
 }
 
@@ -1360,7 +1360,7 @@
   pair Ap = A, Bp = B, Op = O;
   pair dir = Ap - Op;
   real a1 = degrees(dir);
-  pair align = rotate(-a1) * unit(dir(Op--Ap, Op--Bp));
+  pair align = rotate(-a1) * dir(Op--Ap, Op--Bp);
   perpendicularmark(pic = pic, z = O, align = align,
                     dir = dir, size = size, p = p,
                     margin = margin, filltype = filltype);
@@ -1700,16 +1700,16 @@
 
 /*<asyxml><operator type = "bool" signature="==(line,line)"><code></asyxml>*/
 bool operator ==(line l1, line l2)
-{/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
-  return (collinear(l1.u, l2.u) &&
-          abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
-          l1.extendA == l2.extendA && l1.extendB == l2.extendB);
-}
+  {/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
+   return (collinear(l1.u, l2.u) &&
+           abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
+           l1.extendA == l2.extendA && l1.extendB == l2.extendB);
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(line,line)"><code></asyxml>*/
 bool operator !=(line l1, line l2)
 {/*<asyxml></code><documentation>Provide the test 'line != line'.</documentation></operator></asyxml>*/
-  return !(l1 == l2);
+ return !(l1 == l2);
 }
 
 /*<asyxml><operator type = "bool" signature="@(point,line)"><code></asyxml>*/
@@ -1716,33 +1716,33 @@
 bool operator @(point m, line l)
 {/*<asyxml></code><documentation>Provide the test 'point @ line'.
    Return true iff 'm' is on the 'l'.</documentation></operator></asyxml>*/
-  point M = changecoordsys(l.A.coordsys, m);
-  if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
-  if (l.extendA && l.extendB) return true;
-  if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
-  if (l.extendA) return sameside(M, l.A, l.B);
-  return sameside(M, l.B, l.A);
+ point M = changecoordsys(l.A.coordsys, m);
+ if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
+ if (l.extendA && l.extendB) return true;
+ if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
+ if (l.extendA) return sameside(M, l.A, l.B);
+ return sameside(M, l.B, l.A);
 }
 
 /*<asyxml><function type="coordsys" signature="coordsys(line)"><code></asyxml>*/
 coordsys coordsys(line l)
 {/*<asyxml></code><documentation>Return the coordinate system in which 'l' is defined.</documentation></function></asyxml>*/
-  return l.A.coordsys;
+ return l.A.coordsys;
 }
 
 /*<asyxml><function type="line" signature="reverse(line)"><code></asyxml>*/
 line reverse(line l)
 {/*<asyxml></code><documentation>Permute the points 'A' and 'B' of 'l' and so its orientation.</documentation></function></asyxml>*/
-  return line(l.B, l.extendB, l.A, l.extendA);
+ return line(l.B, l.extendB, l.A, l.extendA);
 }
 
 /*<asyxml><function type="line" signature="extend(line)"><code></asyxml>*/
 line extend(line l)
 {/*<asyxml></code><documentation>Return the infinite line passing through 'l.A' and 'l.B'.</documentation></function></asyxml>*/
-  line ol = l.copy();
-  ol.extendA = true;
-  ol.extendB = true;
-  return ol;
+ line ol = l.copy();
+ ol.extendA = true;
+ ol.extendB = true;
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="complementary(explicit line)"><code></asyxml>*/
@@ -1749,31 +1749,31 @@
 line complementary(explicit line l)
 {/*<asyxml></code><documentation>Return the complementary of a half-line with respect of
    the full line 'l'.</documentation></function></asyxml>*/
-  if (l.extendA && l.extendB)
-    abort("complementary: the parameter is not a half-line.");
-  point origin = l.extendA ? l.B : l.A;
-  point ptdir = l.extendA ?
-    rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
-  return line(origin, false, ptdir);
+ if (l.extendA && l.extendB)
+   abort("complementary: the parameter is not a half-line.");
+ point origin = l.extendA ? l.B : l.A;
+ point ptdir = l.extendA ?
+ rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
+ return line(origin, false, ptdir);
 }
 
 /*<asyxml><function type="line[]" signature="complementary(explicit segment)"><code></asyxml>*/
 line[] complementary(explicit segment s)
 {/*<asyxml></code><documentation>Return the two half-lines of origin 's.A' and 's.B' respectively.</documentation></function></asyxml>*/
-  line[] ol = new line[2];
-  ol[0] = complementary(line(s.A, false, s.B));
-  ol[1] = complementary(line(s.A, s.B, false));
-  return ol;
+ line[] ol = new line[2];
+ ol[0] = complementary(line(s.A, false, s.B));
+ ol[1] = complementary(line(s.A, s.B, false));
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="Ox(coordsys)"><code></asyxml>*/
 line Ox(coordsys R = currentcoordsys)
 {/*<asyxml></code><documentation>Return the x-axis of 'R'.</documentation></function></asyxml>*/
-  return line(point(R, (0, 0)), point(R, E));
+ return line(point(R, (0, 0)), point(R, E));
 }
 /*<asyxml><constant type = "line" signature="Ox"><code></asyxml>*/
 restricted line Ox = Ox();/*<asyxml></code><documentation>the x-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="Oy(coordsys)"><code></asyxml>*/
 line Oy(coordsys R = currentcoordsys)
@@ -1782,7 +1782,7 @@
 }
 /*<asyxml><constant type = "line" signature="Oy"><code></asyxml>*/
 restricted line Oy = Oy();/*<asyxml></code><documentation>the y-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="line(real,point)"><code></asyxml>*/
 line line(real a, point A = point(currentcoordsys, (0, 0)))
@@ -1826,7 +1826,7 @@
 }
 /*<asyxml><constant type = "line" signature="vline"><code></asyxml>*/
 restricted line vline = vline();/*<asyxml></code><documentation>The vertical line in the current coordinate system passing
-                                through the origin of this system.</documentation></constant></asyxml>*/
+                                  through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="hline(coordsys)"><code></asyxml>*/
 line hline(coordsys R = currentcoordsys)
@@ -1837,7 +1837,7 @@
 }
 /*<asyxml><constant type = "line" signature="hline"><code></asyxml>*/
 line hline = hline();/*<asyxml></code><documentation>The horizontal line in the current coordinate system passing
-                     through the origin of this system.</documentation></constant></asyxml>*/
+                       through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="changecoordsys(coordsys,line)"><code></asyxml>*/
 line changecoordsys(coordsys R, line l)
@@ -2358,11 +2358,11 @@
 bqe changecoordsys(coordsys R, bqe bqe)
 {/*<asyxml></code><documentation>Returns the bivariate quadratic equation relatively to 'R'.</documentation></function></asyxml>*/
   pair i = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.i)));
+                                                bqe.coordsys.i)));
   pair j = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.j)));
+                                                bqe.coordsys.j)));
   pair O = coordinates(changecoordsys(R, point(defaultcoordsys,
-                                            bqe.coordsys.O)));
+                                               bqe.coordsys.O)));
   real a = bqe.a[0], b = bqe.a[1], c = bqe.a[2], d = bqe.a[3], f = bqe.a[4], g = bqe.a[5];
   real ux = i.x, uy = i.y;
   real vx = j.x, vy = j.y;
@@ -2372,14 +2372,14 @@
   real bpp = (-2 * a * vx * vy + b * ux * vy + b * uy * vx - 2 * c * ux * uy)/D^2;
   real cp = (a * vx^2 - b * ux * vx + c * ux^2)/D^2;
   real dp = (-2a * ox * vy^2 + 2a * oy * vx * vy + 2b * ox * uy * vy-
-           b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
+             b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
     (d * vy - f * uy)/D;
   real fp = (2a * ox * vx * vy - b * ox * ux * vy - 2a * oy * vx^2-
-           b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
+             b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
     (f * ux - d * vx)/D;
   g = (a * ox^2 * vy^2 - 2a * ox * oy * vx * vy - b * ox^2 * uy * vy + b * ox * oy * ux * vy+
-     a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
-     2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
+       a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
+       2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
     (d * oy * vx + f * ox * uy - d * ox * vy - f * oy * ux)/D + g;
   bqe obqe;
   obqe.a = approximate(new real[] {ap, bpp, cp, dp, fp, g});
@@ -2636,7 +2636,7 @@
     this.b = a * sqrt(this.e^2 - 1);
     this.p = a * (this.e^2 - 1);
     point A = this.C + (a^2/this.c) * unit(P[0]-this.C);
-    this.D1 = line(A, A + rotateO(90) * unit(A - this.C));
+    this.D1 = line(A, A + rotate(90,this.C.coordsys.O) * unit(A - this.C));
     this.D2 = reverse(rotate(180, C) * D1);
     this.V1 = C + a * unit(F1 - C);
     this.V2 = C + a * unit(F2 - C);
@@ -3073,8 +3073,8 @@
   real gle = degrees(l);
   coordsys Rp = cartesiansystem(R.O, rotate(gle) * R.i, rotate(gle) * R.j);
   pts = new pair[] {coordinates(changecoordsys(Rp, M1)),
-                  coordinates(changecoordsys(Rp, M2)),
-                  coordinates(changecoordsys(Rp, M3))};
+                    coordinates(changecoordsys(Rp, M2)),
+                    coordinates(changecoordsys(Rp, M3))};
   real[][] M;
   real[] x;
   for (int i = 0; i < 3; ++i) {
@@ -3560,10 +3560,10 @@
   path g;
   if(co.e < 1)
     g = arcfromcenter((ellipse)co, angle1,
-                    angle2, direction, n);
+                      angle2, direction, n);
   else if(co.e > 1)
     g = arcfromcenter((hyperbola)co, angle1,
-                    angle2, n, direction);
+                      angle2, n, direction);
   else abort("arcfromcenter: does not exist for a parabola.");
   return g;
 }
@@ -3590,8 +3590,8 @@
   }
   real[] coef = solve(M, x);
   bqe bqe = changecoordsys(coordsys(el),
-                         bqe(defaultcoordsys,
-                             1, coef[0], coef[1], coef[2], coef[3], coef[4]));
+                           bqe(defaultcoordsys,
+                               1, coef[0], coef[1], coef[2], coef[3], coef[4]));
   bqe.a = approximate(bqe.a);
   return bqe;
 }
@@ -4038,8 +4038,8 @@
     // given form the center of the ellipse.
     real gle = atan(el.a * tan(radians(a))/el.b)+
       pi * (((a%90 == 0 && a != 0) ? floor(a/90) - 1 : floor(a/90)) -
-          ((a%180 == 0) ? 0 : floor(a/180)) -
-          (a%360 == 0 ? floor(a/(360)) : 0));
+            ((a%180 == 0) ? 0 : floor(a/180)) -
+            (a%360 == 0 ? floor(a/(360)) : 0));
     /* // Uncomment to visualize the used branches
        unitsize(2cm, 1cm);
        import graph;
@@ -4076,7 +4076,7 @@
 {/*<asyxml></code><documentation>Return the arclength from 180 to 'angle' given from focus in the
    canonical coordinate system of 'p'.</documentation></function></asyxml>*/
   real a = p.a; /* In canonicalcartesiansystem(p) the equation of p
-                 is x = y^2/(4a) */
+                   is x = y^2/(4a) */
   // integrate(sqrt(1 + (x/(2 * a))^2), x);
   real S(real t){return 0.5 * t * sqrt(1 + t^2/(4 * a^2)) + a * asinh(t/(2 * a));}
   real R(real gle){return 2 * a/(1 - Cos(gle));}
@@ -4110,7 +4110,7 @@
   real x;/*<asyxml></code><documentation>The abscissa value.</documentation></property><property type = "int" signature="system"><code></asyxml>*/
   int system;/*<asyxml></code><documentation>0 = relativesystem; 1 = curvilinearsystem; 2 = angularsystem; 3 = nodesystem</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = fromCenter;/*<asyxml></code><documentation>The routine used with angular system and two foci conic section.
-                                                   Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
+                                                     Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
   /*<asyxml><method type = "abscissa" signature="copy()"><code></asyxml>*/
   abscissa copy()
   {/*<asyxml></code><documentation>Return a copy of this abscissa.</documentation></method></asyxml>*/
@@ -4800,7 +4800,7 @@
   restricted  real angle1, angle2;/*<asyxml></code><documentation>Values (in degrees) in ]-360, 360[.</documentation></property><property type = "bool" signature="direction"><code></asyxml>*/
   bool direction = CCW;/*<asyxml></code><documentation>The arc will be drawn from 'angle1' to 'angle2' rotating in the direction 'direction'.</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = currentpolarconicroutine;/*<asyxml></code><documentation>The routine to which the angles refer.
-                                                                 If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
+                                                                   If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
 
   /*<asyxml><method type = "void" signature="setangles(real,real,real)"><code></asyxml>*/
   void setangles(real a0, real a1, real a2)
@@ -6478,7 +6478,7 @@
     coordsys Rc = cartesiansystem(c.C, (1, 0), (0, 1));
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1, 0, 1, 0, 0, -c.r^2);
+                                  1, 0, 1, 0, 0, -c.r^2);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6518,7 +6518,7 @@
     coordsys Rc = canonicalcartesiansystem(el);
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
+                                  1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6575,7 +6575,7 @@
   point[] op;
   coordsys R = coordsys(h);
   point A = intersectionpoint(l, h.A1), B = intersectionpoint(l, h.A2);
-  point M = midpoint(segment(A, B));
+  point M = 0.5*(A + B);
   bool tgt = Finite(M) ? M @ h : false;
   if(tgt) {
     if(M @ l) op.push(M);
@@ -6644,7 +6644,7 @@
     if(abs(b[4]) > e) {
       real D=b[4]^2;
       c=new real[] {(a[0]*b[4]^2+a[2]*b[3]^2+
-                       (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
+                     (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
                     -((-2*a[2]*b[3]+2*a[2]*a[3])*b[5]-a[3]*b[4]^2+
                       (2*a[2]*a[5])*b[3])/D,a[2]*(a[5]-b[5])^2/D+a[5]};
       x=quadraticroots(c[0],c[1],c[2]);

Modified: trunk/Master/texmf-dist/asymptote/graph.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -42,14 +42,14 @@
     return x-skip;
   }
   real Tinv(real x) {
-    if(x <= a) return x; 
-    return x+skip; 
+    if(x <= a) return x;
+    return x+skip;
   }
   return scaleT(T,Tinv,logarithmic=false,automin,automax);
 }
 
 // A "broken" logarithmic axis omitting the segment [a,b], where a and b are
-// automatically rounded to the nearest integral power of the base.  
+// automatically rounded to the nearest integral power of the base.
 scaleT BrokenLog(real a, real b, bool automin=false, bool automax=automin)
 {
   real A=round(Log.T(a));
@@ -92,7 +92,7 @@
         Linear(zautoscale,zautoscale));
 }
 
-struct scientific 
+struct scientific
 {
   int sign;
   real mantissa;
@@ -108,7 +108,7 @@
 }
 
 // Convert x to scientific notation
-scientific scientific(real x) 
+scientific scientific(real x)
 {
   scientific s;
   s.sign=sgn(x);
@@ -154,7 +154,7 @@
 
 real upscale(real b, real a)
 {
-  if(b <= 5) b=5; 
+  if(b <= 5) b=5;
   else if (b > 10 && a >= 0 && b <= 12) b=12;
   else if (b > 10 && (a >= 0 || 15 % -a == 0) && b <= 15) b=15;
   else b=ceil(b/10)*10;
@@ -182,7 +182,7 @@
     if(Min > 0) {Min=0; Max *= 2;}
     else {Min *= 2; Max=0;}
   }
-  
+
   int sign;
   if(Min < 0 && Max <= 0) {real temp=-Min; Min=-Max; Max=temp; sign=-1;}
   else sign=1;
@@ -203,7 +203,7 @@
 
   while((b-a)*10.0^exp > 10*(Max-Min))
     zoom();
-  
+
   real bsave=b;
   if(b-a > (a >= 0 ? 8 : 6)) {
     b=upscale(b,a);
@@ -211,11 +211,11 @@
       if(a <= 5) a=0; else a=floor(a/10)*10;
     } else a=-upscale(-a,-1);
   }
-  
+
   // Redo b in case the value of a has changed
   if(bsave-a > (a >= 0 ? 8 : 6))
     b=upscale(bsave,a);
-  
+
   if(sign == -1) {real temp=-a; a=-b; b=temp;}
   real Scale=10.0^exp;
   m.min=scale.T(a*Scale);
@@ -266,7 +266,7 @@
 
 ticklabel LogFormat=LogFormat(10);
 ticklabel DefaultLogFormat=DefaultLogFormat(10);
-  
+
 // The default direction specifier.
 pair zero(real) {return 0;}
 
@@ -275,7 +275,7 @@
   autoscaleT S;        // Autoscaling transformation.
   pair dir(real t);    // Absolute 2D tick direction.
   triple dir3(real t); // Absolute 3D tick direction.
-  real time(real v);   // Returns the time corresponding to the value v. 
+  real time(real v);   // Returns the time corresponding to the value v.
   ticklocate copy() {
     ticklocate T=new ticklocate;
     T.a=a;
@@ -289,7 +289,7 @@
 }
 
 autoscaleT defaultS;
-  
+
 typedef real valuetime(real);
 
 valuetime linear(scalefcn S=identity, real Min, real Max)
@@ -300,7 +300,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, pair dir(real)=zero) 
+                      real time(real)=null, pair dir(real)=zero)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -313,13 +313,13 @@
   locate.dir=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;       // tick location time
   pair Z;       // tick location in frame coordinates
   pair pathdir; // path direction in frame coordinates
   pair dir;     // tick direction in frame coordinates
-  
+
   void dir(transform T, path g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     pair Dir=locate.dir(t);
@@ -333,7 +333,7 @@
   }
 }
 
-pair ticklabelshift(pair align, pen p=currentpen) 
+pair ticklabelshift(pair align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -347,7 +347,7 @@
     locate2.calc(T,g2,locate,val);
     draw(f,locate1.Z--locate2.Z,p);
   } else
-    if(sign == 0) 
+    if(sign == 0)
       draw(f,locate1.Z-Size*locate1.dir--locate1.Z+Size*locate1.dir,p);
     else
       draw(f,locate1.Z--locate1.Z+Size*sign*locate1.dir,p);
@@ -388,10 +388,10 @@
     label(d,F.T*baseline(s,baselinetemplate),locate1.Z+shift,align,F.p,
           F.filltype);
   return locate1.pathdir;
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(frame f, transform T, Label L, path g, 
+void labelaxis(frame f, transform T, Label L, path g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   Label L0=L.copy();
@@ -403,7 +403,7 @@
     locateT locate1;
     locate1.dir(T,g,locate,t);
     L0.align(L0.align,unit(-sgn(dot(sign*locate1.dir,perp))*perp));
-  }                  
+  }
   pair align=L0.align.dir;
   if(L0.align.relative) align *= -perp;
   pair alignperp=dot(align,perp)*perp;
@@ -477,7 +477,7 @@
 
 // Check the tick coverage of a logarithmic axis.
 bool logaxiscoverage(int N, transform T, path g, ticklocate locate, pair side,
-                     int sign, real Size, Label F, ticklabel ticklabel, 
+                     int sign, real Size, Label F, ticklabel ticklabel,
                      real limit, int first, int last)
 {
   bool loop=cyclic(g);
@@ -525,7 +525,7 @@
   int n=0;
 
   bool Fixed=find(a >= 1e4-epsilon | (a > 0 & a <= 1e-4-epsilon)) < 0;
-  
+
   string Format=defaultformat(4,fixed=Fixed);
 
   if(Fixed && n < 4) {
@@ -576,13 +576,13 @@
   if(size == 0) size=ticksize;
   F=F.copy();
   F.p(p);
-    
+
   if(F.align.dir != 0) side=F.align.dir;
   else if(side == 0) side=((sign == 1) ? left : right);
-    
+
   bool ticklabels=false;
   path G=T*g;
-    
+
   if(!locate.S.scale.logarithmic) {
     real a=locate.S.Tinv(locate.a);
     real b=locate.S.Tinv(locate.b);
@@ -594,15 +594,15 @@
     if(a > b) {real temp=a; a=b; b=temp;}
 
     if(b-a < 100.0*epsilon*norm) b=a;
-      
+
     bool autotick=Step == 0 && N == 0;
-    
-    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ? 
+
+    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ?
       locate.S.Tinv(locate.S.tickMin) : a;
     real tickmax=finite(locate.S.tickMax) && (autotick || locate.S.automax) ?
       locate.S.Tinv(locate.S.tickMax) : b;
     if(tickmin > tickmax) {real temp=tickmin; tickmin=tickmax; tickmax=temp;}
-      
+
     real inStep=Step;
 
     bool calcStep=true;
@@ -630,7 +630,7 @@
                 // Try using 2 ticks (otherwise 1);
                 int div=divisor[d+1];
                 Step=quotient(div,2)*len/div;
-                calcStep=false; 
+                calcStep=false;
                 if(axiscoverage(2,T,g,locate,Step,side,sign,Size,F,ticklabel,
                                 norm,limit)) N=2;
                 else Step=len;
@@ -650,7 +650,7 @@
         }
       }
     }
-      
+
     if(inStep != 0 && !locate.S.automin) {
       tickmin=floor(tickmin/Step)*Step;
       len=tickmax-tickmin;
@@ -661,13 +661,13 @@
       if(N == 0) N=(int) (len/Step);
       else Step=len/N;
     }
-    
+
     if(n == 0) {
       if(step != 0) n=ceil(Step/step);
     } else step=Step/n;
-      
+
     b += epsilon*norm;
-      
+
     if(Size > 0) {
       for(int i=0; i <= N; ++i) {
         real val=tickmin+i*Step;
@@ -684,7 +684,7 @@
         }
       }
     }
-    
+
   } else { // Logarithmic
     string format=F.s;
     if(F.s == "%") F.s="";
@@ -691,15 +691,15 @@
 
     int base=round(locate.S.scale.Tinv(1));
 
-    if(ticklabel == null) 
+    if(ticklabel == null)
       ticklabel=format == "%" ? Format("") : DefaultLogFormat(base);
     real a=locate.S.postscale.Tinv(locate.a);
     real b=locate.S.postscale.Tinv(locate.b);
     if(a > b) {real temp=a; a=b; b=temp;}
-      
+
     int first=floor(a-epsilon);
     int last=ceil(b+epsilon);
-      
+
     if(N == 0) {
       N=1;
       while(N <= last-first) {
@@ -708,10 +708,10 @@
         ++N;
       }
     }
-      
+
     if(N <= 2 && n == 0) n=base;
     tickvalues.N=N;
-      
+
     if(N > 0) {
       for(int i=first-1; i <= last+1; ++i) {
         if(i >= a && i <= b)
@@ -725,7 +725,7 @@
         }
       }
     }
-  }     
+  }
   return tickvalues;
 }
 
@@ -732,7 +732,7 @@
 // Signature of routines that draw labelled paths with ticks and tick labels.
 typedef void ticks(frame, transform, Label, pair, path, path, pen,
                    arrowbar, margin, ticklocate, int[], bool opposite=false);
-                                          
+
 // Tick construction routine for a user-specified array of tick values.
 ticks Ticks(int sign, Label F="", ticklabel ticklabel=null,
             bool beginlabel=true, bool endlabel=true,
@@ -741,7 +741,7 @@
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
 {
-  return new void(frame f, transform t, Label L, pair side, path g, path g2, 
+  return new void(frame f, transform t, Label L, pair side, path g, path g2,
                   pen p, arrowbar arrow, margin margin, ticklocate locate,
                   int[] divisor, bool opposite) {
     // Use local copy of context variables:
@@ -749,12 +749,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -761,16 +761,16 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     if(F.align.dir != 0) side=F.align.dir;
     else if(side == 0) side=F.T*((sign == 1) ? left : right);
-    
+
     bool ticklabels=false;
     path G=t*g;
     path G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -781,11 +781,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -809,7 +809,7 @@
         drawtick(f,t,g,g2,locate,val,size,sign,ptick,extend);
     }
     endgroup(f);
-    
+
     if(N == 0) N=1;
     if(Size > 0 && !opposite) {
       for(int i=(beginlabel ? 0 : 1);
@@ -821,7 +821,7 @@
         }
       }
     }
-    if(L.s != "" && !opposite) 
+    if(L.s != "" && !opposite)
       labelaxis(f,t,L,G,locate,sign,ticklabels);
   };
 }
@@ -832,7 +832,7 @@
 
 // Tickmodifier that removes all ticks in the intervals [a[i],b[i]].
 tickmodifier OmitTickIntervals(real[] a, real[] b) {
-  return new tickvalues(tickvalues v) { 
+  return new tickvalues(tickvalues v) {
     if(a.length != b.length) abort(differentlengths);
     void omit(real[] A) {
       if(A.length != 0) {
@@ -939,8 +939,8 @@
                begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks LeftTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks LeftTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -949,8 +949,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks RightTicks(Label format="", ticklabel ticklabel=null, 
-                 bool beginlabel=true, bool endlabel=true, 
+ticks RightTicks(Label format="", ticklabel ticklabel=null,
+                 bool beginlabel=true, bool endlabel=true,
                  real[] Ticks, real[] ticks=new real[],
                  real Size=0, real size=0, bool extend=false,
                  pen pTick=nullpen, pen ptick=nullpen)
@@ -959,8 +959,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks Ticks(Label format="", ticklabel ticklabel=null, 
-            bool beginlabel=true, bool endlabel=true, 
+ticks Ticks(Label format="", ticklabel ticklabel=null,
+            bool beginlabel=true, bool endlabel=true,
             real[] Ticks, real[] ticks=new real[],
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
@@ -978,18 +978,18 @@
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin));
 }
-  
+
 pair tickMax(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax));
 }
-                                               
+
 int Min=-1;
 int Value=0;
 int Max=1;
 int Both=2;
 
-// Structure used to communicate axis and autoscale settings to tick routines. 
+// Structure used to communicate axis and autoscale settings to tick routines.
 struct axisT {
   int type;        // -1 = min, 0 = given value, 1 = max, 2 = min/max
   int type2;       // for 3D axis
@@ -1062,7 +1062,7 @@
   };
 }
 
-axis LeftRight(bool extend=false) 
+axis LeftRight(bool extend=false)
 {
   return new void(picture pic, axisT axis) {
     axis.type=Both;
@@ -1134,7 +1134,7 @@
 void axis(picture pic=currentpicture, Label L="", path g, path g2=nullpath,
           pen p=currentpen, ticks ticks, ticklocate locate,
           arrowbar arrow=None, margin margin=NoMargin,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -1146,9 +1146,9 @@
       ticks(d,t,L,0,g,g2,p,arrow,margin,locate,divisor,opposite);
       (above ? add : prepend)(f,t*T*inverse(t)*d);
     });
-  
+
   pic.addPath(g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -1195,7 +1195,7 @@
         pic.scale.x.tickMax=mx.max;
         divisor=mx.divisor;
       }
-      
+
       real fuzz=epsilon*max(abs(a.x),abs(b.x));
       a -= (fuzz,0);
       b += (fuzz,0);
@@ -1211,8 +1211,8 @@
       y2=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
       y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y);
-    } 
-    else if(type == Min) 
+    }
+    else if(type == Min)
       y=pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y;
     else if(type == Max)
       y=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
@@ -1229,7 +1229,7 @@
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
@@ -1299,13 +1299,13 @@
             ticklocate(a.y,b.y,pic.scale.y),divisor,opposite);
       (above ? add : prepend)(f,t*T*tinv*d);
     });
-  
+
   void bounds() {
     if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x);
-    } else if(type == Min) 
+    } else if(type == Min)
       x=pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x;
     else if(type == Max)
       x=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
@@ -1317,17 +1317,17 @@
     pair b=(x,Ymax);
     pair a2=(x2,Ymin);
     pair b2=(x2,Ymax);
-  
+
     if(finite(a)) {
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
     }
-  
+
     if(finite(a) && finite(b)) {
       frame d;
       ticks(d,pic.scaling(warn=false),L,side,
@@ -1361,32 +1361,32 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.x.automin=min <= -infinity;
   pic.scale.x.automax=max >= infinity;
-  
+
   bounds mx;
   if(pic.scale.x.automin() || pic.scale.x.automax())
     mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
-  
+
   if(pic.scale.x.automin) {
     if(pic.scale.x.automin()) pic.userMinx(mx.min);
   } else pic.userMinx(min(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(pic.scale.x.automax) {
     if(pic.scale.x.automax()) pic.userMaxx(mx.max);
   } else pic.userMaxx(max(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.xclip(userMin.x,userMax.x);
     pic.clip(userMin, userMax,
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
-                     ((t*userMax).x,(max(Tinvf)).y)));
-      });
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
+                            ((t*userMax).x,(max(Tinvf)).y)));
+             });
   }
 }
 
@@ -1395,37 +1395,37 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.y.automin=min <= -infinity;
   pic.scale.y.automax=max >= infinity;
-  
+
   bounds my;
   if(pic.scale.y.automin() || pic.scale.y.automax())
     my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
-  
+
   if(pic.scale.y.automin) {
     if(pic.scale.y.automin()) pic.userMiny(my.min);
   } else pic.userMiny(min(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(pic.scale.y.automax) {
     if(pic.scale.y.automax()) pic.userMaxy(my.max);
   } else pic.userMaxy(max(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.yclip(userMin.y,userMax.y);
-    pic.clip(userMin, userMax, 
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
-                     ((max(Tinvf)).x,(t*userMax).y)));
-      });
+    pic.clip(userMin, userMax,
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
+                            ((max(Tinvf)).x,(t*userMax).y)));
+             });
   }
 }
 
 // Crop a picture to the current user-space picture limits.
-void crop(picture pic=currentpicture) 
+void crop(picture pic=currentpicture)
 {
   xlimits(pic,false);
   ylimits(pic,false);
@@ -1441,7 +1441,7 @@
   if(crop && pic.userSetx() && pic.userSety())
     clip(pic,box(pic.userMin(),pic.userMax()));
 }
-  
+
 // Internal routine to autoscale the user limits of a picture.
 void autoscale(picture pic=currentpicture, axis axis)
 {
@@ -1448,7 +1448,7 @@
   if(!pic.scale.set) {
     bounds mx,my;
     pic.scale.set=true;
-    
+
     if(pic.userSetx()) {
       mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
       if(pic.scale.x.scale.logarithmic &&
@@ -1459,7 +1459,7 @@
           pic.userMaxx2(ceil(pic.userMax().x));
       }
     } else {mx.min=mx.max=0; pic.scale.set=false;}
-    
+
     if(pic.userSety()) {
       my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
       if(pic.scale.y.scale.logarithmic &&
@@ -1470,7 +1470,7 @@
           pic.userMaxy2(ceil(pic.userMax().y));
       }
     } else {my.min=my.max=0; pic.scale.set=false;}
-    
+
     pic.scale.x.tickMin=mx.min;
     pic.scale.x.tickMax=mx.max;
     pic.scale.y.tickMin=my.min;
@@ -1487,7 +1487,7 @@
            bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -1495,20 +1495,20 @@
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -1517,9 +1517,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -1526,7 +1526,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -1536,7 +1536,7 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above,true);
@@ -1552,25 +1552,25 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1579,9 +1579,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1588,8 +1588,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1599,14 +1599,14 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   if(autorotate && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
-  
+
   yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above,true);
@@ -1627,7 +1627,7 @@
 void xequals(picture pic=currentpicture, Label L="", real x,
              bool extend=false, real ymin=-infinity, real ymax=infinity,
              pen p=currentpen, ticks ticks=NoTicks,
-             arrowbar arrow=None, margin margin=NoMargin, bool above=true) 
+             arrowbar arrow=None, margin margin=NoMargin, bool above=true)
 {
   yaxis(pic,L,XEquals(x,extend),ymin,ymax,p,ticks,arrow,margin,above);
 }
@@ -1682,7 +1682,7 @@
 }
 
 void ytick(picture pic=currentpicture, explicit pair z, pair dir=E,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,z,dir,size,p);
 }
@@ -1799,7 +1799,7 @@
   bounds a=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
   real bmin=pic.scale.x.automin() ? a.min : pic.userMin().x;
   real bmax=pic.scale.x.automax() ? a.max : pic.userMax().x;
-  
+
   real denom=bmax-bmin;
   if(denom != 0) {
     pic.erase();
@@ -1849,7 +1849,7 @@
 
 typedef guide graph(pair f(real), real, real, int);
 typedef guide[] multigraph(pair f(real), real, real, int);
-                       
+
 graph graph(interpolate join)
 {
   return new guide(pair f(real), real a, real b, int n) {
@@ -2055,7 +2055,7 @@
 }
 
 // Connect points in z into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path[] segment(pair[] z, bool[] cond, interpolate join=operator --)
 {
   checkconditionlength(cond.length,z.length);
@@ -2102,7 +2102,7 @@
   if(dmy != dpy) draw(pic,Scale(pic,z+(0,dmy))--Scale(pic,z+(0,dpy)),p,
                       Bars(size));
 }
-  
+
 void errorbars(picture pic=currentpicture, pair[] z, pair[] dp, pair[] dm={},
                bool[] cond={}, pen p=currentpen, real size=0)
 {
@@ -2157,13 +2157,13 @@
     real x=(n == 1) ? 0.5 : i/(n-1);
     if(truesize)
       draw(relpoint(g,x),pic,vector(x),p,arrow);
-    else 
+    else
       draw(pic,shift(relpoint(g,x))*vector(x),p,arrow,margin);
   }
   return pic;
 }
 
-real maxlength(pair a, pair b, int nx, int ny) 
+real maxlength(pair a, pair b, int nx, int ny)
 {
   return min((b.x-a.x)/nx,(b.y-a.y)/ny);
 }

Modified: trunk/Master/texmf-dist/asymptote/graph3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,7 +9,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, direction3 dir) 
+                      real time(real)=null, direction3 dir)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -23,13 +23,13 @@
   locate.dir3=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;         // tick location time
   triple V;       // tick location in frame coordinates
   triple pathdir; // path direction in frame coordinates
   triple dir;     // tick direction in frame coordinates
-  
+
   void dir(transform3 T, path3 g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     triple Dir=locate.dir3(t);
@@ -60,7 +60,7 @@
   draw(pic,G,p,name="tick");
 }
 
-triple ticklabelshift(triple align, pen p=currentpen) 
+triple ticklabelshift(triple align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -100,10 +100,10 @@
   if(s != "")
     label(pic,F.defaulttransform3 ? baseline(s,baselinetemplate) : F.T3*s,v,
           align,F.p);
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(picture pic, transform3 T, Label L, path3 g, 
+void labelaxis(picture pic, transform3 T, Label L, path3 g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   triple m=pic.min(identity4);
@@ -118,7 +118,7 @@
       picture F;
       if(L.align.dir3 == O)
         align=unit(invert(L.align.dir,v,P))*abs(L.align.dir);
-      
+
       if(ticklabels && locate != null && piecewisestraight(g)) {
         locateT locate1;
         locate1.dir(T,g,locate,t);
@@ -171,12 +171,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -183,13 +183,13 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     bool ticklabels=false;
     path3 G=t*g;
     path3 G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -200,11 +200,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -324,8 +324,8 @@
                 begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InTicks(Label format="", ticklabel ticklabel=null, 
-               bool beginlabel=true, bool endlabel=true, 
+ticks3 InTicks(Label format="", ticklabel ticklabel=null,
+               bool beginlabel=true, bool endlabel=true,
                real[] Ticks, real[] ticks=new real[],
                real Size=0, real size=0, bool extend=false,
                pen pTick=nullpen, pen ptick=nullpen)
@@ -334,8 +334,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 OutTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks3 OutTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -344,8 +344,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InOutTicks(Label format="", ticklabel ticklabel=null, 
-                  bool beginlabel=true, bool endlabel=true, 
+ticks3 InOutTicks(Label format="", ticklabel ticklabel=null,
+                  bool beginlabel=true, bool endlabel=true,
                   real[] Ticks, real[] ticks=new real[],
                   real Size=0, real size=0, bool extend=false,
                   pen pTick=nullpen, pen ptick=nullpen)
@@ -362,15 +362,15 @@
 triple tickMin3(picture pic)
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin,
-                                  pic.scale.z.tickMin));
+                                 pic.scale.z.tickMin));
 }
-  
+
 triple tickMax3(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax,
-                                  pic.scale.z.tickMax));
+                                 pic.scale.z.tickMax));
 }
-                                               
+
 axis Bounds(int type=Both, int type2=Both, triple align=O, bool extend=false)
 {
   return new void(picture pic, axisT axis) {
@@ -470,7 +470,7 @@
 void axis(picture pic=currentpicture, Label L="", path3 g, path3 g2=nullpath3,
           pen p=currentpen, ticks3 ticks, ticklocate locate,
           arrowbar3 arrow=None, margin3 margin=NoMargin3,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -477,15 +477,15 @@
   if(L.defaultposition) L.position(t);
   divisor=copy(divisor);
   locate=locate.copy();
-  
+
   pic.add(new void (picture f, transform3 t, transform3 T, triple, triple) {
       picture d;
       ticks(d,t,L,g,g2,p,arrow,margin,locate,divisor,opposite,true);
       add(f,t*T*inverse(t)*d);
     },above=above);
-  
+
   addPath(pic,g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -552,7 +552,7 @@
               y0=y2;
               z0=z;
             }
-            
+
             triple a2=xmin == -infinity ? tinv*(lb.x-min3(p).x,ytrans(t,y0),
                                                 ztrans(t,z0)) : (xmin,y0,z0);
             triple b2=xmax == infinity ? tinv*(rt.x-max3(p).x,ytrans(t,y0),
@@ -564,7 +564,7 @@
               pic.scale.x.tickMax=mx.max;
               divisor=mx.divisor;
             }
-      
+
             triple fuzz=X*epsilon*max(abs(a.x),abs(b.x));
             a -= fuzz;
             b += fuzz;
@@ -584,7 +584,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite ? y2 : 
+      y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -594,7 +594,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -610,7 +610,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -650,7 +650,7 @@
   pic.scale.x.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a y axis at a particular value.
 void yaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real ymin=-infinity, real ymax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -685,12 +685,12 @@
               x0=x2;
               z0=z;
             }
-            
+
             triple a2=ymin == -infinity ? tinv*(xtrans(t,x0),lb.y-min3(p).y,
                                                 ztrans(t,z0)) : (x0,ymin,z0);
             triple b2=ymax == infinity ? tinv*(xtrans(t,x0),rt.y-max3(p).y,
                                                ztrans(t,z0)) : (x0,ymax,z0);
- 
+
             if(ymin == -infinity || ymax == infinity) {
               bounds my=autoscale(a.y,b.y,pic.scale.y.scale);
               pic.scale.y.tickMin=my.min;
@@ -697,7 +697,7 @@
               pic.scale.y.tickMax=my.max;
               divisor=my.divisor;
             }
-      
+
             triple fuzz=Y*epsilon*max(abs(a.y),abs(b.y));
             a -= fuzz;
             b += fuzz;
@@ -717,7 +717,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -727,7 +727,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -743,7 +743,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -783,7 +783,7 @@
   pic.scale.y.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a z axis at a particular value.
 void zaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real zmin=-infinity, real zmax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -818,7 +818,7 @@
               x0=x2;
               y0=y;
             }
-            
+
             triple a2=zmin == -infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
                                                 lb.z-min3(p).z) : (x0,y0,zmin);
             triple b2=zmax == infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
@@ -830,7 +830,7 @@
               pic.scale.z.tickMax=mz.max;
               divisor=mz.divisor;
             }
-      
+
             triple fuzz=Z*epsilon*max(abs(a.z),abs(b.z));
             a -= fuzz;
             b += fuzz;
@@ -850,7 +850,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -860,7 +860,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type2 == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite2 ? y2 : 
+      y=opposite2 ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -876,7 +876,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -934,7 +934,7 @@
           pic.userMaxz3(ceil(pic.userMax().z));
       }
     } else {mz.min=mz.max=0; pic.scale.set=false;}
-    
+
     pic.scale.z.tickMin=mz.min;
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
@@ -948,7 +948,7 @@
             arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -956,19 +956,19 @@
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks3) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -977,9 +977,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -986,7 +986,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -998,7 +998,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1025,24 +1025,24 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks3) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1051,9 +1051,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1060,8 +1060,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1073,7 +1073,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1100,24 +1100,24 @@
 
   if(pic.scale.z.automin && zmin > -infinity) pic.scale.z.automin=false;
   if(pic.scale.z.automax && zmax < infinity) pic.scale.z.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(zmin != -infinity) {
     zmin=pic.scale.z.T(zmin);
     newticks=true;
   }
-  
+
   if(zmax != infinity) {
     zmax=pic.scale.z.T(zmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetz() && ticks != NoTicks3) {
     if(zmin == -infinity) zmin=pic.userMin().z;
     if(zmax == infinity) zmax=pic.userMax().z;
@@ -1126,9 +1126,9 @@
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(zmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       zmin=pic.scale.z.automin() ? pic.scale.z.tickMin :
@@ -1135,7 +1135,7 @@
         max(pic.scale.z.tickMin,pic.userMin().z);
     else zmin=pic.userMin().z;
   }
-  
+
   if(zmax == infinity && !axis.extend) {
     if(pic.scale.set)
       zmax=pic.scale.z.automax() ? pic.scale.z.tickMax :
@@ -1147,7 +1147,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.vector();
@@ -1169,18 +1169,18 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.z.automin=min <= -infinity;
   pic.scale.z.automax=max >= infinity;
-  
+
   bounds mz;
   if(pic.scale.z.automin() || pic.scale.z.automax())
     mz=autoscale(pic.userMin().z,pic.userMax().z,pic.scale.z.scale);
-  
+
   if(pic.scale.z.automin) {
     if(pic.scale.z.automin()) pic.userMinz(mz.min);
   } else pic.userMinz(min(pic.scale.z.T(min),pic.scale.z.T(max)));
-  
+
   if(pic.scale.z.automax) {
     if(pic.scale.z.automax()) pic.userMaxz(mz.max);
   } else pic.userMaxz(max(pic.scale.z.T(min),pic.scale.z.T(max)));
@@ -1193,10 +1193,10 @@
   ylimits(pic,min.y,max.y);
   zlimits(pic,min.z,max.z);
 }
-  
+
 // Draw x, y and z axes.
 void axes3(picture pic=currentpicture,
-           Label xlabel="", Label ylabel="", Label zlabel="", 
+           Label xlabel="", Label ylabel="", Label zlabel="",
            bool extend=false,
            triple min=(-infinity,-infinity,-infinity),
            triple max=(infinity,infinity,infinity),
@@ -1212,11 +1212,50 @@
   return (pic.scale.x.T(v.x),pic.scale.y.T(v.y),pic.scale.z.T(v.z));
 }
 
+triple[][] Scale(picture pic=currentpicture, triple[][] P)
+{
+  triple[][] Q=new triple[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    triple[] Pi=P[i];
+    Q[i]=new triple[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=Scale(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real ScaleX(picture pic=currentpicture, real x)
+{
+  return pic.scale.x.T(x);
+}
+
+real ScaleY(picture pic=currentpicture, real y)
+{
+  return pic.scale.y.T(y);
+}
+
 real ScaleZ(picture pic=currentpicture, real z)
 {
   return pic.scale.z.T(z);
 }
 
+real[][] ScaleZ(picture pic=currentpicture, real[][] P)
+{
+  real[][] Q=new real[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    real[] Pi=P[i];
+    Q[i]=new real[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=ScaleZ(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n)
+{
+  return map(Tinv,uniform(T(a),T(b),n));
+}
+
 // Draw a tick of length size at triple v in direction dir using pen p.
 void tick(picture pic=currentpicture, triple v, triple dir, real size=Ticksize,
           pen p=currentpen)
@@ -1240,11 +1279,11 @@
             real size=Ticksize, pen p=currentpen)
 {
   tick(pic,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-             pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+            pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,v,dir,size,p);
 }
@@ -1257,7 +1296,7 @@
 }
 
 void ztick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,v,dir,size,p);
 }
@@ -1294,7 +1333,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1307,7 +1346,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,y,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
 }
 
 void ztick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1320,7 +1359,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
 }
 
 private void label(picture pic, Label L, triple v, real x, align align,
@@ -1416,7 +1455,7 @@
 
 guide3 Straight(... guide3[])=operator --;
 guide3 Spline(... guide3[])=operator ..;
-                       
+
 guide3 graph(picture pic=currentpicture, real x(real), real y(real),
              real z(real), real a, real b, int n=ngraph,
              interpolate3 join=operator --)
@@ -1519,12 +1558,12 @@
 
 guide3 graph(triple F(pair), path p, int n=1, interpolate3 join=operator --)
 {
-  return graph(new triple(path p, real position) 
+  return graph(new triple(path p, real position)
                {return F(point(p,position));},p,n,join);
 }
 
 guide3 graph(picture pic=currentpicture, real f(pair), path p, int n=1,
-             interpolate3 join=operator --) 
+             interpolate3 join=operator --)
 {
   return graph(new triple(pair z) {return Scale(pic,(z.x,z.y,f(z)));},p,n,
                join);
@@ -1538,7 +1577,7 @@
 }
 
 // Connect points in v into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path3[] segment(triple[] v, bool[] cond, interpolate3 join=operator --)
 {
   checkconditionlength(cond.length,v.length);
@@ -1596,13 +1635,13 @@
 }
 
 // return the surface described by a matrix f
-surface surface(triple[][] f, bool[][] cond={})
+surface surface(picture pic=currentpicture, triple[][] f, bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
-  
+
   int nx=f.length-1;
   int ny=nx > 0 ? f[0].length-1 : 0;
-  
+
   bool all=cond.length == 0;
 
   int count;
@@ -1632,7 +1671,11 @@
     int[] indexi=s.index[i];
     for(int j=0; j < ny; ++j) {
       if(all || (condi[j] && condi[j+1] && condp[j] && condp[j+1]))
-        s.s[++k]=patch(new triple[] {fi[j],fp[j],fp[j+1],fi[j+1]});
+        s.s[++k]=patch(new triple[] {
+            Scale(pic,fi[j]),
+              Scale(pic,fp[j]),
+              Scale(pic,fp[j+1]),
+              Scale(pic,fi[j+1])});
       indexi[j]=k;
     }
   }
@@ -1708,14 +1751,15 @@
         real zppmppp=zpp-hx*pp[jp];
         real zijqij=zij+hy*qi[j];
         real zpjqpj=zpj+hy*qp[j];
-        
+
         s.s[k]=patch(new triple[][] {
-          {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
-          {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
-           (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
-          {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
-           (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
-          {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},copy=false);
+            {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
+              {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
+                  (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
+                {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
+                    (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
+                  {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},
+          copy=false);
         indexi[j]=k;
         ++k;
       }
@@ -1787,11 +1831,11 @@
         real zpjqpj=zpj+hy*qp[j];
 
         s[k]=new real[][] {{zij,zijqij,zip-qip,zip},
-                           {zij+pij,zijqij+pij+hxy*ri[j],
-                            zippip-qip-hxy*ri[jp],zippip},
-                           {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
-                            zppmppp-qpp+hxy*rp[jp],zppmppp},
-                           {zpj,zpjqpj,zpp-qpp,zpp}};
+                                        {zij+pij,zijqij+pij+hxy*ri[j],
+                                            zippip-qip-hxy*ri[jp],zippip},
+                                          {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
+                                              zppmppp-qpp+hxy*rp[jp],zppmppp},
+                                            {zpj,zpjqpj,zpp-qpp,zpp}};
         ++k;
       }
     }
@@ -1831,10 +1875,15 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, real[] x, real[] y,
-                splinetype xsplinetype=null, splinetype ysplinetype=xsplinetype,
+surface surface(picture pic=currentpicture, real[][] f, real[] x, real[] y,
+                splinetype xsplinetype=null,
+                splinetype ysplinetype=xsplinetype,
                 bool[][] cond={})
 {
+  real[][] f=ScaleZ(pic,f);
+  real[] x=map(pic.scale.x.T,x);
+  real[] y=map(pic.scale.y.T,y);
+
   real epsilon=sqrtEpsilon*norm(y);
   if(xsplinetype == null)
     xsplinetype=(abs(x[0]-x[x.length-1]) <= epsilon) ? periodic : notaknot;
@@ -1863,8 +1912,9 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, pair a, pair b, splinetype xsplinetype,
-                splinetype ysplinetype=xsplinetype, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1873,13 +1923,14 @@
 
   if(nx == 0 || ny == 0) return nullsurface;
 
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
-  return surface(f,x,y,xsplinetype,ysplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
+  return surface(pic,f,x,y,xsplinetype,ysplinetype,cond);
 }
 
 // return the surface described by a real matrix f, interpolated linearly.
-surface surface(real[][] f, pair a, pair b, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1891,22 +1942,25 @@
   bool all=cond.length == 0;
 
   triple[][] v=new triple[nx+1][ny+1];
+
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nx; ++i) {
-    real x=interp(a.x,b.x,i/nx);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i/nx));
     bool[] condi=all ? null : cond[i];
     triple[] vi=v[i];
     real[] fi=f[i];
     for(int j=0; j <= ny; ++j)
       if(all || condi[j])
-        vi[j]=(x,interp(a.y,b.y,j/ny),fi[j]);
+        vi[j]=(x,pic.scale.y.Tinv(interp(a.y,b.y,j/ny)),fi[j]);
   }
-  return surface(v,cond);
+  return surface(pic,v,cond);
 }
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated linearly.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu, bool cond(pair z)=null)
 {
   if(nu <= 0 || nv <= 0) return nullsurface;
 
@@ -1921,23 +1975,25 @@
 
   triple[][] v=new triple[nu+1][nv+1];
 
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nu; ++i) {
-    real x=interp(a.x,b.x,i*du);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i*du));
     bool[] activei=all ? null : active[i];
     triple[] vi=v[i];
     for(int j=0; j <= nv; ++j) {
-      pair z=(x,interp(a.y,b.y,j*dv));
+      pair z=(x,pic.scale.y.Tinv(interp(a.y,b.y,j*dv)));
       if(all || (activei[j]=cond(z))) vi[j]=f(z);
     }
   }
-  return surface(v,active);
+  return surface(pic,v,active);
 }
-  
+
 // return the surface described by a parametric function f evaluated at u and v
 // and interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), real[] u, real[] v,
-                splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z),
+                real[] u, real[] v, splinetype[] usplinetype,
+                splinetype[] vsplinetype=Spline, bool cond(pair z)=null)
 {
   int nu=u.length-1;
   int nv=v.length-1;
@@ -1960,7 +2016,7 @@
     for(int j=0; j <= nv; ++j) {
       pair z=(ui,v[j]);
       if(!all) activei[j]=cond(z);
-      triple f=f(z);
+      triple f=Scale(pic,f(z));
       fxi[j]=f.x;
       fyi[j]=f.y;
       fzi[j]=f.z;
@@ -2020,27 +2076,30 @@
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu,
                 splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
                 bool cond(pair z)=null)
 {
-  return surface(f,uniform(a.x,b.x,nu),uniform(a.y,b.y,nv),
-                 usplinetype,vsplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nu);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,nv);
+  return surface(pic,f,x,y,usplinetype,vsplinetype,cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated linearly.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, bool cond(pair z)=null)
 {
-  return surface(new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,cond);
+  return surface(pic,new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,
+                 cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated with xsplinetype and ysplinetype.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, splinetype xsplinetype,
+                splinetype ysplinetype=xsplinetype, bool cond(pair z)=null)
 {
   bool[][] active;
   bool all=cond == null;
@@ -2052,8 +2111,8 @@
   pair dz=(dx,dy);
 
   real[][] F=new real[nx+1][ny+1];
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
   for(int i=0; i <= nx; ++i) {
     bool[] activei=all ? null : active[i];
     real[] Fi=F[i];
@@ -2064,7 +2123,7 @@
       if(!all) activei[j]=cond(z);
     }
   }
-  return surface(F,x,y,xsplinetype,ysplinetype,active);
+  return surface(pic,F,x,y,xsplinetype,ysplinetype,active);
 }
 
 guide3[][] lift(real f(real x, real y), guide[][] g,
@@ -2128,7 +2187,7 @@
        render,interaction);
 }
 
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv) 
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv)
 {
   return min(abs(f((b.x,a.y))-f(a))/nu,abs(f((a.x,b.y))-f(a))/nv);
 }

Modified: trunk/Master/texmf-dist/asymptote/graph_splinetype.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/graph_splinetype.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/graph_splinetype.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -13,7 +13,7 @@
     abort(text+": "+string(x)+" != "+string(y));
 }
 
-void checkincreasing(real[] x) 
+void checkincreasing(real[] x)
 {
   if(!increasing(x,true))
     abort("strictly increasing array expected");
@@ -114,7 +114,7 @@
 // Standard cubic spline interpolation with the natural condition
 // s''(a)=s''(b)=0.
 // if n=2, linear interpolation is returned
-// Don't use the natural type unless the underlying function 
+// Don't use the natural type unless the underlying function
 // has zero second end points derivatives.
 real[] natural(real[] x, real[] y)
 {
@@ -186,25 +186,25 @@
 
 // Piecewise Cubic Hermite Interpolating Polynomial (PCHIP)
 // Modified MATLAB code
-// [1] Fritsch, F. N. and R. E. Carlson, 
-//      "Monotone Piecewise Cubic Interpolation," 
+// [1] Fritsch, F. N. and R. E. Carlson,
+//      "Monotone Piecewise Cubic Interpolation,"
 //      SIAM J. Numerical Analysis, Vol. 17, 1980, pp.238-246.
-// [2] Kahaner, David, Cleve Moler, Stephen Nash, 
+// [2] Kahaner, David, Cleve Moler, Stephen Nash,
 //      Numerical Methods and Software, Prentice Hall, 1988.
-real[] monotonic(real[] x, real[] y) 
+real[] monotonic(real[] x, real[] y)
 {
-  int n=x.length; 
+  int n=x.length;
   checklengths(n,y.length);
   checkincreasing(x);
-  real[] d=new real[n]; 
+  real[] d=new real[n];
   if(n > 2) {
     real[] h=new real[n-1];
     real[] del=new real[n-1];
     for(int i=0; i < n-1; ++i) {
-      h[i]=x[i+1]-x[i]; 
-      del[i]=(y[i+1]-y[i])/h[i]; 
-    } 
-    int j=0; 
+      h[i]=x[i+1]-x[i];
+      del[i]=(y[i+1]-y[i])/h[i];
+    }
+    int j=0;
     int k[]=new int[];
     for(int i=0; i < n-2; ++i)
       if((sgn(del[i])*sgn(del[i+1])) > 0) {k[j]=i; j=j+1;}
@@ -220,10 +220,10 @@
       w2[i]=(h[k[i]+1]+hs[i])/(3*hs[i]);
       dmax[i]=max(abs(del[k[i]]),abs(del[k[i]+1]));
       dmin[i]=min(abs(del[k[i]]),abs(del[k[i]+1]));
-    } 
+    }
     for(int i=0; i < n; ++i) d[i]=0;
     for(int i=0; i < j; ++i)
-      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i])); 
+      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i]));
     d[0]=((2*h[0]+h[1])*del[0]-h[0]*del[1])/(h[0]+h[1]);
     if(sgn(d[0]) != sgn(del[0])) {d[0]=0;}
     else if((sgn(del[0]) != sgn(del[1])) && (abs(d[0]) > abs(3*del[0])))
@@ -238,7 +238,7 @@
     d[0]=d[1]=(y[1]-y[0])/(x[1]-x[0]);
   } else abort(morepoints);
   return d;
-} 
+}
 
 // Return standard cubic spline interpolation as a guide
 guide hermite(real[] x, real[] y, splinetype splinetype=null)

Modified: trunk/Master/texmf-dist/asymptote/grid3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/grid3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/grid3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -259,7 +259,7 @@
                        N,n,Step,step,begin,end,
                        Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -280,7 +280,7 @@
       otg.ticks=Ticks3(-1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -301,7 +301,7 @@
       otg.ticks=Ticks3(1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };

Modified: trunk/Master/texmf-dist/asymptote/interpolate.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/interpolate.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/interpolate.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,8 +7,8 @@
 // and values y_0,...,y_n in the array y,
 
 // hdiffdiv(x,y,dyp) computes Newton's Divided Difference for
-// Hermite interpolation where dyp={dy_0,...,dy_n}. 
-// 
+// Hermite interpolation where dyp={dy_0,...,dy_n}.
+//
 // fhorner(x,coeff) uses Horner's rule to compute the polynomial
 // a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)..(x-x_{n-1}),
 // where coeff={a_0,a_1,...,a_n}.
@@ -54,7 +54,7 @@
     return s;
   };
 }
-      
+
 // Newton's Divided Difference method: n(n-1)/2 divisions, n(n-1) additions.
 horner diffdiv(real[] x, real[] y)
 {
@@ -136,5 +136,5 @@
   real[] dy=splinetype(x,y);
   return new real(real t) {
     return pwhermite(x,y,dy)(t);
-  }; 
+  };
 }

Modified: trunk/Master/texmf-dist/asymptote/labelpath3.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/labelpath3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/labelpath3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -21,7 +21,7 @@
 }
 
 // Modification of the bishop frame construction contained in
-// space_tube.asy (from Philippe Ivaldi's modules). 
+// space_tube.asy (from Philippe Ivaldi's modules).
 // For noncyclic path3s only
 triple[] nextframe(path3 p, real reltimestart, triple[] start, real
                    reltimeend, int subdiv=20)
@@ -40,7 +40,7 @@
   }
   return bf[subdiv];
 }
-  
+
 surface labelpath(string s, path3 p, real angle=90, triple optional=O)
 {
   real Cos=Cos(angle);
@@ -48,10 +48,10 @@
   path[] text=texpath(Label(s,(0,0),Align,basealign));
   text=scale(1/(max(text).x-min(text).x))*text;
   path[][] decompose=containmentTree(text);
-        
+
   real[][] xpos=new real[decompose.length][2];
   surface sf;
-  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis   
+  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis
     xpos[i][1]=i;
     real pos0=0.5(max(decompose[i]).x+min(decompose[i]).x);
     xpos[i][0]=pos0;

Deleted: trunk/Master/texmf-dist/asymptote/latin1.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/latin1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/latin1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +0,0 @@
-usepackage("fontenc","T1");
-usepackage("inputenc","latin1");

Modified: trunk/Master/texmf-dist/asymptote/lmfit.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/lmfit.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/lmfit.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -58,31 +58,31 @@
 private real LM_USERTOL = 30 * LM_MACHEP;
 
 restricted string lm_infmsg[] = {
-  "improper input parameters",
-  "the relative error in the sum of squares is at most tol",
-  "the relative error between x and the solution is at most tol",
-  "both errors are at most tol",
-  "fvec is orthogonal to the columns of the jacobian to machine precision",
-  "number of calls to fcn has reached or exceeded maxcall*(n+1)",
-  "ftol is too small: no further reduction in the sum of squares is possible",
-  "xtol too small: no further improvement in approximate solution x possible",
-  "gtol too small: no further improvement in approximate solution x possible",
-  "not enough memory",
-  "break requested within function evaluation"
+                                 "improper input parameters",
+                                 "the relative error in the sum of squares is at most tol",
+                                 "the relative error between x and the solution is at most tol",
+                                 "both errors are at most tol",
+                                 "fvec is orthogonal to the columns of the jacobian to machine precision",
+                                 "number of calls to fcn has reached or exceeded maxcall*(n+1)",
+                                 "ftol is too small: no further reduction in the sum of squares is possible",
+                                 "xtol too small: no further improvement in approximate solution x possible",
+                                 "gtol too small: no further improvement in approximate solution x possible",
+                                 "not enough memory",
+                                 "break requested within function evaluation"
 };
 
 restricted string lm_shortmsg[] = {
-  "invalid input",
-  "success (f)",
-  "success (p)",
-  "success (f,p)",
-  "degenerate",
-  "call limit",
-  "failed (f)",
-  "failed (p)",
-  "failed (o)",
-  "no memory",
-  "user break"
+                                   "invalid input",
+                                   "success (f)",
+                                   "success (p)",
+                                   "success (f,p)",
+                                   "degenerate",
+                                   "call limit",
+                                   "failed (f)",
+                                   "failed (p)",
+                                   "failed (o)",
+                                   "no memory",
+                                   "user break"
 };
 
 
@@ -91,7 +91,7 @@
   real[] user_t;
   real[] user_y;
   real[] user_w;
-  real user_func(real user_t_point, real[] par);  
+  real user_func(real user_t_point, real[] par);
 };
 
 
@@ -99,7 +99,7 @@
 // the int and real types
 struct lm_int_type {
   int val;
-  
+
   void operator init(int val) {
     this.val = val;
   }
@@ -108,7 +108,7 @@
 
 struct lm_real_type {
   real val;
-  
+
   void operator init(real val) {
     this.val = val;
   }
@@ -402,7 +402,7 @@
       }
       break;
     }
-    
+
     sdiag[j] = r[j * ldr + j];
     r[j * ldr + j] = x[j];
   }
@@ -508,10 +508,10 @@
     dxnorm = lm_enorm(n, wa2);
     fp_old = fp;
     fp = dxnorm - delta;
-        
+
     if (fabs(fp) <= p1 * delta || (parl == 0.0 && fp <= fp_old && fp_old < 0.0) || iter == 10)
       break;
-        
+
     for (j = 0; j < n; ++j)
       wa1[j] = diag[ipvt[j]] * wa2[ipvt[j]] / dxnorm;
 
@@ -522,12 +522,12 @@
     }
     temp = lm_enorm(n, wa1);
     parc = fp / delta / temp / temp;
-    
+
     if (fp > 0)
       parl = max(parl, par.val);
     else if (fp < 0)
       paru = min(paru, par.val);
-    
+
     par.val = max(parl, par.val + parc);
   }
 }
@@ -540,7 +540,7 @@
   static real p25 = 0.25;
   static real p75 = 0.75;
   static real p0001 = 1.0e-4;
-  
+
   nfev.val = 0;
   int iter = 1;
   lm_real_type par = lm_real_type(0);
@@ -563,7 +563,7 @@
       }
     }
   }
-  
+
   info.val = 0;
   evaluate(x, m, fvec, data, info);
   if(printout != null) printout(n, x, m, fvec, data, 0, 0, ++nfev.val);
@@ -587,7 +587,7 @@
         fjac[j * m + i] = (wa4[i] - fvec[i]) / (x[j] - temp);
       x[j] = temp;
     }
-    
+
     lm_qrfac(m, n, fjac, true, ipvt, wa1, wa2, wa3);
 
     if (iter == 1) {
@@ -695,7 +695,7 @@
         delta = pnorm / p5;
         par.val *= p5;
       }
-      
+
       if (ratio >= p0001) {
         for (j = 0; j < n; ++j) {
           x[j] = wa2[j];
@@ -735,7 +735,7 @@
 void lm_minimize(int m_dat, int n_par, real[] par, lm_evaluate_ftype evaluate, lm_print_ftype printout, lm_data_type data, lm_control_type control) {
   int n = n_par;
   int m = m_dat;
-  
+
   real[] fvec = new real[m];
   real[] diag = new real[n];
   real[] qtf = new real[n];
@@ -838,13 +838,13 @@
   int n_par = parameters.length;
   lm_evaluate_ftype evaluate = lm_evaluate_default;
   lm_print_ftype printout = control.verbose ? lm_print_default : lm_print_quiet;
-  
+
   lm_data_type data;
   data.user_t = xdata;
   data.user_y = ydata;
   data.user_w = 1 / errors;
   data.user_func = new real(real x, real[] params) {
-    return function(params, x);
+                                                    return function(params, x);
   };
 
   lm_control_type ctrl;
@@ -856,7 +856,7 @@
   ctrl.maxcall = control.maxIterations;
 
   lm_minimize(m_dat, n_par, parameters, evaluate, printout, data, ctrl);
-  
+
   return FitResult(ctrl.fnorm, ctrl.nfev.val, ctrl.info.val);
 }
 

Added: trunk/Master/texmf-dist/asymptote/map.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/map.asy	                        (rev 0)
+++ trunk/Master/texmf-dist/asymptote/map.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,40 @@
+// Create a struct <name> parameterized by types <key> and <value>,
+// that maps keys to values, defaulting to the value in <default>.
+void mapTemplate(string name, string key, string value, string default)
+{
+  type(key,"Key");
+  type(value,"Value");
+  eval("Value default="+default,true);
+
+  eval("
+  struct keyValue {
+    Key key;
+    Value T;
+    void operator init(Key key) {
+      this.key=key;
+    }
+    void operator init(Key key, Value T) {
+      this.key=key;
+      this.T=T;
+    }
+  }
+
+  struct map {
+    keyValue[] M;
+    bool operator < (keyValue a, keyValue b) {return a.key < b.key;}
+
+    void add(Key key, Value T) {
+      keyValue m=keyValue(key,T);
+      M.insert(search(M,m,operator <)+1,m);
+    }
+    Value lookup(Key key) {
+      int i=search(M,keyValue(key),operator <);
+      if(i >= 0 && M[i].key == key) return M[i].T;
+      return default;
+    }
+  }
+",true);
+
+  type("map",name);
+}
+

Modified: trunk/Master/texmf-dist/asymptote/math.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/math.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/math.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -30,7 +30,7 @@
   picture pic;
   for(int i=0; i <= Nx; ++i) draw(pic,(i,0)--(i,Ny),p);
   for(int j=0; j <= Ny; ++j) draw(pic,(0,j)--(Nx,j),p);
-  return pic; 
+  return pic;
 }
 
 bool polygon(path p)
@@ -55,7 +55,7 @@
   real denom=n.x*(Q.x-P.x)+n.y*(Q.y-P.y)+n.z*(Q.z-P.z);
   return denom == 0 ? infinity : (d-n.x*P.x-n.y*P.y-n.z*P.z)/denom;
 }
-                    
+
 // Return any point on the intersection of the two planes with normals
 // n0 and n1 passing through points P0 and P1, respectively.
 // If the planes are parallel return (infinity,infinity,infinity).
@@ -293,7 +293,7 @@
     },true);
 }
 
-real interpolate(real[] x, real[] y, real x0, int i) 
+real interpolate(real[] x, real[] y, real x0, int i)
 {
   int n=x.length;
   if(n == 0) abort("Zero data points in interpolate");
@@ -317,7 +317,7 @@
 // real[] x are listed in ascending order and return y0. Values outside the
 // available data range are linearly extrapolated using the first derivative
 // at the nearest endpoint.
-real interpolate(real[] x, real[] y, real x0) 
+real interpolate(real[] x, real[] y, real x0)
 {
   return interpolate(x,y,x0,search(x,x0));
 }
@@ -378,7 +378,7 @@
   // Remove roots at numerical infinity.
   if(abs(a) <= Fuzz*(abs(b)+Fuzz*(abs(c)+Fuzz*(abs(d)+Fuzz*abs(e)))))
     return cubicroots(b,c,d,e);
-  
+
   // Detect roots at numerical zero.
   if(abs(e) <= Fuzz*(abs(d)+Fuzz*(abs(c)+Fuzz*(abs(b)+Fuzz*abs(a)))))
     return cubicroots(a,b,c,d);
@@ -388,7 +388,7 @@
   c *= ainv;
   d *= ainv;
   e *= ainv;
-  
+
   pair[] roots;
   real[] T=cubicroots(1,-2c,c^2+b*d-4e,d^2+b^2*e-b*c*d);
   if(T.length == 0) return roots;
@@ -434,13 +434,13 @@
   real[] solution=solve(AtA(A),b*A,warn=false);
   if (solution.length == 0 && warn)
     abort("Cannot compute least-squares approximation for " +
-	  "a matrix with linearly dependent columns.");
+          "a matrix with linearly dependent columns.");
   return solution;
 }
 
 // Namespace
 struct rootfinder_settings {
-  static real roottolerance = 1e-4;
+  static real roottolerance=1e-4;
 }
 
 real findroot(real f(real), real a, real b,

Modified: trunk/Master/texmf-dist/asymptote/metapost.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/metapost.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/metapost.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 
 path cuttings;
 
-path cutbefore(path p, path q) 
+path cutbefore(path p, path q)
 {
   slice s=firstcut(p,q);
   cuttings=s.before;
@@ -9,7 +9,7 @@
   return s.after;
 }
 
-path cutafter(path p, path q) 
+path cutafter(path p, path q)
 {
   slice s=lastcut(p,q);
   cuttings=s.after;

Modified: trunk/Master/texmf-dist/asymptote/obj.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/obj.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/obj.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,7 +1,7 @@
 // A module for reading simple obj files with groups.
 // Authors: Jens Schwaiger and John Bowman
 //
-// Here simple means that : 
+// Here simple means that :
 //
 // 1) all vertex statements should come before the face statements;
 //

Modified: trunk/Master/texmf-dist/asymptote/ode.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/ode.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/ode.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,7 +14,7 @@
   int order;
   coefficients a;
   void stepDependence(real h, real c, coefficients a) {}
-   
+
   real pgrow;
   real pshrink;
   bool exponential;
@@ -54,7 +54,7 @@
   if(fabs(x) > 1) return (exp(x)-x-1)/x2;
   real x3=x2*x;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[1]+x*Coeff[2]+x2*Coeff[3]+x3*Coeff[4]+x2*x2*Coeff[5]
       +x5*Coeff[6]+x3*x3*Coeff[7]+x5*x2*Coeff[8]+x5*x3*Coeff[9];
     else {
@@ -73,7 +73,7 @@
   real x3=x2*x;
   if(fabs(x) > 1.6) return (exp(x)-0.5*x2-x-1)/x3;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[2]+x*Coeff[3]+x2*Coeff[4]+x3*Coeff[5]
       +x2*x2*Coeff[6]+x5*Coeff[7]+x3*x3*Coeff[8]+x5*x2*Coeff[9]
       +x5*x3*Coeff[10];
@@ -90,13 +90,13 @@
     }
 }
 
-void expfactors(real x, coefficients a) 
+void expfactors(real x, coefficients a)
 {
   for(int i=0; i < a.steps.length; ++i)
     a.factors[i]=exp(x*a.steps[i]);
   a.factors[a.steps.length]=exp(x);
 }
-      
+
 // First-Order Euler
 RKTableau Euler=RKTableau(1,new real[][], new real[] {1});
 
@@ -185,40 +185,40 @@
 
 // Fifth-Order Cash-Karp Runge-Kutta
 RKTableau RK5=RKTableau(5,new real[][] {{1/5},
-                                        {3/40,9/40},
-                                        {3/10,-9/10,6/5},
-                                        {-11/54,5/2,-70/27,35/27},
-                                        {1631/55296,175/512,575/13824,
-                                         44275/110592,253/4096}},
+                                          {3/40,9/40},
+                                            {3/10,-9/10,6/5},
+                                              {-11/54,5/2,-70/27,35/27},
+                                                {1631/55296,175/512,575/13824,
+                                                    44275/110592,253/4096}},
   new real[] {37/378,0,250/621,125/594,
-              0,512/1771},  // 5th order
+                0,512/1771},  // 5th order
   new real[] {2825/27648,0,18575/48384,13525/55296,
-              277/14336,1/4}); // 4th order
+                277/14336,1/4}); // 4th order
 
 // Fifth-Order Fehlberg Runge-Kutta
 RKTableau RK5F=RKTableau(5,new real[][] {{1/4},
-                                         {3/32,9/32},
-                                         {1932/2197,-7200/2197,7296/2197},
-                                         {439/216,-8,3680/513,-845/4104},
-                                         {-8/27,2,-3544/2565,1859/4104,
-                                          -11/40}},
+                                           {3/32,9/32},
+                                             {1932/2197,-7200/2197,7296/2197},
+                                               {439/216,-8,3680/513,-845/4104},
+                                                 {-8/27,2,-3544/2565,1859/4104,
+                                                     -11/40}},
   new real[] {16/135,0,6656/12825,28561/56430,-9/50,2/55}, // 5th order
   new real[] {25/216,0,1408/2565,2197/4104,-1/5,0}); // 4th order
 
 // Fifth-Order Dormand-Prince Runge-Kutta
 RKTableau RK5DP=RKTableau(5,new real[][] {{1/5},
-                                          {3/40,9/40},
-                                          {44/45,-56/15,32/9},
-                                          {19372/6561,-25360/2187,64448/6561,
-                                           -212/729},
-                                          {9017/3168,-355/33,46732/5247,49/176,
-                                           -5103/18656}},
+                                            {3/40,9/40},
+                                              {44/45,-56/15,32/9},
+                                                {19372/6561,-25360/2187,64448/6561,
+                                                    -212/729},
+                                                  {9017/3168,-355/33,46732/5247,49/176,
+                                                      -5103/18656}},
   new real[] {35/384,0,500/1113,125/192,-2187/6784,
-              11/84}, // 5th order
+                11/84}, // 5th order
   new real[] {5179/57600,0,7571/16695,393/640,
-              -92097/339200,187/2100,1/40}); // 4th order
+                -92097/339200,187/2100,1/40}); // 4th order
 
-real error(real error, real initial, real lowOrder, real norm, real diff) 
+real error(real error, real initial, real lowOrder, real norm, real diff)
 {
   if(initial != 0 && lowOrder != initial) {
     static real epsilon=realMin/realEpsilon;
@@ -249,7 +249,7 @@
   real[] y;
 }
 
-void write(solution S) 
+void write(solution S)
 {
   for(int i=0; i < S.t.length; ++i)
     write(S.t[i],S.y[i]);
@@ -276,7 +276,7 @@
     new real(real t, real y) {return f(t,y)-c*y;};
 
   tableau.stepDependence(h,c,tableau.a);
-      
+
   real t=a;
   real f0;
   if(tableau.a.lowOrderWeights.length == 0) dynamic=false;
@@ -293,7 +293,7 @@
       tableau.stepDependence(h,c,tableau.a);
       dt=h;
     }
- 
+
     real[] predictions={fsal ? f0 : F(t,y)};
     for(int i=0; i < tableau.a.steps.length; ++i)
       predictions.push(F(t+h*tableau.a.steps[i],
@@ -336,7 +336,7 @@
   real[][] y;
 }
 
-void write(Solution S) 
+void write(Solution S)
 {
   for(int i=0; i < S.t.length; ++i) {
     write(S.t[i],tab);
@@ -356,7 +356,7 @@
   Solution S;
   S.t=new real[] {a};
   S.y=new real[][] {copy(y)};
-      
+
   if(h == 0) {
     if(b == a) return S;
     if(n == 0) abort("Either n or h must be specified");

Modified: trunk/Master/texmf-dist/asymptote/palette.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/palette.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/palette.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,7 +5,7 @@
 typedef bounds range(picture pic, real min, real max);
 
 range Range(bool automin=false, real min=-infinity,
-            bool automax=false, real max=infinity) 
+            bool automax=false, real max=infinity)
 {
   return new bounds(picture pic, real dmin, real dmax) {
     // autoscale routine finds reasonable limits
@@ -45,7 +45,7 @@
 // Reduce color palette to approximate range of data relative to "display"
 // range => errors of 1/palette.length in resulting color space.
 pen[] adjust(picture pic, real min, real max, real rmin, real rmax,
-             pen[] palette) 
+             pen[] palette)
 {
   real dmin=pic.scale.z.T(min);
   real dmax=pic.scale.z.T(max);
@@ -100,7 +100,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,initial,final,palette,t*T,copy=false,antialias=antialias);
     },true);
@@ -146,7 +146,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,data,initial,final,t*T,copy=false,antialias=antialias);
     },true);
@@ -171,7 +171,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,width,height,initial,final,t*T,antialias=antialias);
     },true);
@@ -190,8 +190,8 @@
   real rmax=pic.scale.z.T(bounds.max);
 
   palette=adjust(pic,m,M,rmin,rmax,palette);
-  rmin=max(rmin,m);
-  rmax=min(rmax,M);
+  rmin=max(rmin,pic.scale.z.T(m));
+  rmax=min(rmax,pic.scale.z.T(M));
 
   // Crop data to allowed range and scale
   if(range != Full || pic.scale.z.scale.T != identity ||
@@ -201,6 +201,12 @@
     real M=bounds.max;
     f=map(new real(real x) {return T(min(max(x,m),M));},f);
   }
+  if(pic.scale.x.scale.T != identity || pic.scale.x.postscale.T != identity ||
+     pic.scale.y.scale.T != identity || pic.scale.y.postscale.T != identity) {
+    scalefcn Tx=pic.scale.x.T;
+    scalefcn Ty=pic.scale.y.T;
+    z=map(new pair(pair z) {return (Tx(z.x),Ty(z.y));},z);
+  }
 
   int[] edges={0,0,1};
   int N=palette.length-1;
@@ -267,13 +273,13 @@
     return Ticks(sign,format,ticklabel,beginlabel,endlabel,N,n,Step,step,
                  true,true,extend=true,pTick,ptick);
   };
-} 
+}
 
 paletteticks PaletteTicks=PaletteTicks();
 paletteticks NoTicks=new ticks(int sign=-1) {return NoTicks;};
 
-void palette(picture pic=currentpicture, Label L="", bounds bounds, 
-             pair initial, pair final, axis axis=Right, pen[] palette, 
+void palette(picture pic=currentpicture, Label L="", bounds bounds,
+             pair initial, pair final, axis axis=Right, pen[] palette,
              pen p=currentpen, paletteticks ticks=PaletteTicks,
              bool copy=true, bool antialias=false)
 {
@@ -280,7 +286,7 @@
   real initialz=pic.scale.z.T(bounds.min);
   real finalz=pic.scale.z.T(bounds.max);
   bounds mz=autoscale(initialz,finalz,pic.scale.z.scale);
-  
+
   axisT axis;
   axis(pic,axis);
   real angle=degrees(axis.align.dir);
@@ -311,11 +317,11 @@
   if(vertical && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
   real[][] pdata={sequence(palette.length)};
-  
+
   transform T;
   pair Tinitial,Tfinal;
   if(vertical) {
@@ -326,12 +332,12 @@
     Tinitial=initial;
     Tfinal=final;
   }
-        
+
   pic.add(new void(frame f, transform t) {
       _image(f,pdata,Tinitial,Tfinal,palette,t*T,copy=false,
              antialias=antialias);
     },true);
-  
+
   ticklocate locate=ticklocate(initialz,finalz,pic.scale.z,mz.min,mz.max);
   axis(pic,L,g,g2,p,ticks(sgn(axis.side.x*dot(lambda,par))),locate,mz.divisor,
        true);
@@ -356,13 +362,13 @@
 pen[] Wheel(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int nintervals=6;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals];
   real ninv=1.0/n;
 
@@ -373,7 +379,7 @@
     Palette[n+i]=rgb(ininv1,0.0,1.0);
     Palette[2n+i]=rgb(0.0,ininv,1.0);
     Palette[3n+i]=rgb(0.0,1.0,ininv1);
-    Palette[4n+i]=rgb(ininv,1.0,0.0);    
+    Palette[4n+i]=rgb(ininv,1.0,0.0);
     Palette[5n+i]=rgb(1.0,ininv1,0.0);
   }
   return Palette;
@@ -383,14 +389,14 @@
 pen[] Rainbow(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=5;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors-1,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals+offset];
   real ninv=1.0/n;
 
@@ -400,11 +406,11 @@
     Palette[i]=rgb(ininv1,0.0,1.0);
     Palette[n+i]=rgb(0.0,ininv,1.0);
     Palette[2n+i]=rgb(0.0,1.0,ininv1);
-    Palette[3n+i]=rgb(ininv,1.0,0.0);    
+    Palette[3n+i]=rgb(ininv,1.0,0.0);
     Palette[4n+i]=rgb(1.0,ininv1,0.0);
   }
   Palette[4n+n]=rgb(1.0,0.0,0.0);
-  
+
   return Palette;
 }
 
@@ -411,26 +417,26 @@
 private pen[] BWRainbow(int NColors, bool two)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=6;
   int divisor=3;
-  
+
   if(two) nintervals += 6;
-  
+
   int Nintervals=nintervals*divisor;
   if(NColors <= Nintervals) NColors=Nintervals+1;
   int num=NColors-offset;
   int n=-quotient(num,-Nintervals)*divisor;
   NColors=n*nintervals+offset;
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[NColors];
   real ninv=1.0/n;
 
   int k=0;
-  
+
   if(two) {
     for(int i=0; i < n; ++i) {
       real ininv=i*ninv;
@@ -444,9 +450,9 @@
     }
     k += 6n;
   }
-  
+
   if(two)
-    for(int i=0; i < n; ++i) 
+    for(int i=0; i < n; ++i)
       Palette[k+i]=rgb(1.0-i*ninv,0.0,1.0);
   else {
     int n3=-quotient(n,-3);
@@ -467,12 +473,12 @@
     real ininv1=1.0-ininv;
     Palette[k+i]=rgb(0.0,ininv,1.0);
     Palette[k+n+i]=rgb(0.0,1.0,ininv1);
-    Palette[k+2n+i]=rgb(ininv,1.0,0.0);    
+    Palette[k+2n+i]=rgb(ininv,1.0,0.0);
     Palette[k+3n+i]=rgb(1.0,ininv1,0.0);
     Palette[k+4n+i]=rgb(1.0,ininv,ininv);
   }
   Palette[k+5n]=rgb(1.0,1.0,1.0);
-  
+
   return Palette;
 }
 
@@ -484,7 +490,7 @@
   real step=(Palette.length-1)/(n-1);
   return sequence(new pen(int i) {
       return Palette[round(i*step)];
-    },n); 
+    },n);
 }
 
 // A rainbow palette tapering off to black/white at the spectrum ends,
@@ -507,7 +513,7 @@
 
 //A palette varying linearly over the specified array of pens, using
 // NColors in each interpolation interval.
-pen[] Gradient(int NColors=256 ... pen[] p) 
+pen[] Gradient(int NColors=256 ... pen[] p)
 {
   pen[] P;
   if(p.length < 2) abort("at least 2 colors must be specified");
@@ -522,7 +528,7 @@
   return P;
 }
 
-pen[] cmyk(pen[] Palette) 
+pen[] cmyk(pen[] Palette)
 {
   int n=Palette.length;
   for(int i=0; i < n; ++i)

Modified: trunk/Master/texmf-dist/asymptote/patterns.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/patterns.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/patterns.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,7 +7,7 @@
   pair pmin=min(f)-lb;
   pair pmax=max(f)+rt;
   string s="%.6f";
-  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1 
+  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1
 /BBox ["+format(s,pmin.x,"C")+" "+format(s,pmin.y,"C")+" "+
              format(s,pmax.x,"C")+" "+format(s,pmax.y,"C")+"]
 /XStep "+format(s,pmax.x-pmin.x,"C")+"
@@ -64,7 +64,7 @@
 }
 
 real hatchepsilon=1e-4;
-picture hatch(real H=5mm, pair dir=NE, pen p=currentpen) 
+picture hatch(real H=5mm, pair dir=NE, pen p=currentpen)
 {
   picture tiling;
   real theta=angle(dir);

Modified: trunk/Master/texmf-dist/asymptote/plain.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -18,13 +18,13 @@
 
 include plain_constants;
 
-access version;             
+access version;
 if(version.VERSION != VERSION) {
   warning("version","using possibly incompatible version "+
           version.VERSION+" of plain.asy"+'\n');
   nowarn("version");
 }
-   
+
 include plain_strings;
 include plain_pens;
 include plain_paths;
@@ -32,13 +32,15 @@
 include plain_margins;
 include plain_picture;
 include plain_Label;
-include plain_shipout;
 include plain_arcs;
 include plain_boxes;
+include plain_shipout;
 include plain_markers;
 include plain_arrows;
 include plain_debugger;
 
+real RELEASE=(real) split(VERSION,"-")[0];
+
 typedef void exitfcn();
 
 void updatefunction()
@@ -106,7 +108,7 @@
   });
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk save() 
+restoreThunk save()
 {
   return restore=buildRestoreThunk();
 }
@@ -132,7 +134,7 @@
 }
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk savedefaults() 
+restoreThunk savedefaults()
 {
   return restoredefaults=buildRestoreDefaults();
 }
@@ -145,7 +147,7 @@
   atexit(null);
 }
 
-// Return the sequence n,...m
+// Return the sequence n,...,m
 int[] sequence(int n, int m)
 {
   return sequence(new int(int x){return x;},m-n+1)+n;
@@ -180,6 +182,19 @@
   if(!embedded) restoredefaults();
 }
 
+// Associate a parametrized type with a name.
+void type(string type, string name)
+{
+  eval("typedef "+type+" "+name,true);
+}
+
+void mapArray(string From, string To)
+{
+  type(From,"From");
+  type(To,"To");
+  eval("To[] map(To f(From), From[] a) {return sequence(new To(int i) {return f(a[i]);},a.length);}",true);
+}
+
 // Evaluate user command line option.
 void usersetting()
 {
@@ -186,7 +201,7 @@
   eval(settings.user,true);
 }
 
-string stripsuffix(string f, string suffix=".asy") 
+string stripsuffix(string f, string suffix=".asy")
 {
   int n=rfind(f,suffix);
   if(n != -1) f=erase(f,n,-1);
@@ -231,6 +246,7 @@
 struct processtime {
   real user;
   real system;
+  real clock;
 }
 
 struct cputime {
@@ -239,21 +255,26 @@
   processtime change;
 }
 
-cputime cputime() 
+cputime cputime()
 {
   static processtime last;
   real [] a=_cputime();
   cputime cputime;
+  real clock=a[4];
   cputime.parent.user=a[0];
   cputime.parent.system=a[1];
+  cputime.parent.clock=clock;
   cputime.child.user=a[2];
   cputime.child.system=a[3];
-  real user=a[0]+a[2];
-  real system=a[1]+a[3];
+  cputime.child.clock=0;
+  real user=cputime.parent.user+cputime.child.user;
+  real system=cputime.parent.system+cputime.child.system;
   cputime.change.user=user-last.user;
   cputime.change.system=system-last.system;
+  cputime.change.clock=clock-last.clock;
   last.user=user;
   last.system=system;
+  last.clock=clock;
   return cputime;
 }
 
@@ -285,23 +306,3 @@
 }
 
 cputime();
-
-void nosetpagesize()
-{
-  static bool initialized=false;
-  if(!initialized && latex()) {
-    // Portably pass nosetpagesize option to graphicx package.
-    texpreamble("\usepackage{ifluatex}\ifluatex
-\ifx\pdfpagewidth\undefined\let\pdfpagewidth\paperwidth\fi
-\ifx\pdfpageheight\undefined\let\pdfpageheight\paperheight\fi\else
-\let\paperwidthsave\paperwidth\let\paperwidth\undefined
-\usepackage{graphicx}
-\let\paperwidth\paperwidthsave\fi");
-    initialized=true;
-  }
-}
-
-nosetpagesize();
-
-if(settings.tex == "luatex")
-  texpreamble("\input luatex85.sty");

Modified: trunk/Master/texmf-dist/asymptote/plain_Label.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_Label.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_Label.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -15,10 +15,10 @@
   real a=t.xx, b=t.xy, c=t.yx, d=t.yy;
   real arg=(a-d)^2+4b*c;
   pair delta=arg >= 0 ? sqrt(arg) : I*sqrt(-arg);
-  real trace=a+d; 
+  real trace=a+d;
   pair l1=0.5(trace+delta);
   pair l2=0.5(trace-delta);
-  
+
   if(abs(delta) < sqrtEpsilon*max(abs(l1),abs(l2))) {
     real s=abs(0.5trace);
     return (s != 0) ? scale(1/s)*t : t;
@@ -51,7 +51,7 @@
       }
     }
     return c;
-  }     
+  }
 
   pair[][] conj(pair[][] a) {
     pair[][] c=new pair[2][2];
@@ -61,7 +61,7 @@
       }
     }
     return c;
-  }     
+  }
 
   A=conj(U)*A*U;
 
@@ -70,7 +70,7 @@
     A[0][0] /= D;
     A[0][1] /= D;
   }
-  
+
   D=abs(A[1][1]);
   if(D != 0) {
     A[1][0] /= D;
@@ -155,13 +155,13 @@
   s.align=align;
   return s;
 }
-  
+
 restricted side NoSide;
 restricted side LeftSide=Relative(W);
 restricted side Center=Relative((0,0));
 restricted side RightSide=Relative(E);
 
-side operator * (real x, side s) 
+side operator * (real x, side s)
 {
   side S;
   S.align=x*s.align;
@@ -190,7 +190,7 @@
   p.relative=true;
   return p;
 }
-  
+
 restricted position BeginPoint=Relative(0);
 restricted position MidPoint=Relative(0.5);
 restricted position EndPoint=Relative(1);
@@ -227,8 +227,8 @@
   bool defaulttransform3=true;
   embed embed=Rotate; // Shift, Rotate, Slant, or Scale with embedded picture
   filltype filltype=NoFill;
-  
-  void init(string s="", string size="", position position=0, 
+
+  void init(string s="", string size="", position position=0,
             bool defaultposition=true, align align=NoAlign, pen p=nullpen,
             transform T=identity(), transform3 T3=identity4,
             bool defaulttransform=true, bool defaulttransform3=true,
@@ -246,17 +246,17 @@
     this.embed=embed;
     this.filltype=filltype;
   }
-  
+
   void initalign(string s="", string size="", align align, pen p=nullpen,
                  embed embed=Rotate, filltype filltype=NoFill) {
     init(s,size,align,p,embed,filltype);
   }
-  
+
   void transform(transform T) {
     this.T=T;
     defaulttransform=false;
   }
-  
+
   void transform3(transform3 T) {
     this.T3=copy(T);
     defaulttransform3=false;
@@ -268,12 +268,12 @@
            defaulttransform3,embed,filltype);
     return L;
   }
-  
+
   void position(position pos) {
     this.position=pos;
     defaultposition=false;
   }
-  
+
   void align(align a) {
     align.align(a);
   }
@@ -280,15 +280,15 @@
   void align(align a, align default) {
     align.align(a,default);
   }
-  
+
   void p(pen p0) {
     if(this.p == nullpen) this.p=p0;
   }
-  
+
   void filltype(filltype filltype0) {
     if(this.filltype == NoFill) this.filltype=filltype0;
   }
-  
+
   void label(frame f, transform t=identity(), pair position, pair align) {
     pen p0=p == nullpen ? currentpen : p;
     align=length(align)*unit(rotation(t)*align);
@@ -309,7 +309,7 @@
       add(f,d,filltype);
     }
   }
-  
+
   void label(picture pic=currentpicture, pair position, pair align) {
     if(s == "") return;
     pic.add(new void (frame f, transform t) {
@@ -324,7 +324,7 @@
   void out(picture pic=currentpicture) {
     label(pic,position.position,align.dir);
   }
-  
+
   void out(picture pic=currentpicture, path g) {
     bool relative=position.relative;
     real position=position.position.x;
@@ -349,7 +349,7 @@
     pair position=point(g,position);
     pic.addBox(position,position,min(f),max(f));
   }
-  
+
   void write(file file=stdout, suffix suffix=endl) {
     write(file,"\""+s+"\"");
     if(!defaultposition) write(file,", position=",position.position);
@@ -364,11 +364,11 @@
     }
     write(file,"",suffix);
   }
-  
+
   real relative() {
     return defaultposition ? 0.5 : position.position.x;
   };
-  
+
   real relative(path g) {
     return position.relative ? reltime(g,relative()) : relative();
   };
@@ -380,12 +380,12 @@
 {
   L.out(f,t);
 }
-  
+
 void add(picture pic=currentpicture, Label L)
 {
   L.out(pic);
 }
-  
+
 Label operator * (transform t, Label L)
 {
   Label tL=L.copy();
@@ -466,13 +466,13 @@
 {
   add(f,Label(L,position,align,p,filltype));
 }
-  
+
 void label(frame f, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
   add(f,Label(L,L.position,align,p,filltype));
 }
-  
+
 void label(picture pic=currentpicture, Label L, pair position,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -479,7 +479,7 @@
   Label L=Label(L,position,align,p,filltype);
   add(pic,L);
 }
-  
+
 void label(picture pic=currentpicture, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
@@ -494,7 +494,7 @@
   label(opic,L,L.position,align,p,filltype);
   add(pic,opic,origin);
 }
-  
+
 void label(picture pic=currentpicture, Label L, explicit path g,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -532,12 +532,12 @@
   return object(f);
 }
 
-object operator cast(Label L) 
+object operator cast(Label L)
 {
   return object(L);
 }
 
-object operator cast(string s) 
+object operator cast(string s)
 {
   return object(s);
 }
@@ -562,7 +562,7 @@
 }
 
 // Returns a copy of object F aligned in the direction align
-object align(object F, pair align) 
+object align(object F, pair align)
 {
   return shift(F.f,align)*F;
 }
@@ -594,7 +594,7 @@
     real fontsize;
     string font;
 
-    void operator init(Label L) 
+    void operator init(Label L)
     {
       s=replace(L.s,'\n',' ');
       fontsize=fontsize(L.p);
@@ -603,7 +603,7 @@
 
     pen pen() {return fontsize(fontsize)+fontcommand(font);}
   }
-  
+
   bool lexorder(stringfont a, stringfont b) {
     return a.s < b.s || (a.s == b.s && (a.fontsize < b.fontsize ||
                                         (a.fontsize == b.fontsize &&
@@ -615,7 +615,7 @@
 
   static stringfont[] stringlist;
   static bool adjust[];
-  
+
   path[] G;
 
   stringfont s=stringfont(L);
@@ -649,7 +649,7 @@
     label(f,L);
     return transform(box(min(f),max(f)),L);
   }
-  
+
   if(stringlist.length > 0) {
     path[][] g;
     int n=stringlist.length;
@@ -660,9 +660,9 @@
       s[i]=adjust[i] ? "."+S.s : S.s;
       p[i]=adjust[i] ? S.pen()+basealign : S.pen();
     }
-        
+
     g=tex ? _texpath(s,p) : textpath(s,p);
-      
+
     if(tex)
       for(int i=0; i < n; ++i)
         if(adjust[i]) {
@@ -670,8 +670,8 @@
           g[i].delete(0);
           g[i]=shift(0,-y)*g[i];
         }
-    
-  
+
+
     for(int i=0; i < stringlist.length; ++i) {
       stringfont s=stringlist[i];
       int j=search(stringcache,s,lexorder)+1;
@@ -686,6 +686,6 @@
 }
 
 texpath=new path[](string s, pen p, bool tex=settings.tex != "none", bool bbox=false)
-{
-  return texpath(Label(s,p));
-};
+  {
+   return texpath(Label(s,p));
+  };

Modified: trunk/Master/texmf-dist/asymptote/plain_arcs.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_arcs.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_arcs.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 bool CCW=true;
-bool CW=false;                                            
+bool CW=false;
 
 path circle(pair c, real r)
 {
@@ -35,7 +35,7 @@
 {
   return arc(c,c+r*dir(angle1),c+r*dir(angle2),direction);
 }
-  
+
 // return an arc centered at c with radius r > 0 from angle1 to angle2 in
 // degrees, drawing counterclockwise if angle2 >= angle1 (otherwise clockwise).
 path arc(pair c, real r, real angle1, real angle2)

Modified: trunk/Master/texmf-dist/asymptote/plain_arrows.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_arrows.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_arrows.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -12,7 +12,7 @@
 
 real barfactor=arrowfactor;
 
-real arrowsize(pen p=currentpen) 
+real arrowsize(pen p=currentpen)
 {
   return arrowfactor*linewidth(p);
 }
@@ -53,39 +53,39 @@
 arrowhead DefaultHead;
 DefaultHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                           real size=0, real angle=arrowangle) {
-  if(size == 0) size=DefaultHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  pair y=point(r,t);
-  path base=arrowbase(r,y,t,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  pair denom=point(right,T[1])-y;
-  real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-  path left=rotate(-angle*factor,x)*r;
-  path right=rotate(angle*factor,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
+                                                               if(size == 0) size=DefaultHead.size(p);
+                                                               bool relative=position.relative;
+                                                               real position=position.position.x;
+                                                               if(relative) position=reltime(g,position);
+                                                               path r=subpath(g,position,0);
+                                                               pair x=point(r,0);
+                                                               real t=arctime(r,size);
+                                                               pair y=point(r,t);
+                                                               path base=arrowbase(r,y,t,size);
+                                                               path left=rotate(-angle,x)*r;
+                                                               path right=rotate(angle,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               pair denom=point(right,T[1])-y;
+                                                               real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+                                                               path left=rotate(-angle*factor,x)*r;
+                                                               path right=rotate(angle*factor,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
 };
 
 arrowhead SimpleHead;
 SimpleHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                          real size=0, real angle=arrowangle) {
-  if(size == 0) size=SimpleHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  return subpath(left,t,0)--subpath(right,0,t);
+                                                              if(size == 0) size=SimpleHead.size(p);
+                                                              bool relative=position.relative;
+                                                              real position=position.position.x;
+                                                              if(relative) position=reltime(g,position);
+                                                              path r=subpath(g,position,0);
+                                                              pair x=point(r,0);
+                                                              real t=arctime(r,size);
+                                                              path left=rotate(-angle,x)*r;
+                                                              path right=rotate(angle,x)*r;
+                                                              return subpath(left,t,0)--subpath(right,0,t);
 };
 
 arrowhead HookHead(real dir=arrowdir, real barb=arrowbarb)
@@ -94,34 +94,34 @@
   a.head=new path(path g, position position=EndPoint, pen p=currentpen,
                   real size=0, real angle=arrowangle)
     {
-      if(size == 0) size=a.size(p);
-      angle=min(angle*arrowhookfactor,45);
-      bool relative=position.relative;
-      real position=position.position.x;
-      if(relative) position=reltime(g,position);
-      path r=subpath(g,position,0);
-      pair x=point(r,0);
-      real t=arctime(r,size);
-      pair y=point(r,t);
-      path base=arrowbase(r,y,t,size);
-      path left=rotate(-angle,x)*r;
-      path right=rotate(angle,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      pair denom=point(right,T[1])-y;
-      real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-      path left=rotate(-angle*factor,x)*r;
-      path right=rotate(angle*factor,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      left=subpath(left,0,T[0]);
-      right=subpath(right,T[1],0);
-      pair pl0=point(left,0), pl1=relpoint(left,1);
-      pair pr0=relpoint(right,0), pr1=relpoint(right,1);
-      pair M=(pl1+pr0)/2;
-      pair v=barb*unit(M-pl0);
-      pl1=pl1+v; pr0=pr0+v;
-      left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
-      right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
-      return left--right&cycle;
+     if(size == 0) size=a.size(p);
+     angle=min(angle*arrowhookfactor,45);
+     bool relative=position.relative;
+     real position=position.position.x;
+     if(relative) position=reltime(g,position);
+     path r=subpath(g,position,0);
+     pair x=point(r,0);
+     real t=arctime(r,size);
+     pair y=point(r,t);
+     path base=arrowbase(r,y,t,size);
+     path left=rotate(-angle,x)*r;
+     path right=rotate(angle,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     pair denom=point(right,T[1])-y;
+     real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+     path left=rotate(-angle*factor,x)*r;
+     path right=rotate(angle*factor,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     left=subpath(left,0,T[0]);
+     right=subpath(right,T[1],0);
+     pair pl0=point(left,0), pl1=relpoint(left,1);
+     pair pr0=relpoint(right,0), pr1=relpoint(right,1);
+     pair M=(pl1+pr0)/2;
+     pair v=barb*unit(M-pl0);
+     pl1=pl1+v; pr0=pr0+v;
+     left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
+     right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
+     return left--right&cycle;
     };
   return a;
 }
@@ -129,35 +129,35 @@
 
 arrowhead TeXHead;
 TeXHead.size=new real(pen p)
-{
-  static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
-  return hcoef*arrowtexfactor*linewidth(p);
-};
+  {
+   static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
+   return hcoef*arrowtexfactor*linewidth(p);
+  };
 TeXHead.arcsize=TeXHead.size;
 
 TeXHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                       real size=0, real angle=arrowangle) {
-  static real wcoef=1/84; // 1/abs(base-hint)
-  static path texhead=scale(wcoef)*
-  ((0,20)     .. controls (-75,75)    and (-108,158) ..
-   (-108,166) .. controls (-108,175)  and (-100,178) ..
-   (-93,178)  .. controls (-82,178)   and (-80,173)  ..
-   (-77,168)  .. controls (-62,134)   and (-30,61)   ..
-   (70,14)    .. controls (82,8)      and (84,7)     ..
-   (84,0)     .. controls (84,-7)     and (82,-8)    ..
-   (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
-   (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
-   (-93,-178) .. controls (-100,-178) and (-108,-175)..
-   (-108,-166).. controls (-108,-158) and (-75,-75)  ..
-   (0,-20)--cycle);
-  if(size == 0) size=TeXHead.size(p);
-  path gp=scale(size)*texhead;
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair y=point(r,arctime(r,size));
-  return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
+                                                           static real wcoef=1/84; // 1/abs(base-hint)
+                                                           static path texhead=scale(wcoef)*
+                                                           ((0,20)     .. controls (-75,75)    and (-108,158) ..
+                                                            (-108,166) .. controls (-108,175)  and (-100,178) ..
+                                                            (-93,178)  .. controls (-82,178)   and (-80,173)  ..
+                                                            (-77,168)  .. controls (-62,134)   and (-30,61)   ..
+                                                            (70,14)    .. controls (82,8)      and (84,7)     ..
+                                                            (84,0)     .. controls (84,-7)     and (82,-8)    ..
+                                                            (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
+                                                            (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
+                                                            (-93,-178) .. controls (-100,-178) and (-108,-175)..
+                                                            (-108,-166).. controls (-108,-158) and (-75,-75)  ..
+                                                            (0,-20)--cycle);
+                                                           if(size == 0) size=TeXHead.size(p);
+                                                           path gp=scale(size)*texhead;
+                                                           bool relative=position.relative;
+                                                           real position=position.position.x;
+                                                           if(relative) position=reltime(g,position);
+                                                           path r=subpath(g,position,0);
+                                                           pair y=point(r,arctime(r,size));
+                                                           return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
 };
 TeXHead.defaultfilltype=new filltype(pen p) {return Fill(p);};
 
@@ -169,7 +169,7 @@
     position *= arclength(g);
     if(center) position += 0.5*size;
     position=arctime(g,position);
-  } else if(center) 
+  } else if(center)
     position=arctime(g,arclength(subpath(g,0,position))+0.5*size);
   return position;
 }
@@ -251,7 +251,7 @@
       drawarrow(f,arrowhead,t*g,p,size,angle,filltype,position,forwards,margin,
                 center);
     });
-  
+
   pic.addPath(g,p);
 
   real position=position(position,size,g,center);
@@ -275,7 +275,7 @@
   pic.add(new void(frame f, transform t) {
       drawarrow2(f,arrowhead,t*g,p,size,angle,filltype,margin);
     });
-  
+
   pic.addPath(g,p);
 
   int L=length(g);
@@ -291,7 +291,7 @@
   Draw(opic,-0.5d--0.5d,p+solid);
   add(pic,opic,a);
 }
-                                                      
+
 picture bar(pair a, pair d, pen p=currentpen)
 {
   picture pic;
@@ -345,7 +345,7 @@
     return false;
   };
 }
-  
+
 arrowbar Arrows(arrowhead arrowhead=DefaultHead,
                 real size=0, real angle=arrowangle,
                 filltype filltype=null)
@@ -383,7 +383,7 @@
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null,
                      position position=EndPoint)=ArcArrow;
-  
+
 arrowbar MidArcArrow(arrowhead arrowhead=DefaultHead,
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null)
@@ -395,7 +395,7 @@
     return false;
   };
 }
-  
+
 arrowbar ArcArrows(arrowhead arrowhead=DefaultHead,
                    real size=0, real angle=arcarrowangle,
                    filltype filltype=null)
@@ -406,8 +406,8 @@
     return false;
   };
 }
-  
-arrowbar BeginBar(real size=0) 
+
+arrowbar BeginBar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -416,7 +416,7 @@
   };
 }
 
-arrowbar Bar(real size=0) 
+arrowbar Bar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     int L=length(g);
@@ -426,9 +426,9 @@
   };
 }
 
-arrowbar EndBar(real size=0)=Bar; 
+arrowbar EndBar(real size=0)=Bar;
 
-arrowbar Bars(real size=0) 
+arrowbar Bars(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -469,73 +469,73 @@
   // These if statements are ordered in such a way that the most common case
   // (with just a path and a pen) executes the least bytecode.
   if (marker == nomarker)
-  {
-    if (arrow == None && bar == None)
     {
-      if (margin == NoMargin && size(nib(p)) == 0)
-      {
-        pic.addExactAbove(
-            new void(frame f, transform t, transform T, pair, pair) {
-              _draw(f,t*T*g,p);
-            });
-        pic.addPath(g,p);
+      if (arrow == None && bar == None)
+        {
+          if (margin == NoMargin && size(nib(p)) == 0)
+            {
+              pic.addExactAbove(
+                                new void(frame f, transform t, transform T, pair, pair) {
+                                  _draw(f,t*T*g,p);
+                                });
+              pic.addPath(g,p);
 
-        // Jumping over else clauses takes time, so test if we can return
-        // here.
-        if (L == null && legend == null)
-          return;
+              // Jumping over else clauses takes time, so test if we can return
+              // here.
+              if (L == null && legend == null)
+                return;
+            }
+          else // With margin or polygonal pen.
+            {
+              _draw(pic, g, p, margin);
+            }
+        }
+      else /* arrow or bar */
+        {
+          // Note we are using & instead of && as both arrow and bar need to be
+          // called.
+          if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
+            _draw(pic, g, p, margin);
+        }
+
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
       }
-      else // With margin or polygonal pen.
-      {
-        _draw(pic, g, p, margin);
+
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
     }
-    else /* arrow or bar */
+  else /* marker != nomarker */
     {
+      if(marker != nomarker && !marker.above) marker.mark(pic,g);
+
       // Note we are using & instead of && as both arrow and bar need to be
       // called.
-      if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
-        _draw(pic, g, p, margin);
-    }
+      if ((arrow == None || arrow(pic, g, p, margin)) &
+          (bar == None || bar(pic, g, p, margin)))
+        {
+          _draw(pic, g, p, margin);
+        }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
-    }
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
+      }
 
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-  }
-  else /* marker != nomarker */
-  {
-    if(marker != nomarker && !marker.above) marker.mark(pic,g);
-
-    // Note we are using & instead of && as both arrow and bar need to be
-    // called.
-    if ((arrow == None || arrow(pic, g, p, margin)) &
-        (bar == None || bar(pic, g, p, margin)))
-      {
-        _draw(pic, g, p, margin);
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
+      if(marker != nomarker && marker.above) marker.mark(pic,g);
     }
-
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-
-    if(marker != nomarker && marker.above) marker.mark(pic,g);
-  }
 }
 
 // Draw a fixed-size line about the user-coordinate 'origin'.
@@ -551,12 +551,12 @@
 
 void draw(picture pic=currentpicture, explicit path[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
-{ 
+{
   // This could be optimized to size and draw the entire array as a batch.
-  for(int i=0; i < g.length-1; ++i) 
+  for(int i=0; i < g.length-1; ++i)
     draw(pic,g[i],p,marker);
   if(g.length > 0) draw(pic,g[g.length-1],p,legend,marker);
-} 
+}
 
 void draw(picture pic=currentpicture, guide[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
@@ -621,7 +621,7 @@
 {
   if(pictures.length == 0)
     return new frame[];
- 
+
   picture all;
   size(all,pictures[0]);
   for(picture pic : pictures)

Modified: trunk/Master/texmf-dist/asymptote/plain_bounds.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_bounds.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_bounds.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 // have been added, this is only an approximation since it takes the bounds of
 // their transformed bounding box.
 private void addTransformedCoords(coords2 dest, transform t,
-                          coords2 point, coords2 min, coords2 max)
+                                  coords2 point, coords2 min, coords2 max)
 {
   dest.push(t, point, point);
 
@@ -47,7 +47,7 @@
   for (coord c : src)
     addIfMaximal(dest, c.user, c.truesize);
 }
-      
+
 // Same as addIfMaximal, but testing for minimal coords.
 private void addIfMinimal(coord[] coords, real user, real truesize) {
   for (coord c : coords)
@@ -130,7 +130,7 @@
     void operator init(coord[] left, coord[] bottom,
                        coord[] right, coord[] top) {
       this.left = left;
-      this.bottom = bottom; 
+      this.bottom = bottom;
       this.right = right;
       this.top = top;
     }
@@ -197,7 +197,7 @@
 
   void addBox(pair userMin, pair userMax, pair trueMin, pair trueMax) {
     assert(!frozen);
-    this.min.push(userMin, trueMin); 
+    this.min.push(userMin, trueMin);
     this.max.push(userMax, trueMax);
   }
 
@@ -334,7 +334,7 @@
 
     addLocalsToExtremes(t, e);
   }
-    
+
   private void addLocalsToExtremes(extremes e) {
     addMinToExtremes(e, point);
     addMaxToExtremes(e, point);
@@ -466,7 +466,7 @@
       acc.pushUserCoords(min, max);
       if (pathBounds.length > 0)
         acc.push(min(pathBounds), max(pathBounds));
-      for (var pp : pathpenBounds) 
+      for (var pp : pathpenBounds)
         if(size(pp.g) > 0)
           acc.push(min(pp.g), max(pp.g));
       for (var link : links)
@@ -623,13 +623,13 @@
 
     // Get the extremal coordinates.
     extremes e = extremes();
-    
+
     real sx;
     if(xunitsize == 0) {
       if(xsize != 0) sx=calculateScaling("x",e.left,e.right,xsize,warn);
     } else sx=xunitsize;
 
-    /* Possible alternative code : 
+    /* Possible alternative code :
        real sx = xunitsize != 0 ? xunitsize :
        xsize != 0     ? calculateScaling("x", Coords.x, xsize, warn) :
        0; */
@@ -697,7 +697,7 @@
     makeMutable();
     base.append(b.base);
   }
-    
+
   void append(transform t, bounds b) {
     // makeMutable will be called by append.
     if (t == identity())
@@ -760,7 +760,7 @@
     makeMutable();
     base.yclip(Min,Max);
   }
-  
+
   void clip(pair Min, pair Max) {
     // TODO: If the user bounds have been manually altered, they may be
     // incorrect after the clip.

Modified: trunk/Master/texmf-dist/asymptote/plain_boxes.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_boxes.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_boxes.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,7 +20,6 @@
   pair m=min(src);
   pair M=max(src);
   pair bound=M-m;
-  int sign=filltype == NoFill ? 1 : -1;
   real a=bound.x+2*xmargin;
   real b=bound.y+2*ymargin;
   real ds=0;
@@ -90,7 +89,7 @@
   L0.position(0);
   L0.p(p);
   add(F.f,L0);
-  F.g=e(F.f,xmargin,ymargin,p,filltype);
+  F.g=e(F.f,xmargin,ymargin,p,filltype,above);
   return F;
 }
 

Modified: trunk/Master/texmf-dist/asymptote/plain_margins.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_margins.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_margins.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,7 +5,7 @@
 
 typedef marginT margin(path, pen);
 
-path trim(path g, real begin, real end) {
+path trim(path g, real begin, real end=begin) {
   real a=arctime(g,begin);
   real b=arctime(g,arclength(g)-end);
   return a <= b ? subpath(g,a,b) : point(g,a);
@@ -36,7 +36,7 @@
   };
 }
                                                       
-margin Margin(real begin, real end)
+margin Margin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -48,7 +48,7 @@
   };
 }
                                                            
-margin PenMargin(real begin, real end)
+margin PenMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -60,7 +60,7 @@
   };
 }
                                               
-margin DotMargin(real begin, real end)
+margin DotMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -73,7 +73,7 @@
   };
 }
                                                       
-margin TrueMargin(real begin, real end)
+margin TrueMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;

Modified: trunk/Master/texmf-dist/asymptote/plain_picture.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_picture.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_picture.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1355,13 +1355,14 @@
 }
 
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[][] p, path[] b=g,
+                 pen fillrule=currentpen, pen[][] p, path[] b=new path[],
                  pair[][] z=new pair[][], bool copy=true)
 {
+  bool compact=b.length == 0 || b[0] == nullpath;
   if(copy) {
     g=copy(g);
     p=copy(p);
-    b=copy(b);
+    if(!compact) b=copy(b);
     z=copy(z);
   }
   pic.add(new void(frame f, transform t) {
@@ -1368,7 +1369,11 @@
       pair[][] Z=new pair[z.length][];
       for(int i=0; i < z.length; ++i)
         Z[i]=t*z[i];
-      tensorshade(f,t*g,stroke,fillrule,p,t*b,Z,false);
+      path[] G=t*g;
+      if(compact)
+        tensorshade(f,G,stroke,fillrule,p,Z,false);
+      else
+        tensorshade(f,G,stroke,fillrule,p,t*b,Z,false);
     },true);
   pic.addPath(g);
 }
@@ -1375,32 +1380,20 @@
 
 void tensorshade(frame f, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=g.length > 0 ? g[0] : nullpath, pair[] z=new pair[])
 {
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(frame f, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=nullpath, pair[] z=new pair[])
 {
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 // Smoothly shade the regions between consecutive paths of a sequence using a
 // given array of pens:
 void draw(picture pic=currentpicture, path[] g, pen fillrule=currentpen,

Modified: trunk/Master/texmf-dist/asymptote/plain_shipout.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/plain_shipout.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/plain_shipout.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -86,14 +86,10 @@
     }
   }
 
-  if(outformat(format) == "html") {
-    warning("htmltosvg",
-            "html output requested for 2D picture; generating svg image instead...");
-    format="svg";
-  }
-  
-  if(settings.xasy || (!implicitshipout && prefix == defaultfilename)) {
-    if(prefix == defaultfilename) {
+  bool defaultprefix=prefix==defaultfilename;
+
+  if(settings.xasy || (!implicitshipout && defaultprefix)) {
+    if(defaultprefix) {
       currentpicture.clear();
       add(f,group=false);
     }
@@ -132,8 +128,15 @@
     }
     frame f;
     transform t=pic.calculateTransform();
-    if(currentpicture.fitter == null)
-      f=pic.fit(t);
+    if(currentpicture.fitter == null) {
+      pen background=currentlight.background;
+      if(settings.outformat == "html" && background == nullpen)
+        background=white;
+      if(background != nullpen)
+        f=bbox(pic,nullpen,Fill(background));
+      else
+        f=pic.fit(t);
+    }
     else
       f=pic.fit(prefix,format,view=view,options,script,light,P);
 

Modified: trunk/Master/texmf-dist/asymptote/rationalSimplex.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/rationalSimplex.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/rationalSimplex.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,8 +1,8 @@
 // Rational simplex solver written by John C. Bowman and Pouria Ramazi, 2018.
 import rational;
 
-void simplexStandard(rational[] c, rational[][] A, int[] s=new int[],
-                     rational[] b) {}
+void simplexInit(rational[] c, rational[][] A, int[] s=new int[],
+                 rational[] b, int count) {}
 void simplexTableau(rational[][] E, int[] Bindices, int I=-1, int J=-1) {}
 void simplexPhase1(rational[] c, rational[][] A, rational[] b,
                    int[] Bindices) {}
@@ -35,7 +35,10 @@
 
   int case;
   rational[] x;
+  rational[] xStandard;
   rational cost;
+  rational[] d;
+  bool dual=false;
 
   int m,n;
   int J;
@@ -70,7 +73,7 @@
 
   int iterate(rational[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in bottom (reduced cost) row
+      // Bland's rule: first negative entry in reduced cost (bottom) row enters
       rational[] Em=E[m];
       for(J=1; J <= N; ++J)
         if(Em[J] < 0) break;
@@ -94,7 +97,7 @@
           rational r=E[i][0]/u;
           if(r <= t && (r < t || Bindices[i] < Bindices[I])) {
             t=r; I=i;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: exiting variable has smallest minimizing subscript
         }
       }
       if(I == -1)
@@ -111,8 +114,7 @@
 
   int iterateDual(rational[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in zeroth (basic variable) column
-      rational[] Em=E[m];
+      // Bland's rule: negative variable with smallest subscript exits
       int I;
       for(I=0; I < m; ++I) {
         if(E[I][0] < 0) break;
@@ -121,23 +123,30 @@
       if(I == m)
         break;
 
+      for(int i=I+1; i < m; ++i) {
+        if(E[i][0] < 0 && Bindices[i] < Bindices[I])
+          I=i;
+      }
+
+      rational[] Em=E[m];
+      rational[] EI=E[I];
       int J=0;
       rational t;
       for(int j=1; j <= N; ++j) {
-        rational u=E[I][j];
+        rational u=EI[j];
         if(u < 0) {
-          t=-E[m][j]/u;
+          t=-Em[j]/u;
           J=j;
           break;
         }
       }
       for(int j=J+1; j <= N; ++j) {
-        rational u=E[I][j];
+        rational u=EI[j];
         if(u < 0) {
-          rational r=-E[m][j]/u;
+          rational r=-Em[j]/u;
           if(r <= t && (r < t || j < J)) {
             t=r; J=j;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: smallest minimizing subscript enters
         }
       }
       if(J == 0)
@@ -157,8 +166,7 @@
   // b is a vector of length m, and c is a vector of length n.
   // Can set phase1=false if the last m columns of A form the identity matrix.
   void operator init(rational[] c, rational[][] A, rational[] b,
-                     bool phase1=true, bool dual=false) {
-    if(dual) phase1=false;
+                     bool phase1=true) {
     // Phase 1
     m=A.length;
     if(m == 0) {case=INFEASIBLE; return;}
@@ -243,7 +251,7 @@
       simplexPhase1(c,A,b,Bindices);
 
       iterate(E,n+k,Bindices);
-  
+
       if(Em[0] != 0) {
         simplexTableau(E,Bindices);
       case=INFEASIBLE;
@@ -278,7 +286,7 @@
       for(int i=0; i < m; ++i) {
         int k=Bindices[i];
         if(k > n) continue;
-        Bindices[ip]=k; 
+        Bindices[ip]=k;
         cB[ip]=c[k-1];
         rational[] Dip=D[ip];
         rational[] Ei=E[i];
@@ -319,15 +327,28 @@
 
     case=(dual ? iterateDual : iterate)(D,n,Bindices);
     simplexTableau(D,Bindices);
+
+    if(case != INFEASIBLE) {
+      x=new rational[n];
+      for(int j=0; j < n; ++j)
+        x[j]=0;
+
+      for(int k=0; k < m; ++k)
+        x[Bindices[k]-1]=D[k][0];
+    }
+
+    if(case == UNBOUNDED) {
+      d=new rational[n];
+      for(int j=0; j < n; ++j)
+        d[j]=0;
+      d[J-1]=1;
+      for(int k=0; k < m; ++k)
+        d[Bindices[k]-1]=-D[k][J];
+    }
+
     if(case != OPTIMAL)
       return;
 
-    for(int j=0; j < n; ++j)
-      x[j]=0;
-
-    for(int k=0; k < m; ++k)
-      x[Bindices[k]-1]=D[k][0];
-
     cost=-Dm[0];
   }
 
@@ -353,21 +374,21 @@
         ai[j]=Ai[j];
       }
     }
-  
+
     int k=0;
 
     bool phase1=false;
-    bool dual=count == m && all(c >= 0);
+    dual=count == m && all(c >= 0);
 
     for(int i=0; i < m; ++i) {
       rational[] ai=a[i];
       for(int j=0; j < k; ++j)
         ai[n+j]=0;
+      int si=s[i];
       if(k < count)
-        ai[n+k]=-s[i];
+        ai[n+k]=-si;
       for(int j=k+1; j < count; ++j)
         ai[n+j]=0;
-      int si=s[i];
       if(si == 0) phase1=true;
       else {
         ++k;
@@ -378,23 +399,25 @@
             for(int j=0; j < n+count; ++j)
               ai[j]=-ai[j];
           }
-        } else if(si*bi > 0) {
-          if(dual && si == 1) {
-            b[i]=-bi;
-            s[i]=-1;
-            for(int j=0; j < n+count; ++j)
-              ai[j]=-ai[j];
-          } else
-            phase1=true;
-        }
+        } else if(dual && si == 1) {
+          b[i]=-bi;
+          s[i]=-1;
+          for(int j=0; j < n+count; ++j)
+            ai[j]=-ai[j];
+        } else if(si*bi > 0)
+          phase1=true;
       }
     }
 
+    if(dual) phase1=false;
     rational[] C=concat(c,array(count,rational(0)));
-    if(count > 0) simplexStandard(C,a,b);
-    operator init(C,a,b,phase1,dual);
+    simplexInit(C,a,b,count);
+    operator init(C,a,b,phase1);
 
-    if(case == OPTIMAL && count > 0)
-      x.delete(n,n+count-1);
+    if(case != INFEASIBLE) {
+      xStandard=copy(x);
+      if(count > 0)
+        x.delete(n,n+count-1);
+    }
   }
 }

Modified: trunk/Master/texmf-dist/asymptote/simplex.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/simplex.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/simplex.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,6 +8,7 @@
   int case;
   real[] x;
   real cost;
+  bool dual=false;
 
   int m,n;
   int J;
@@ -43,7 +44,7 @@
 
   int iterate(real[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in bottom (reduced cost) row
+      // Bland's rule: first negative entry in reduced cost (bottom) row enters
       real[] Em=E[m];
       for(J=1; J <= N; ++J)
         if(Em[J] < 0) break;
@@ -67,7 +68,7 @@
           real r=E[i][0]/u;
           if(r <= t && (r < t || Bindices[i] < Bindices[I])) {
             t=r; I=i;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: exiting variable has smallest minimizing subscript
         }
       }
       if(I == -1)
@@ -82,8 +83,7 @@
 
   int iterateDual(real[][] E, int N, int[] Bindices) {
     while(true) {
-      // Find first negative entry in zeroth (basic variable) column
-      real[] Em=E[m];
+      // Bland's rule: negative variable with smallest subscript exits
       int I;
       for(I=0; I < m; ++I) {
         if(E[I][0] < 0) break;
@@ -92,23 +92,30 @@
       if(I == m)
         break;
 
+      for(int i=I+1; i < m; ++i) {
+        if(E[i][0] < 0 && Bindices[i] < Bindices[I])
+          I=i;
+      }
+
+      real[] Em=E[m];
+      real[] EI=E[I];
       int J=0;
       real t;
       for(int j=1; j <= N; ++j) {
-        real u=E[I][j];
+        real u=EI[j];
         if(u < -EpsilonA) {
-          t=-E[m][j]/u;
+          t=-Em[j]/u;
           J=j;
           break;
         }
       }
       for(int j=J+1; j <= N; ++j) {
-        real u=E[I][j];
+        real u=EI[j];
         if(u < -EpsilonA) {
-          real r=-E[m][j]/u;
-          if(r <= t && (r < t || j < J)) {
+          real r=-Em[j]/u;
+          if(r < t) {
             t=r; J=j;
-          } // Bland's rule: exiting variable has smallest minimizing index
+          } // Bland's rule: smallest minimizing subscript enters
         }
       }
       if(J == 0)
@@ -125,9 +132,7 @@
   // where A is an m x n matrix, x is a vector of n non-negative numbers,
   // b is a vector of length m, and c is a vector of length n.
   // Can set phase1=false if the last m columns of A form the identity matrix.
-  void operator init(real[] c, real[][] A, real[] b, bool phase1=true,
-                     bool dual=false) {
-    if(dual) phase1=false;
+  void operator init(real[] c, real[][] A, real[] b, bool phase1=true) {
     static real epsilon=sqrt(realEpsilon);
     real normA=norm(A);
     real epsilonA=100.0*realEpsilon*normA;
@@ -324,11 +329,11 @@
       real[] ai=a[i];
       for(int j=0; j < k; ++j)
         ai[n+j]=0;
+      int si=s[i];
       if(k < count)
-        ai[n+k]=-s[i];
+        ai[n+k]=-si;
       for(int j=k+1; j < count; ++j)
         ai[n+j]=0;
-      int si=s[i];
       if(si == 0) phase1=true;
       else {
         ++k;
@@ -339,19 +344,18 @@
             for(int j=0; j < n+count; ++j)
               ai[j]=-ai[j];
           }
-        } else if(si*bi > 0) {
-          if(dual && si == 1) {
-            b[i]=-bi;
-            s[i]=-1;
-            for(int j=0; j < n+count; ++j)
-              ai[j]=-ai[j];
-          } else
-            phase1=true;
-        }
+        } else if(dual && si == 1) {
+          b[i]=-bi;
+          s[i]=-1;
+          for(int j=0; j < n+count; ++j)
+            ai[j]=-ai[j];
+        } else if(si*bi > 0)
+          phase1=true;
       }
     }
 
-    operator init(concat(c,array(count,0.0)),a,b,phase1,dual);
+    if(dual) phase1=false;
+    operator init(concat(c,array(count,0.0)),a,b,phase1);
 
     if(case == OPTIMAL && count > 0)
       x.delete(n,n+count-1);

Modified: trunk/Master/texmf-dist/asymptote/slide.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/slide.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/slide.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -309,7 +309,7 @@
 
 void center(string s, pen p=itempen)
 {
-  remark("\center "+s,p);
+  remark(center=true,"\center "+s,p);
 }
 
 void vbox(string s, pen p=itempen)

Modified: trunk/Master/texmf-dist/asymptote/slopefield.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/slopefield.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/slopefield.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -19,7 +19,6 @@
       draw(pic,(cp.x-mp,cp.y-mp*slope)--(cp.x+mp,cp.y+mp*slope),p,arrow); 
     }
   }
-  clip(pic,box(a,b));
   return pic;
 }
 

Modified: trunk/Master/texmf-dist/asymptote/three.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1065,7 +1065,7 @@
 
 triple dir(path3 p, path3 h)
 {
-  return 0.5*(dir(p)+dir(h));
+  return unit(dir(p)+dir(h));
 }
 
 // return the point on path3 p at arclength L
@@ -1880,6 +1880,14 @@
   return c >= 0 ? identity(4) : diagonal(1,-1,-1,1);
 }
 
+// Align Label with normal in direction dir.
+Label align(Label L, triple dir)
+{
+  Label L=L.copy();
+  L.transform3(align(unit(dir)));
+  return L;
+}
+
 // return a rotation that maps X,Y to the projection plane.
 transform3 transform3(projection P=currentprojection)
 {
@@ -2554,25 +2562,6 @@
     Format(t[0][3])+sep+Format(t[1][3])+sep+Format(t[2][3]);
 }
 
-void writeJavaScript(string name, string preamble, string script) 
-{
-  file out=output(name);
-  write(out,preamble);
-  if(script != "") {
-    write(out,endl);
-    file in=input(script);
-    while(true) {
-      string line=in;
-      if(eof(in)) break;
-      write(out,line,endl);
-    }
-  }
-  close(out);
-  if(settings.verbose > 1) write("Wrote "+name);
-  if(!settings.inlinetex)
-    file3.push(name);
-}
-
 pair viewportmargin(pair lambda)
 {
   return maxbound(0.5*(viewportsize-lambda),viewportmargin);
@@ -2593,7 +2582,7 @@
   if(script == "") script=defaultembed3Dscript;
 
   if(P.infinity) {
-    if(viewplanesize==0) {
+    if(viewplanesize == 0) {
       triple lambda=max3(f)-min3(f);
       pair margin=viewportmargin((lambda.x,lambda.y));
       viewplanesize=(max(lambda.x+2*margin.x,lambda.y+2*margin.y))/P.zoom;
@@ -2645,6 +2634,7 @@
   pair viewportmargin;
   transform3 T=identity4;
   picture pic2;
+  bool keepAspect=true;
   
   void operator init(frame f, real width, real height,
                      projection P=currentprojection) {
@@ -2660,6 +2650,7 @@
                      projection P=currentprojection) {
     real xsize3=pic.xsize3, ysize3=pic.ysize3, zsize3=pic.zsize3;
     bool warn=true;
+    this.keepAspect=keepAspect;
         
     if(xsize3 == 0 && ysize3 == 0 && zsize3 == 0) {
       xsize3=ysize3=zsize3=max(xsize,ysize);
@@ -2678,18 +2669,18 @@
 
     if(!P.absolute) {
       this.P=t*P;
+      if(this.P.autoadjust || this.P.infinity)
+        adjusted=adjusted | this.P.adjust(m,M);
       if(this.P.center && settings.render != 0) {
         triple target=0.5*(m+M);
         this.P.target=target;
         this.P.calculate();
       }
-      if(this.P.autoadjust || this.P.infinity) 
-        adjusted=adjusted | this.P.adjust(m,M);
     }
 
     bool scale=xsize != 0 || ysize != 0;
     bool scaleAdjust=scale && this.P.autoadjust;
-    bool noAdjust=(this.P.absolute || !scaleAdjust);
+    bool noAdjust=this.P.absolute || !scaleAdjust;
 
     if(pic.bounds3.exact && noAdjust)
       this.P.bboxonly=false;
@@ -2812,9 +2803,11 @@
       triple m=min3(S.f);
       triple M=max3(S.f);
       triple lambda=M-m;
-      S.viewportmargin=viewportmargin((lambda.x,lambda.y));
-      S.width=ceil(lambda.x+2*S.viewportmargin.x);
-      S.height=ceil(lambda.y+2*S.viewportmargin.y);
+      if(S.keepAspect) {
+        S.viewportmargin=viewportmargin((lambda.x,lambda.y));
+        S.width=ceil(lambda.x+2*S.viewportmargin.x);
+        S.height=ceil(lambda.y+2*S.viewportmargin.y);
+      }
       orthoshift=(-0.5(m.x+M.x),-0.5*(m.y+M.y),0);
       S.f=shift(orthoshift)*S.f; // Eye will be at (0,0,0)
       inv=inverse(modelview);

Modified: trunk/Master/texmf-dist/asymptote/three_light.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_light.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_light.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -125,7 +125,7 @@
                              rgb(0.5,0.5,0.57)},specularfactor=3,
   new triple[] {(-2,-1.5,-0.5),(2,1.1,-2.5),(-0.5,0,2)});
 
-light Headlamp=light(gray(0.8),specular=gray(0.7),
+light Headlamp=light(white,specular=gray(0.7),
                      specularfactor=3,dir(42,48));
 
 currentlight=Headlamp;

Modified: trunk/Master/texmf-dist/asymptote/three_surface.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_surface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_surface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1374,6 +1374,10 @@
             bool primitive=false)
 {
   bool straight=s.straight && s.planar;
+
+  // Planar Bezier surfaces require extra precision in WebGL
+  int digits=s.planar && !straight ? 12 : settings.digits;
+
   if(s.colors.length > 0) {
     if(prc() && light.on())
         straight=false; // PRC vertex colors (for quads only) ignore lighting
@@ -1383,7 +1387,7 @@
   
   (s.triangular ? drawbeziertriangle : draw)
     (f,s.P,center,straight,m.p,m.opacity,m.shininess,
-     m.metallic,m.fresnel0,s.colors,interaction.type,primitive);
+     m.metallic,m.fresnel0,s.colors,interaction.type,digits,primitive);
 }
 
 void _draw(frame f, path3 g, triple center=O, material m,
@@ -1500,8 +1504,18 @@
     p.push(p[0]);
     s=tensor(s);        
   } else p=s.colors(m,light);
-  tensorshade(f,box(t*s.min(P),t*s.max(P)),m.diffuse(),
-              p,t*project(s.external(),P,1),t*project(s.internal(),P));
+  path g=t*project(s.external(),P,1);
+  pair[] internal=t*project(s.internal(),P);
+  pen fillrule=m.diffuse();
+  if(inside(g,internal[0],fillrule) && inside(g,internal[1],fillrule) &&
+     inside(g,internal[2],fillrule) && inside(g,internal[3],fillrule)) {
+    if(p[0] == p[1] && p[1] == p[2] && p[2] == p[3])
+      fill(f,g,fillrule+p[0]);
+    else
+      tensorshade(f,g,fillrule,p,internal);
+  } else {
+    tensorshade(f,box(t*s.min(P),t*s.max(P)),fillrule,p,g,internal);
+  }
 }
 
 restricted pen[] nullpens={nullpen};

Modified: trunk/Master/texmf-dist/asymptote/three_tube.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/three_tube.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/three_tube.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -159,10 +159,10 @@
     triple c0=postcontrol(g,0);
     triple c1=precontrol(g,1);
     triple z1=point(g,1);
-    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1));
+    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1),r);
     surface[] s;
     void Split(triple z0, triple c0, triple c1, triple z1,
-               real depth=mantissaBits) {
+               int depth=mantissaBits) {
       if(depth > 0) {
         pair threshold(triple z0, triple c0, triple c1) {
           triple u=c1-z0;

Modified: trunk/Master/texmf-dist/asymptote/tube.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/tube.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/tube.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,10 +14,10 @@
 void render(path3 s, real r, void f(path3, real))
 {
   void Split(triple z0, triple c0, triple c1, triple z1, real t0=0, real t1=1,
-             real depth=mantissaBits) {
+             int depth=mantissaBits) {
     if(depth > 0) {
       real S=straightness(z0,c0,c1,z1);
-      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1)))) {
+      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1),r))) {
         --depth;
         triple m0=0.5*(z0+c0);
         triple m1=0.5*(c0+c1);

Deleted: trunk/Master/texmf-dist/asymptote/unicode.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/unicode.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/unicode.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,2 +0,0 @@
-usepackage("ucs");
-usepackage("inputenc","utf8x");

Modified: trunk/Master/texmf-dist/asymptote/version.asy
===================================================================
--- trunk/Master/texmf-dist/asymptote/version.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/version.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1 +1 @@
-string VERSION="2.65";
+string VERSION="2.69";

Modified: trunk/Master/texmf-dist/asymptote/webgl/asygl.js
===================================================================
--- trunk/Master/texmf-dist/asymptote/webgl/asygl.js	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/asymptote/webgl/asygl.js	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 /*@license
  AsyGL: Render Bezier patches and triangles via subdivision with WebGL.
-  Copyright 2019: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
+  Copyright 2019-2020: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
   University of Alberta
 
 This program is free software; you can redistribute it and/or modify
@@ -36,4 +36,4 @@
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.*/
-let vertex="\nattribute vec3 position;\n#ifdef WIDTH\nattribute float width;\n#endif\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\nattribute float materialIndex;\n#ifdef COLOR\nattribute vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\n#endif\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\nvarying vec4 emissive;\n\nstruct Material {\n  vec4 diffuse,emissive,specular;\n  vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvoid main(void)\n{\n  vec4 v=vec4(position,1.0);\n  gl_Position=projViewMat*v;\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n  ViewPosition=(viewMat*v).xyz;\n#endif      \n  Normal=normalize(normal*normMat);\n        \n  Material m;\n#ifdef TRANSPARENT\n  m=Materials[int(abs(materialIndex))-1];\n  emissive=m.emissive;\n  if(materialIndex >= 0.0) {\n    diffuse=m.diffuse;\n  } else {\n    diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n  }\n#else\n  m=Materials[int(materialIndex)];\n  emissive=m.emissive;\n#ifdef COLOR\n  diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n#else\n  diffuse=m.diffuse;\n#endif\n#endif\n  specular=m.specular.rgb;\n  vec4 parameters=m.parameters;\n  roughness=1.0-parameters[0];\n  metallic=parameters[1];\n  fresnel0=parameters[2];\n#else\n  emissive=Materials[int(materialIndex)].emissive;\n#endif\n#ifdef WIDTH\n  gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\n\nfloat Roughness2;\nvec3 normal;\n\nstruct Light {\n  vec3 direction;\n  vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\nfloat NDF_TRG(vec3 h)\n{\n  float ndoth=max(dot(normal,h),0.0);\n  float alpha2=Roughness2*Roughness2;\n  float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n  return denom != 0.0 !
 ? alpha2/(denom*denom) : 0.0;\n}\n    \nfloat GGX_Geom(vec3 v)\n{\n  float ndotv=max(dot(v,normal),0.0);\n  float ap=1.0+Roughness2;\n  float k=0.125*ap*ap;\n  return ndotv/((ndotv*(1.0-k))+k);\n}\n    \nfloat Geom(vec3 v, vec3 l)\n{\n  return GGX_Geom(v)*GGX_Geom(l);\n}\n    \nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n  float a=1.0-max(dot(h,v),0.0);\n  float b=a*a;\n  return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n    \n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n  vec3 lambertian=diffuse.rgb;\n  vec3 h=normalize(lightDirection+viewDirection);\n      \n  float omegain=max(dot(viewDirection,normal),0.0);\n  float omegali=max(dot(lightDirection,normal),0.0);\n      \n  float D=NDF_TRG(h);\n  float G=Geom(viewDirection,lightDirection);\n  float F=Fresnel(h,viewDirection,fresnel0);\n      \n  float denom=4.0*omegain*omegali;\n  float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n      \n  vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n  vec3 metal=rawReflectance*diffuse.rgb;\n      \n  return mix(dielectric,metal,metallic);\n}\n#endif\nvarying vec4 emissive;\n    \nvoid main(void)\n{\n#if defined(NORMAL) && nlights > 0\n  normal=normalize(Normal);\n  normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n  vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n  vec3 viewDir=-normalize(ViewPosition);\n#endif\n  Roughness2=roughness*roughness;\n  vec3 color=emissive.rgb;\n  for(int i=0; i < nlights; ++i) {\n    Light Li=Lights[i];\n    vec3 L=Li.direction;\n    float cosTheta=max(dot(normal,L),0.0);\n    vec3 radiance=cosTheta*Li.color;\n    color += BRDF(viewDir,L)*radiance;\n  }\n  gl_FragColor=vec4(color,diffuse.a);\n#else\n  gl_FragColor=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}("undefined"!=typeof self?self:this,function(){return function(t){!
 var e={};function i(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,a){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=a*Math.max(1,Math.abs(t),Math.abs(e))};var a=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var a=n(i(2)),r=n(i(3));function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=a,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=d*s-o*l,m=-d*n+o*h,f=l*n-s*h,u=i*c+a*m+r*f;if(!u)return null;return u=1/u,t[0]=c*u,t[1]=(-d*a+r*l)*u,t[2]=(o*a-r*s)*u,t[3]=m*u,t[4]=(d*i-r*h)*u,t[5]=(-o*i+r*n)*u,t[6]=f*u,t[7]=(-l*i+a*h)*u,t[8]=(s*i-a*n)*u,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]!
 =1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],g=e[15],w=i*o-a*s,x=i*h-r*s,M=i*l-n*s,b=a*h-r*o,A=a*l-n*o,S=r*l-n*h,P=d*p-c*u,R=d*v-m*u,T=d*g-f*u,y=c*v-m*p,D=c*g-f*p,I=m*g-f*v,z=w*I-x*D+M*y+b*T-A*R+S*P;if(!z)return null;return z=1/z,t[0]=(o*I-h*D+l*y)*z,t[1]=(r*D-a*I-n*y)*z,t[2]=(p*S-v*A+g*b)*z,t[3]=(m*A-c*S-f*b)*z,t[4]=(h*T-s*I-l*R)*z,t[5]=(i*I-r*T+n*R)*z,t[6]=(v*M-u*S-g*x)*z,t[7]=(d*S-m*M+f*x)*z,t[8]=(s*D-o*T+l*P)*z,t[9]=(a*T-i*D-n*P)*z,t[10]=(u*A-p*M+g*w)*z,t[11]=(c*M-d*A-f*w)*z,t[12]=(o*R-s*y-h*P)*z,t[13]=(i*y-a*R+r*P)*z,t[14]=(p*x-u*b-v*w)*z,t[15]=(d*b-c*x+m*w)*z,t},e.multiply=r,e.translate=function(t,e,i){var a=i[0],r=i[1],n=i[2],s=void 0,o=void 0,h=void 0,l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0;e===t?(t[12]=e[0]*a+e[4]*r+e[8]*n+e[12],t[13]=e[1]*a+e[5]*r+e[9]*n+e[13],t[14]=e[2]*a+e[6]*r+e[10]*n+e[14],t[15]=e[3]*a+e[7]*r+e[11]*n+e[15]):(s=e[0],o=e[1],h=e[2],l=e[3],d=e[4],c=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],g=e[11],t[0]=s,t[1]=o,t[2]=h,t[3]=l,t[4]=d,t[5]=c,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=g,t[12]=s*a+d*r+u*n+e[12],t[13]=o*a+c*r+p*n+e[13],t[14]=h*a+m*r+v*n+e[14],t[15]=l*a+f*r+g*n+e[15]);return t},e.rotate=function(t,e,i,r){var n=r[0],s=r[1],o=r[2],h=Math.sqrt(n*n+s*s+o*o),l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0,w=void 0,x=void 0,M=void 0,b=void 0,A=void 0,S=void 0,P=void 0,R=void 0,T=void 0,y=void 0,D=void 0,I=void 0,z=void 0,E=void 0,O=void 0;if(Math.abs(h)<a.EPSILON)return null;n*=h=1/h,s*=h,o*=h,l=Math.sin(i),d=Math.cos(i),c=1-d,m=e[0],f=e[1],u=e[2],p=e[3],v=e[4],g=e[5],w=e[6],x=e[7],M=e[8],b=e[9],A=e[10],S=e[11],P=n*n*c+d,R=s*n*c+o*l,T=o*n*c-s*l,y=n*s*c-o*l,D!
 =s*s*c+d,I=o*s*c+n*l,z=n*o*c+s*l,E=s*o*c-n*l,O=o*o*c+d,t[0]=m*P+v*R+M*T,t[1]=f*P+g*R+b*T,t[2]=u*P+w*R+A*T,t[3]=p*P+x*R+S*T,t[4]=m*y+v*D+M*I,t[5]=f*y+g*D+b*I,t[6]=u*y+w*D+A*I,t[7]=p*y+x*D+S*I,t[8]=m*z+v*E+M*O,t[9]=f*z+g*E+b*O,t[10]=u*z+w*E+A*O,t[11]=p*z+x*E+S*O,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r=i[0],n=i[1],s=i[2],o=Math.sqrt(r*r+n*n+s*s),h=void 0,l=void 0,d=void 0;if(Math.abs(o)<a.EPSILON)return null;return r*=o=1/o,n*=o,s*=o,h=Math.sin(e),l=Math.cos(e),d=1-l,t[0]=r*r*d+l,t[1]=n*r*d+s*h,t[2]=s*r*d-n*h,t[3]=0,t[4]=r*n*d-s*h,t[5]=n*n*d+l,t[6]=s*n*d+r*h,t[7]=0,t[8]=r*s*d+n*h,t[9]=n*s*d-r*h,t[10]=s*s*d+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,a,r,n,s){var o=1/(i-e),h=1/(r-a),l=1/(n-s);return t[0]=2*n*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*n*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+a)*h,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t},e.ortho=function(t,e,i,a,r,n,s){var o=1/(e-i),h=1/(a-r),l=1/(n-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+a)*h,t[14]=(s+n)*l,t[15]=1,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var a=e[0],r=e[1],n=e[2],s=e[3],o=e[4],h=e[5],l=e[6],d=e[7],c=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],g=e[14],w=e[15],x=i[0],M=i[1],b=i[2],A=i[3];return t[0]=x*a+M*o+b*c+A*p,t[1]=x*r+M*h+b*m+A*v,t[2]=x*n+M*l+b*f+A*g,t[3]=x*s+M*d+b*u+A*w,x=i[4],M=i[5],b=i[6],A=i[7],t[4]=x*a+M*o+b*c+A*p,t[5]=x*r+M*h+b*m+A*v,t[6]=x*n+M*l+b*f+A*g,t[7]=x*s+M*d+b*u+A*w,x=i[8],M=i[9],b=i[10],A=i[11],t[8]=x*a+M*o+b*c+A*p,t[9]=x*r+M*h+b*m+A*v,t[10]=x*n+M*l+b*f+A*g,t[11]=x*s+M*d+b*u+A*w,x=i[12],M=i[13],b=i[14],A=i[15],t[12]=x*a+M*o+b*c+A*p,t[13!
 ]=x*r+M*h+b*m+A*v,t[14]=x*n+M*l+b*f+A*g,t[15]=x*s+M*d+b*u+A*w,t}}])});let canvasWidth,canvasHeight,b,B,angle,Zoom0,viewportmargin,zoomFactor,zoomPinchFactor,zoomPinchCap,zoomStep,shiftHoldDistance,shiftWaitTime,vibrateTime,embedded,canvas,gl,alpha,offscreen,context,maxMaterials,halfCanvasWidth,halfCanvasHeight,Zoom,P=[],Materials=[],Lights=[],Centers=[],Background=[1,1,1,1],absolute=!1,viewportshift=[0,0],nlights=0,Nmaterials=2,materials=[],pixel=.75,FillFactor=.1,maxViewportWidth=window.innerWidth,maxViewportHeight=window.innerHeight;const windowTrim=10;let lastzoom,H,zmin,zmax,size2,ArcballFactor,positionBuffer,materialBuffer,colorBuffer,indexBuffer,resizeStep=1.2,third=1/3,rotMat=mat4.create(),projMat=mat4.create(),viewMat=mat4.create(),projViewMat=mat4.create(),normMat=mat3.create(),viewMat3=mat3.create(),cjMatInv=mat4.create(),T=mat4.create(),center={x:0,y:0,z:0},shift={x:0,y:0},viewParam={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},remesh=!0,wireframe=0,mouseDownOrTouchActive=!1,lastMouseX=null,lastMouseY=null,touchID=null,Positions=[],Normals=[],Colors=[],Indices=[];class Material{constructor(t,e,i,a,r,n){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=a,this.metallic=r,this.fresnel0=n}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Materials["+e+"]."+i);gl.uniform4fv(i("diffuse"),new Float32Array(this.diffuse)),gl.uniform4fv(i("emissive"),new Float32Array(this.emissive)),gl.uniform4fv(i("specular"),new Float32Array(this.specular)),gl.uniform4f(i("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let indexExt,TRIANGLES,material0Data,material1Data,materialData,colorData,transparentData,triangleData,materialIndex,enumPointLight=1,enumDirectionalLight=2;class Light{constructor(t,e){this.direction=t,this.color=e}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Lights["+e+"]."+i);gl.uniform3fv(i("direction"),new Float32Array(this.direction)),gl.uniform3fv(i("color"),new Float32Array(this.color))}}function initShaders(){let t=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);maxMaterials=!
 Math.floor((t-14)/4),Nmaterials=Math.min(Math.max(Nmaterials,Materials.length),maxMaterials),pixelShader=initShader(["WIDTH"]),materialShader=initShader(["NORMAL"]),colorShader=initShader(["NORMAL","COLOR"]),transparentShader=initShader(["NORMAL","COLOR","TRANSPARENT"])}function deleteShaders(){gl.deleteProgram(transparentShader),gl.deleteProgram(colorShader),gl.deleteProgram(materialShader),gl.deleteProgram(pixelShader)}function setBuffers(){positionBuffer=gl.createBuffer(),materialBuffer=gl.createBuffer(),colorBuffer=gl.createBuffer(),indexBuffer=gl.createBuffer()}function noGL(){gl||alert("Could not initialize WebGL")}function saveAttributes(){let t=window.top.document.asygl[alpha];t.gl=gl,t.nlights=Lights.length,t.Nmaterials=Nmaterials,t.maxMaterials=maxMaterials,t.pixelShader=pixelShader,t.materialShader=materialShader,t.colorShader=colorShader,t.transparentShader=transparentShader}function restoreAttributes(){let t=window.top.document.asygl[alpha];gl=t.gl,nlights=t.nlights,Nmaterials=t.Nmaterials,maxMaterials=t.maxMaterials,pixelShader=t.pixelShader,materialShader=t.materialShader,colorShader=t.colorShader,transparentShader=t.transparentShader}function initGL(){if(alpha=Background[3]<1,embedded){let t=window.top.document;null==t.asygl&&(t.asygl=Array(2)),context=canvas.getContext("2d"),(offscreen=t.offscreen)||(offscreen=t.createElement("canvas"),t.offscreen=offscreen),t.asygl[alpha]&&t.asygl[alpha].gl?(restoreAttributes(),(Lights.length!=nlights||Math.min(Materials.length,maxMaterials)>Nmaterials)&&(initShaders(),saveAttributes())):((gl=offscreen.getContext("webgl",{alpha:alpha}))||noGL(),initShaders(),t.asygl[alpha]={},saveAttributes())}else(gl=canvas.getContext("webgl",{alpha:alpha}))||noGL(),initShaders();setBuffers(),indexExt=gl.getExtension("OES_element_index_uint"),TRIANGLES=gl.TRIANGLES,material0Data=new vertexBuffer(gl.POINTS),material1Data=new vertexBuffer(gl.LINES),materialData=new vertexBuffer,colorData=new vertexBuffer,transparentData=new vertexBuffer,triangleData=new vertexBuffer}function get!
 Shader(t,e,i,a=[]){let r=`#version 100\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n#else\n  precision mediump float;\n#endif\n  #define nlights ${0==wireframe?Lights.length:0}\n\n  const int Nlights=${Math.max(Lights.length,1)};\n\n  #define Nmaterials ${Nmaterials}\n`;orthographic&&(r+="#define ORTHOGRAPHIC\n"),a.forEach(t=>r+="#define "+t+"\n");let n=t.createShader(i);return t.shaderSource(n,r+e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)}function drawBuffer(t,e,i=t.indices){if(0==t.indices.length)return;let a=e!=pixelShader;setUniforms(t,e),gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(t.vertices),gl.STATIC_DRAW),gl.vertexAttribPointer(positionAttribute,3,gl.FLOAT,!1,a?24:16,0),a&&Lights.length>0?gl.vertexAttribPointer(normalAttribute,3,gl.FLOAT,!1,24,12):pixel&&gl.vertexAttribPointer(widthAttribute,1,gl.FLOAT,!1,16,12),gl.bindBuffer(gl.ARRAY_BUFFER,materialBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Int16Array(t.materialIndices),gl.STATIC_DRAW),gl.vertexAttribPointer(materialAttribute,1,gl.SHORT,!1,2,0),e!=colorShader&&e!=transparentShader||(gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Uint8Array(t.colors),gl.STATIC_DRAW),gl.vertexAttribPointer(colorAttribute,4,gl.UNSIGNED_BYTE,!0,0,0)),gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer),gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexExt?new Uint32Array(i):new Uint16Array(i),gl.STATIC_DRAW),gl.drawElements(a?wireframe?gl.LINES:t.type:gl.POINTS,i.length,indexExt?gl.UNSIGNED_INT:gl.UNSIGNED_SHORT,0)}class vertexBuffer{constructor(t){this.type=t||TRIANGLES,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.nver!
 tices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(materialIndex),this.nvertices++}iVertex(t,e,i,a=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=materialIndex;let n=4*t;this.colors[n]=a[0],this.colors[n+1]=a[1],this.colors[n+2]=a[2],this.colors[n+3]=a[3],this.indices.push(t)}append(t){append(this.vertices,t.vertices),append(this.materialIndices,t.materialIndices),append(this.colors,t.colors),appendOffset(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function append(t,e){let i=t.length,a=e.length;t.length+=a;for(let r=0;r<a;++r)t[i+r]=e[r]}function appendOffset(t,e,i){let a=t.length,r=e.length;t.length+=e.length;for(let n=0;n<r;++n)t[a+n]=e[n]+i}class Geometry{constructor(){this.data=new vertexBuffer,this.Onscreen=!1,this.m=[]}offscreen(t){let e=projViewMat,i=t[0],a=i[0],r=i[1],n=i[2],s=1/(e[3]*a+e[7]*r+e[11]*n+e[15]);this.x=this.X=(e[0]*a+e[4]*r+e[8]*n+e[12])*s,this.y=this.Y=(e[1]*a+e[5]*r+e[9]*n+e[13])*s;for(let i=1,a=t.length;i<a;++i){let a=t[i],r=a[0],n=a[1],s=a[2],o=1/(e[3]*r+e[7]*n+e[11]*s+e[15]),h=(e[0]*r+e[4]*n+e[8]*s+e[12])*o,l=(e[1]*r+e[5]*n+e[9]*s+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],a=this.c[2],r=t[0]-e,n=t[1]-i,s=t[2]-a;return[r*normMat[0]+n*normMat[3]+s*normMat[6]+e,r*normMat[1]+n*normMat[4]+s*normMat[7]+i,r*normMat[2]+n*normMat[5]+s*normMat[8]+a]}Tcorn!
 ers(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null==t.materialTable[this.MaterialIndex]&&(t.materials.length>=Nmaterials&&e(),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(Materials[this.MaterialIndex])),materialIndex=t.materialTable[this.MaterialIndex]}render(){let t;if(this.setMaterialIndex(),0==this.CenterIndex?t=corners(this.Min,this.Max):(this.c=Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return void this.data.clear();let e,i=this.controlpoints;if(0==this.CenterIndex){if(!remesh&&this.Onscreen)return void this.append();e=i}else{let t=i.length;e=Array(t);for(let a=0;a<t;++a)e[a]=this.T(i[a])}let a=orthographic?1:this.Min[2]/B[2],r=pixel*Math.hypot(a*(viewParam.xmax-viewParam.xmin),a*(viewParam.ymax-viewParam.ymin))/size2;this.res2=r*r,this.Epsilon=FillFactor*r,this.data.clear(),this.Onscreen=!0,this.process(e)}}class BezierPatch extends Geometry{constructor(t,e,i,a,r,n){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.color=n,this.CenterIndex=e;let s=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==s||4==s?t+n[3][3]<1020:t<765}else this.transparent=Materials[i].diffuse[3]<1;this.MaterialIndex=i,this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data),this.L2norm(this.controlpoints)}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.color?this.setMaterial(colorData,drawColor):this.setMaterial(materialData,drawMaterial)}L2norm(t){let e=t[0];this.epsilon=0;let i=t.length;for(let a=1;a<i;++a)this.epsilon=Math.max(this.epsilon,abs2([t[a][0]-e[0],t[a][1]-e[1],t[a][2]-e[2]]));this.epsilon*=Number.EPSILON}processTriangle(t){let e=t[0],i=t[1],a=t[2],r=unit(cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-e[0],a[1]-e[1],a[2]-e[2]]));if(!this.offscreen([e,i,a])){let t,n,s;this.color?(t=this.data.Vertex(e,r!
 ,this.color[0]),n=this.data.Vertex(i,r,this.color[1]),s=this.data.Vertex(a,r,this.color[2])):(t=this.vertex(e,r),n=this.vertex(i,r),s=this.vertex(a,r)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],a=t[2],r=t[3],n=cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-i[0],a[1]-i[1],a[2]-i[2]]),s=cross([a[0]-r[0],a[1]-r[1],a[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=unit([n[0]+s[0],n[1]+s[1],n[2]+s[2]]);if(!this.offscreen([e,i,a,r])){let t,n,s,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),n=this.data.Vertex(i,o,this.color[1]),s=this.data.Vertex(a,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),n=this.vertex(i,o),s=this.vertex(a,o),h=this.vertex(r,o)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,a,r){new BezierCurve([t[e],t[i],t[a],t[r]],0,materialIndex,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=wireframe&&(materialIndex=this.color?-1-materialIndex:1+materialIndex),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==wireframe)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],a=t[12],r=t[15],n=this.normal(i,t[2],t[1],e,t[4],t[8],a);abs2(n)<this.epsilon&&abs2(n=this.normal(i,t[2],t[1],e,t[13],t[14],r))<this.epsilon&&(n=this.normal(r,t[11],t[7],i,t[4],t[8],a));let s=this.normal(e,t[4],t[8],a,t[13],t[14],r);abs2(s)<th!
 is.epsilon&&abs2(s=this.normal(e,t[4],t[8],a,t[11],t[7],i))<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r));let o=this.normal(a,t[13],t[14],r,t[11],t[7],i);abs2(o)<this.epsilon&&abs2(o=this.normal(a,t[13],t[14],r,t[2],t[1],e))<this.epsilon&&(o=this.normal(e,t[4],t[8],a,t[11],t[7],i));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(abs2(h)<this.epsilon&&abs2(h=this.normal(r,t[11],t[7],i,t[4],t[8],a))<this.epsilon&&(h=this.normal(a,t[13],t[14],r,t[2],t[1],e)),this.color){let l=this.color[0],d=this.color[1],c=this.color[2],m=this.color[3],f=this.data.Vertex(e,n,l),u=this.data.Vertex(a,s,d),p=this.data.Vertex(r,o,c),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,a,r,i,!1,!1,!1,!1,l,d,c,m)}else{let l=this.vertex(e,n),d=this.vertex(a,s),c=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,d,c,m,e,a,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):this.color?colorData.append(this.data):materialData.append(this.data)}Render(t,e,i,a,r,n,s,o,h,l,d,c,m,f,u,p,v){let g=this.Distance(t);if(g[0]<this.res2&&g[1]<this.res2)this.offscreen([n,s,o])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a))),this.offscreen([n,o,h])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(a),this.data.indices.push(r)):(this.data.indices.push(a),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let w=t[0],x=t[3],M=t[12],b=t[15];if(g[0]<this.res2){let g=new Split3(w,t[1],t[2],x),A=new Split3(t[4],t[5],t[6],t[7]),S=new Split3(t[8],t[9],t[10],t[11]),P=new Split3(M,t[13],t[14],b),R=[w,g.m0,g.m3,g.m5,t[4],A.m0,A.m3,A.m5,t[8],S.m0,S.m3,S.m5,M,P.m0,P.m3,P.m5],T=[g.m5,g.m4,g.m2,x,A.m5,A.m4,A.m2,t[7],S.m5,S.m4,S.m2,t[11],P.m5,P.m4,P.m2,b],y=this.normal(R[12],R[13],R[14],R[15],R[11],R[7],R[3]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[12],R[13],R[1!
 4],R[15],R[2],R[1],R[0]))<=this.epsilon&&(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]));let D=this.normal(T[3],T[2],T[1],T[0],T[4],T[8],T[12]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[3],T[2],T[1],T[0],T[13],T[14],T[15]))<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]));let I=this.Epsilon,z=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(T[12],T[8],T[4],T[0]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=R[15];let E=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(R[3],R[7],R[11],R[15]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[0];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),g[e]=.5*(v[e]+f[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,i,w,x,n,s,z,E,l,d,!1,m,f,u,t,g),this.Render(T,x,w,a,r,E,z,o,h,!1,d,c,m,g,t,p,v)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,i,t,f,n,s,z,E,l,d,!1,m),this.Render(T,f,t,a,r,E,z,o,h,!1,d,c,m)}return}if(g[1]<this.res2){let g=new Split3(w,t[4],t[8],M),A=new Split3(t[1],t[5],t[9],t[13]),S=new Split3(t[2],t[6],t[10],t[14]),P=new Split3(x,t[7],t[11],b),R=[w,t[1],t[2],x,g.m0,A.m0,S.m0,P.m0,g.m3,A.m3,S.m3,P.m3,g.m5,A.m5,S.m5,P.m5],T=[g.m5,A.m5,S.m5,P.m5,g.m4,A.m4,S.m4,P.m4,g.m2,A.m2,S.m2,P.m2,M,t[13],t[14],b],y=this.normal(R[0],R[4],R[8],R[12],R[13],R[14],R[15]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]))<=this.epsilon&&(y=this.normal(R[3],R[2],R[1],R[0],R[13],R[14],R[15]));let D=this.normal(T[15],T[11],T[7],T[3],T[2],T[1],T[0]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]))<=this.epsilon&&(D=this.normal(T[12],T[13],T[14],T[15],T[2],T[1],T[0]));let I=this.Epsilon,z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(T[0],T[1],T[2],T[3]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}el!
 se z=R[12];let E=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(R[15],R[14],R[13],R[12]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[3];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(p[e]+v[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,w,x,r,n,z,E,h,l,!1,c,m,f,t,g,v),this.Render(T,w,i,a,x,z,s,o,E,l,d,c,!1,t,u,p,g)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,t,f,r,n,z,E,h,l,!1,c,m),this.Render(T,t,i,a,f,z,s,o,E,l,d,c,!1)}return}let A=new Split3(w,t[1],t[2],x),S=new Split3(t[4],t[5],t[6],t[7]),P=new Split3(t[8],t[9],t[10],t[11]),R=new Split3(M,t[13],t[14],b),T=new Split3(w,t[4],t[8],M),y=new Split3(A.m0,S.m0,P.m0,R.m0),D=new Split3(A.m3,S.m3,P.m3,R.m3),I=new Split3(A.m5,S.m5,P.m5,R.m5),z=new Split3(A.m4,S.m4,P.m4,R.m4),E=new Split3(A.m2,S.m2,P.m2,R.m2),O=new Split3(x,t[7],t[11],b),L=[w,A.m0,A.m3,A.m5,T.m0,y.m0,D.m0,I.m0,T.m3,y.m3,D.m3,I.m3,T.m5,y.m5,D.m5,I.m5],N=[T.m5,y.m5,D.m5,I.m5,T.m4,y.m4,D.m4,I.m4,T.m2,y.m2,D.m2,I.m2,M,R.m0,R.m3,R.m5],_=[I.m5,z.m5,E.m5,O.m5,I.m4,z.m4,E.m4,O.m4,I.m2,z.m2,E.m2,O.m2,R.m5,R.m4,R.m2,b],B=[A.m5,A.m4,A.m2,x,I.m0,z.m0,E.m0,O.m0,I.m3,z.m3,E.m3,O.m3,I.m5,z.m5,E.m5,O.m5],V=L[15],C=this.normal(L[0],L[4],L[8],L[12],L[13],L[14],L[15]);abs2(C)<this.epsilon&&abs2(C=this.normal(L[0],L[4],L[8],L[12],L[11],L[7],L[3]))<this.epsilon&&(C=this.normal(L[3],L[2],L[1],L[0],L[13],L[14],L[15]));let F=this.normal(N[12],N[13],N[14],N[15],N[11],N[7],N[3]);abs2(F)<this.epsilon&&abs2(F=this.normal(N[12],N[13],N[14],N[15],N[2],N[1],N[0]))<this.epsilon&&(F=this.normal(N[0],N[4],N[8],N[12],N[11],N[7],N[3]));let H=this.normal(_[15],_[11],_[7],_[3],_[2],_[1],_[0]);abs2(H)<this.epsilon&&abs2(H=this.normal(_[15],_[11],_[7],_[3],_[4],_[8],_[12]))<this.epsilon&&(H=this.normal(_[12],_[13],_[14],_[15],_[2],_[1],_[0]));let G=this.normal(B[3],B[2],B[1],B[0],B[4],B[8],B[12]);abs2(G)<this.epsilon&&abs2(G=this.normal(B[3],B[2],B[1],B[0],B[13],B[14],B[15]))<t!
 his.epsilon&&(G=this.normal(B[15],B[11],B[7],B[3],B[4],B[8],B[12]));let U=this.normal(_[3],_[2],_[1],V,_[4],_[8],_[12]),W=this.Epsilon,Y=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(N[0],N[1],N[2],N[3]));Y=[Y[0]-W*t[0],Y[1]-W*t[1],Y[2]-W*t[2]]}else Y=L[12];let j=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(_[12],_[8],_[4],_[0]));j=[j[0]-W*t[0],j[1]-W*t[1],j[2]-W*t[2]]}else j=N[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(B[15],B[14],B[13],B[12]));k=[k[0]-W*t[0],k[1]-W*t[1],k[2]-W*t[2]]}else k=_[3];let Z=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(L[3],L[7],L[11],L[15]));Z=[Z[0]-W*t[0],Z[1]-W*t[1],Z[2]-W*t[2]]}else Z=B[0];if(f){let t=Array(4),g=Array(4),w=Array(4),x=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(u[e]+p[e]),w[e]=.5*(p[e]+v[e]),x[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+w[e]);let b=this.data.Vertex(Y,C,t),A=this.data.Vertex(j,F,g),S=this.data.Vertex(k,H,w),P=this.data.Vertex(Z,G,x),R=this.data.Vertex(V,U,M);this.Render(L,e,b,R,P,n,Y,V,Z,l,!1,!1,m,f,t,M,x),this.Render(N,b,i,A,R,Y,s,j,V,l,d,!1,!1,t,u,g,M),this.Render(_,R,A,a,S,V,j,o,k,!1,d,c,!1,M,g,p,w),this.Render(B,P,R,S,r,Z,V,k,h,!1,!1,c,m,x,M,w,v)}else{let t=this.vertex(Y,C),f=this.vertex(j,F),u=this.vertex(k,H),p=this.vertex(Z,G),v=this.vertex(V,U);this.Render(L,e,t,v,p,n,Y,V,Z,l,!1,!1,m),this.Render(N,t,i,f,v,Y,s,j,V,l,d,!1,!1),this.Render(_,v,f,a,u,V,j,o,k,!1,d,c,!1),this.Render(B,p,v,u,r,Z,V,k,h,!1,!1,c,m)}}}process3(t){if(1==wireframe)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],a=t[9],r=this.normal(a,t[5],t[2],e,t[1],t[3],i),n=this.normal(e,t[1],t[3],i,t[7],t[8],a),s=this.normal(i,t[7],t[8],a,t[5],t[2],e);if(this.color){let o=this.color[0],h=this!
 .color[1],l=this.color[2],d=this.data.Vertex(e,r,o),c=this.data.Vertex(i,n,h),m=this.data.Vertex(a,s,l);this.Render3(t,d,c,m,e,i,a,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,n),l=this.vertex(a,s);this.Render3(t,o,h,l,e,i,a,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,a,r,n,s,o,h,l,d,c,m){if(this.Distance3(t)<this.res2)this.offscreen([r,n,s])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],g=t[4],w=t[5],x=t[6],M=t[7],b=t[8],A=t[9],S=[.5*(A[0]+w[0]),.5*(A[1]+w[1]),.5*(A[2]+w[2])],P=[.5*(A[0]+b[0]),.5*(A[1]+b[1]),.5*(A[2]+b[2])],R=[.5*(w[0]+p[0]),.5*(w[1]+p[1]),.5*(w[2]+p[2])],T=[.5*(b[0]+g[0]),.5*(b[1]+g[1]),.5*(b[2]+g[2])],y=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],D=[.5*(p[0]+g[0]),.5*(p[1]+g[1]),.5*(p[2]+g[2])],I=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],z=[.5*(g[0]+v[0]),.5*(g[1]+v[1]),.5*(g[2]+v[2])],E=[.5*(M[0]+x[0]),.5*(M[1]+x[1]),.5*(M[2]+x[2])],O=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],L=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],N=[.5*(v[0]+x[0]),.5*(v[1]+x[1]),.5*(v[2]+x[2])],_=[.5*(S[0]+R[0]),.5*(S[1]+R[1]),.5*(S[2]+R[2])],B=[.5*(P[0]+y[0]),.5*(P[1]+y[1]),.5*(P[2]+y[2])],V=[.5*(R[0]+I[0]),.5*(R[1]+I[1]),.5*(R[2]+I[2])],C=[.5*T[0]+.25*(g[0]+u[0]),.5*T[1]+.25*(g[1]+u[1]),.5*T[2]+.25*(g[2]+u[2])],F=[.5*(y[0]+E[0]),.5*(y[1]+E[1]),.5*(y[2]+E[2])],H=[.5*D[0]+.25*(g[0]+M[0]),.5*D[1]+.25*(g[1]+M[1]),.5*D[2]+.25*(g[2]+M[2])],G=[.25*(w[0]+g[0])+.5*z[0],.25*(w[1]+g[1])+.5*z[1],.25*(w[2]+g[2])+.5*z[2]],U=[.5*(O[0]+L[0]),.5*(O[1]+L[1]),.5*(O[2]+L[2])],W=[.5*(L[0]+N[0]),.5*(L[1]+N[1]),.5*(L[2]+N[2])],Y=[.5*(H[0]+U[0]),.5*(H[1]+U[1]),.5*(H[2]+U[2])],j=[.5*(H[0]+W[0]),.5*(H[1]+W[1]),.5*(H[2]+W[2])],k=[.5*(U[0]+W[0]),.5*(U[1]+W[1]),.5*(U[2]+W[2])],Z=[.5*(G[0]+F[0]),.5*(G[1]+F[1]),.5*(G[2]+F[2])!
 ],X=[.5*(B[0]+G[0]),.5*(B[1]+G[1]),.5*(B[2]+G[2])],q=[.5*(B[0]+F[0]),.5*(B[1]+F[1]),.5*(B[2]+F[2])],K=[.5*(_[0]+C[0]),.5*(_[1]+C[1]),.5*(_[2]+C[2])],$=[.5*(V[0]+C[0]),.5*(V[1]+C[1]),.5*(V[2]+C[2])],Q=[.5*(_[0]+V[0]),.5*(_[1]+V[1]),.5*(_[2]+V[2])],J=[f,O,I,U,[.5*(D[0]+O[0]),.5*(D[1]+O[1]),.5*(D[2]+O[2])],V,k,Y,$,Q],tt=[k,W,j,N,[.5*(z[0]+E[0]),.5*(z[1]+E[1]),.5*(z[2]+E[2])],Z,x,E,F,q],et=[Q,K,_,X,[.5*(S[0]+T[0]),.5*(S[1]+T[1]),.5*(S[2]+T[2])],S,q,B,P,A],it=[q,X,Z,K,[.25*(R[0]+y[0]+L[0]+g[0]),.25*(R[1]+y[1]+L[1]+g[1]),.25*(R[2]+y[2]+L[2]+g[2])],j,Q,$,Y,k],at=this.normal(k,j,Z,q,X,K,Q),rt=this.normal(q,X,K,Q,$,Y,k),nt=this.normal(Q,$,Y,k,j,Z,q),st=this.Epsilon,ot=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!o)if(o=Straightness(x,M,b,A)<this.res2){let t=unit(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-st*t[0],ot[1]-st*t[1],ot[2]-st*t[2]]}else ot=q;let ht=[.5*(s[0]+r[0]),.5*(s[1]+r[1]),.5*(s[2]+r[2])];if(!h)if(h=Straightness(f,p,w,A)<this.res2){let t=unit(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-st*t[0],ht[1]-st*t[1],ht[2]-st*t[2]]}else ht=Q;let lt=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])];if(!l)if(l=Straightness(f,u,v,x)<this.res2){let t=unit(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-st*t[0],lt[1]-st*t[1],lt[2]-st*t[2]]}else lt=k;if(d){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(c[e]+m[e]),f[e]=.5*(m[e]+d[e]),u[e]=.5*(d[e]+c[e]);let p=this.data.Vertex(ot,at,t),v=this.data.Vertex(ht,rt,f),g=this.data.Vertex(lt,nt,u);this.Render3(J,e,g,v,r,lt,ht,!1,h,l,d,u,f),this.Render3(tt,g,i,p,lt,n,ot,o,!1,l,u,c,t),this.Render3(et,v,p,a,ht,ot,s,o,h,!1,f,t,m),this.Render3(it,p,v,g,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,at),d=this.vertex(ht,rt),c=this.vertex(lt,nt);this.Render3(J,e,c,d,r,lt,ht,!1,h,l),this.Render3(tt,c,i,t,lt,n,ot,o,!1,l),this.Render3(et,d,t,a,ht,ot,s,o,h,!1),this.Render3(it,t,d,c,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],a=t[12],r=t[15],n=Flatness(e,a,i,r);n=Math.max!
 (Straightness(e,t[4],t[8],a)),n=Math.max(n,Straightness(t[1],t[5],t[9],t[13])),n=Math.max(n,Straightness(i,t[7],t[11],r)),n=Math.max(n,Straightness(t[2],t[6],t[10],t[14]));let s=Flatness(e,i,a,r);return s=Math.max(s,Straightness(e,t[1],t[2],i)),s=Math.max(s,Straightness(t[4],t[5],t[6],t[7])),s=Math.max(s,Straightness(t[8],t[9],t[10],t[11])),[n,s=Math.max(s,Straightness(a,t[13],t[14],r))]}Distance3(t){let e=t[0],i=t[4],a=t[6],r=t[9],n=abs2([(e[0]+a[0]+r[0])*third-i[0],(e[1]+a[1]+r[1])*third-i[1],(e[2]+a[2]+r[2])*third-i[2]]);return n=Math.max(n,Straightness(e,t[1],t[3],a)),n=Math.max(n,Straightness(e,t[2],t[5],r)),Math.max(n,Straightness(a,t[7],t[8],r))}differential(t,e,i,a){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return abs2(r)>this.epsilon?r:abs2(r=bezierPP(t,e,i))>this.epsilon?r:bezierPPP(t,e,i,a)}sumdifferential(t,e,i,a,r,n,s){let o=this.differential(t,e,i,a),h=this.differential(t,r,n,s);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,a,r,n,s){let o=3*(r[0]-a[0]),h=3*(r[1]-a[1]),l=3*(r[2]-a[2]),d=3*(i[0]-a[0]),c=3*(i[1]-a[1]),m=3*(i[2]-a[2]),f=[h*m-l*c,l*d-o*m,o*c-h*d];if(abs2(f)>this.epsilon)return f;let u=[d,c,m],p=[o,h,l],v=bezierPP(a,i,e),g=bezierPP(a,r,n),w=cross(g,u),x=cross(p,v);if(abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon)return f;let M=bezierPPP(a,i,e,t),b=bezierPPP(a,r,n,s);w=cross(p,M),x=cross(b,u);let A=cross(g,v);return abs2(f=[w[0]+x[0]+A[0],w[1]+x[1]+A[1],w[2]+x[2]+A[2]])>this.epsilon?f:(w=cross(b,v),x=cross(g,M),abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon?f:cross(b,M))}}class BezierCurve extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.CenterIndex=e,this.MaterialIndex=i}setMaterialIndex(){this.setMaterial(material1Data,drawMaterial1)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],a=t[2],r=t[3],n=this.normal(bezier!
 P(e,i),bezierPP(e,i,a)),s=this.normal(bezierP(a,r),bezierPP(r,a,i)),o=this.data.vertex(e,n),h=this.data.vertex(r,s);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){material1Data.append(this.data)}Render(t,e,i){let a=t[0],r=t[1],n=t[2],s=t[3];if(Straightness(a,r,n,s)<this.res2)this.offscreen([a,s])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])],h=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])],l=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])],d=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],c=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(d[0]+c[0]),.5*(d[1]+c[1]),.5*(d[2]+c[2])],f=[a,o,d,m],u=[m,c,l,s],p=this.normal(bezierPh(a,r,n,s),bezierPPh(a,r,n,s)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=dot(t,t),a=dot(t,e);return[i*e[0]-a*t[0],i*e[1]-a*t[1],i*e[2]-a*t[2]]}}class Pixel extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=a,this.Max=r}setMaterialIndex(){this.setMaterial(material0Data,drawMaterial0)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){material0Data.append(this.data)}}class Triangles extends Geometry{constructor(t,e,i){super(),this.CenterIndex=0,this.MaterialIndex=t,this.Min=e,this.Max=i,this.Positions=Positions,this.Normals=Normals,this.Colors=Colors,this.Indices=Indices,Positions=[],Normals=[],Colors=[],Indices=[],this.transparent=Materials[t].diffuse[3]<1}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.setMaterial(triangleData,drawTriangle)}process(t){materialIndex=this.Colors.length>0?-1-materialIndex:1+materialIndex;for(let t=0,e=this.Indices.length;t<e;++t){let e=this.Indices[t],i=e[0],a=this.Positions[i[0]],r=this.Positions[i[1]],n=this.Positions[i[2]];if(!this.offscreen([a,r,n])){let t=e.length>1?e[1]:i;if(t&&0!=t.length||(t=i),this.Colors.length>0){let s=e!
 .length>2?e[2]:i;s&&0!=s.length||(s=i);let o=this.Colors[s[0]],h=this.Colors[s[1]],l=this.Colors[s[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l)):(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[0],a,this.Normals[t[0]],o))}else 0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]])):(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[0],a,this.Normals[t[0]]))}}this.data.nvertices=this.Positions.length,this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):triangleData.append(this.data)}}function home(){mat4.identity(rotMat),initProjection(),setProjection(),remesh=!0,draw()}let positionAttribute=0,normalAttribute=1,materialAttribute=2,colorAttribute=3,widthAttribute=4;function initShader(t=[]){let e=getShader(gl,vertex,gl.VERTEX_SHADER,t),i=getShader(gl,fragment,gl.FRAGMENT_SHADER,t),a=gl.createProgram();return gl.attachShader(a,e),gl.attachShader(a,i),gl.bindAttribLocation(a,positionAttribute,"position"),gl.bindAttribLocation(a,normalAttribute,"normal"),gl.bindAttribLocation(a,materialAttribute,"materialIndex"),gl.bindAttribLocation(a,colorAttribute,"color"),gl.bindAttribLocation(a,widthAttribute,"width"),gl.linkProgram(a),gl.getProgramParameter(a,gl.LINK_STATUS)||alert("Could not initialize shaders"),a}class Split3{constructor(t,e,i,a){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),n=.5*(e[1]+i[1]),s=.5*!
 (e[2]+i[2]);this.m2=[.5*(i[0]+a[0]),.5*(i[1]+a[1]),.5*(i[2]+a[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+n),.5*(this.m0[2]+s)],this.m4=[.5*(r+this.m2[0]),.5*(n+this.m2[1]),.5*(s+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}function unit(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function abs2(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function dot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function cross(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function bezierP(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function bezierPP(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function bezierPPP(t,e,i,a){return[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}function bezierPh(t,e,i,a){return[i[0]+a[0]-t[0]-e[0],i[1]+a[1]-t[1]-e[1],i[2]+a[2]-t[2]-e[2]]}function bezierPPh(t,e,i,a){return[3*t[0]-5*e[0]+i[0]+a[0],3*t[1]-5*e[1]+i[1]+a[1],3*t[2]-5*e[2]+i[2]+a[2]]}function Straightness(t,e,i,a){let r=[third*(a[0]-t[0]),third*(a[1]-t[1]),third*(a[2]-t[2])];return Math.max(abs2([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),abs2([a[0]-r[0]-i[0],a[1]-r[1]-i[1],a[2]-r[2]-i[2]]))}function Flatness(t,e,i,a){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],n=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return Math.max(abs2(cross(r,unit(n))),abs2(cross(n,unit(r))))/9}function corners(t,e){return[t,[t[0],t[1],e[2]],[t[0],e[1],t[2]],[t[0],e[1],e[2]],[e[0],t[1],t[2]],[e[0],t[1],e[2]],[e[0],e[1],t[2]],e]}function minbound(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function maxbound(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5]!
 [2],t[6][2],t[7][2])]}function COBTarget(t,e){mat4.fromTranslation(T,[center.x,center.y,center.z]),mat4.invert(cjMatInv,T),mat4.multiply(t,e,cjMatInv),mat4.multiply(t,T,t)}function setUniforms(t,e){let i=e==pixelShader;gl.useProgram(e),gl.enableVertexAttribArray(positionAttribute),i&&gl.enableVertexAttribArray(widthAttribute);let a=!i&&Lights.length>0;if(a&&gl.enableVertexAttribArray(normalAttribute),gl.enableVertexAttribArray(materialAttribute),e.projViewMatUniform=gl.getUniformLocation(e,"projViewMat"),e.viewMatUniform=gl.getUniformLocation(e,"viewMat"),e.normMatUniform=gl.getUniformLocation(e,"normMat"),e!=colorShader&&e!=transparentShader||gl.enableVertexAttribArray(colorAttribute),a)for(let t=0;t<Lights.length;++t)Lights[t].setUniform(e,t);for(let i=0;i<t.materials.length;++i)t.materials[i].setUniform(e,i);gl.uniformMatrix4fv(e.projViewMatUniform,!1,projViewMat),gl.uniformMatrix4fv(e.viewMatUniform,!1,viewMat),gl.uniformMatrix3fv(e.normMatUniform,!1,normMat)}function handleMouseDown(t){zoomEnabled||enableZoom(),mouseDownOrTouchActive=!0,lastMouseX=t.clientX,lastMouseY=t.clientY}let pinchStart,touchStartTime,pinch=!1;function pinchDistance(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function handleTouchStart(t){t.preventDefault(),zoomEnabled||enableZoom();let e=t.targetTouches;swipe=rotate=pinch=!1,zooming||(1!=e.length||mouseDownOrTouchActive||(touchStartTime=(new Date).getTime(),touchId=e[0].identifier,lastMouseX=e[0].pageX,lastMouseY=e[0].pageY),2!=e.length||mouseDownOrTouchActive||(touchId=e[0].identifier,pinchStart=pinchDistance(e),pinch=!0))}function handleMouseUpOrTouchEnd(t){mouseDownOrTouchActive=!1}function rotateScene(t,e,i,a,r){if(t==i&&e==a)return;let[n,s]=arcball([t,-e],[i,-a]);mat4.fromRotation(T,2*r*ArcballFactor*n/lastzoom,s),mat4.multiply(rotMat,T,rotMat)}function shiftScene(t,e,i,a){let r=1/lastzoom;shift.x+=(i-t)*r*halfCanvasWidth,shift.y-=(a-e)*r*halfCanvasHeight}function panScene(t,e,i,a){orthographic?shiftScene(t,e,i,a):(center.x+=(i-t)*(viewParam.xmax-viewParam.x!
 min),center.y-=(a-e)*(viewParam.ymax-viewParam.ymin))}function updateViewMatrix(){COBTarget(viewMat,rotMat),mat4.translate(viewMat,viewMat,[center.x,center.y,0]),mat3.fromMat4(viewMat3,viewMat),mat3.invert(normMat,viewMat3),mat4.multiply(projViewMat,projMat,viewMat)}function capzoom(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;Zoom<=e&&(Zoom=e),Zoom>=t&&(Zoom=t),Zoom!=lastzoom&&(remesh=!0),lastzoom=Zoom}function zoomImage(t){let e=zoomStep*halfCanvasHeight*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(zoomFactor);Math.abs(e)<i&&(Zoom*=zoomFactor**e,capzoom())}function normMouse(t){let e=t[0],i=t[1],a=Math.hypot(e,i);return a>1&&(denom=1/a,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function arcball(t,e){let i=normMouse(t),a=normMouse(e),r=dot(i,a);return r>1?r=1:r<-1&&(r=-1),[Math.acos(r),unit(cross(i,a))]}function zoomScene(t,e,i,a){zoomImage(e-a)}const DRAGMODE_ROTATE=1,DRAGMODE_SHIFT=2,DRAGMODE_ZOOM=3,DRAGMODE_PAN=4;function processDrag(t,e,i,a=1){let r;switch(i){case DRAGMODE_ROTATE:r=rotateScene;break;case DRAGMODE_SHIFT:r=shiftScene;break;case DRAGMODE_ZOOM:r=zoomScene;break;case DRAGMODE_PAN:r=panScene;break;default:r=((t,e,i,a)=>{})}r((lastMouseX-halfCanvasWidth)/halfCanvasWidth,(lastMouseY-halfCanvasHeight)/halfCanvasHeight,(t-halfCanvasWidth)/halfCanvasWidth,(e-halfCanvasHeight)/halfCanvasHeight,a),lastMouseX=t,lastMouseY=e,setProjection(),draw()}let zoomEnabled=0;function enableZoom(){zoomEnabled=1,canvas.addEventListener("wheel",handleMouseWheel,!1)}function disableZoom(){zoomEnabled=0,canvas.removeEventListener("wheel",handleMouseWheel,!1)}function handleKey(t){if(zoomEnabled||enableZoom(),embedded&&zoomEnabled&&27==t.keyCode)return void disableZoom();let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":home();break;case"m":3==++wireframe&&(wireframe=0),2!=wireframe&&(embedded||deleteShaders(),initShaders()),remesh=!0,draw();break;case"+":case"=":case">":expand();break;case"-":case"_":case"<":shrink()}e.length>0&&(mat4.rotate(rotMat,rot!
 Mat,.1,e),updateViewMatrix(),draw())}function handleMouseWheel(t){t.preventDefault(),t.deltaY<0?Zoom*=zoomFactor:Zoom/=zoomFactor,capzoom(),setProjection(),draw()}function handleMouseMove(t){if(!mouseDownOrTouchActive)return;let e;processDrag(t.clientX,t.clientY,e=t.getModifierState("Control")?DRAGMODE_SHIFT:t.getModifierState("Shift")?DRAGMODE_ZOOM:t.getModifierState("Alt")?DRAGMODE_PAN:DRAGMODE_ROTATE)}let zooming=!1,swipe=!1,rotate=!1;function handleTouchMove(t){if(t.preventDefault(),zooming)return;let e=t.targetTouches;if(!pinch&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,a=t-lastMouseX,r=i-lastMouseY,n=a*a+r*r<=shiftHoldDistance*shiftHoldDistance;if(n&&!swipe&&!rotate&&(new Date).getTime()-touchStartTime>shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(vibrateTime),swipe=!0),swipe)processDrag(t,i,DRAGMODE_SHIFT);else if(!n){rotate=!0,processDrag(e[0].pageX,e[0].pageY,DRAGMODE_ROTATE,.5)}}if(pinch&&!swipe&&2==e.length&&touchId==e[0].identifier){let t=pinchDistance(e),i=t-pinchStart;zooming=!0,(i*=zoomPinchFactor)>zoomPinchCap&&(i=zoomPinchCap),i<-zoomPinchCap&&(i=-zoomPinchCap),zoomImage(i/size2),pinchStart=t,swipe=rotate=zooming=!1,setProjection(),draw()}}let pixelShader,materialShader,colorShader,transparentShader,zbuffer=[];function transformVertices(t){let e=viewMat[2],i=viewMat[6],a=viewMat[10];zbuffer.length=t.length;for(let r=0;r<t.length;++r){let n=6*r;zbuffer[r]=e*t[n]+i*t[n+1]+a*t[n+2]}}function drawMaterial0(){drawBuffer(material0Data,pixelShader),material0Data.clear()}function drawMaterial1(){drawBuffer(material1Data,materialShader),material1Data.clear()}function drawMaterial(){drawBuffer(materialData,materialShader),materialData.clear()}function drawColor(){drawBuffer(colorData,colorShader),colorData.clear()}function drawTriangle(){drawBuffer(triangleData,transparentShader),triangleData.clear()}function drawTransparent(){let t=transparentData.indices;if(wireframe>0)return drawBuffer(transparentData,transparentShader,t),void transparentData.clear();if(t.length!
 >0){transformVertices(transparentData.vertices);let e=t.length/3,i=Array(e).fill().map((t,e)=>e);i.sort(function(e,i){let a=3*e;Ia=t[a],Ib=t[a+1],Ic=t[a+2];let r=3*i;return IA=t[r],IB=t[r+1],IC=t[r+2],zbuffer[Ia]+zbuffer[Ib]+zbuffer[Ic]<zbuffer[IA]+zbuffer[IB]+zbuffer[IC]?-1:1});let a=Array(t.length);for(let r=0;r<e;++r){let e=3*i[r];a[3*r]=t[e],a[3*r+1]=t[e+1],a[3*r+2]=t[e+2]}gl.depthMask(!1),drawBuffer(transparentData,transparentShader,a),gl.depthMask(!0)}transparentData.clear()}function drawBuffers(){drawMaterial0(),drawMaterial1(),drawMaterial(),drawColor(),drawTriangle(),drawTransparent()}function draw(){embedded&&(offscreen.width=canvas.width,offscreen.height=canvas.height,setViewport()),gl.clearColor(Background[0],Background[1],Background[2],Background[3]),gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);for(let t=0;t<P.length;++t)P[t].render();drawBuffers(),embedded&&(context.clearRect(0,0,canvas.width,canvas.height),context.drawImage(offscreen,0,0)),0==wireframe&&(remesh=!1)}function setDimensions(t,e,i,a){let r=t/e,n=1/lastzoom,s=(i/t+viewportshift[0])*lastzoom,o=(a/e+viewportshift[1])*lastzoom;if(orthographic){let t=B[0]-b[0],e=B[1]-b[1];if(t<e*r){let t=.5*e*r*n,i=2*t*s,a=e*n*o;viewParam.xmin=-t-i,viewParam.xmax=t-i,viewParam.ymin=b[1]*n-a,viewParam.ymax=B[1]*n-a}else{let e=.5*t/(r*Zoom),i=t*n*s,a=2*e*o;viewParam.xmin=b[0]*n-i,viewParam.xmax=B[0]*n-i,viewParam.ymin=-e-a,viewParam.ymax=e-a}}else{let t=H*n,e=t*r,i=2*e*s,a=2*t*o;viewParam.xmin=-e-i,viewParam.xmax=e-i,viewParam.ymin=-t-a,viewParam.ymax=t-a}}function setProjection(){setDimensions(canvasWidth,canvasHeight,shift.x,shift.y),(orthographic?mat4.ortho:mat4.frustum)(projMat,viewParam.xmin,viewParam.xmax,viewParam.ymin,viewParam.ymax,-viewParam.zmax,-viewParam.zmin),updateViewMatrix()}function initProjection(){H=-Math.tan(.5*angle)*B[2],center.x=center.y=0,center.z=.5*(b[2]+B[2]),lastzoom=Zoom=Zoom0,viewParam.zmin=b[2],viewParam.zmax=B[2],shift.x=shift.y=0}function setViewport(){gl.viewportWidth=canvasWidth,gl.viewportHeight=canvasHeight,gl.viewp!
 ort(0,0,gl.viewportWidth,gl.viewportHeight),gl.scissor(0,0,gl.viewportWidth,gl.viewportHeight)}function setCanvas(){canvas.width=canvasWidth,canvas.height=canvasHeight,embedded&&(offscreen.width=canvasWidth,offscreen.height=canvasHeight),size2=Math.hypot(canvasWidth,canvasHeight),halfCanvasWidth=.5*canvasWidth,halfCanvasHeight=.5*canvasHeight}function setsize(t,e){t>maxViewportWidth&&(t=maxViewportWidth),e>maxViewportHeight&&(e=maxViewportHeight),shift.x*=t/canvasWidth,shift.y*=e/canvasHeight,canvasWidth=t,canvasHeight=e,setCanvas(),setViewport(),home()}function expand(){setsize(canvasWidth*resizeStep+.5,canvasHeight*resizeStep+.5)}function shrink(){setsize(Math.max(canvasWidth/resizeStep+.5,1),Math.max(canvasHeight/resizeStep+.5,1))}function webGLInit(){if(canvas=document.getElementById("Asymptote"),embedded=window.top.document!=document,initGL(),absolute&&!embedded)canvasWidth*=window.devicePixelRatio,canvasHeight*=window.devicePixelRatio;else{canvas.width=Math.max(window.innerWidth-windowTrim,windowTrim),canvas.height=Math.max(window.innerHeight-windowTrim,windowTrim);let t=canvasWidth/canvasHeight;canvas.width>canvas.height*t?canvas.width=Math.min(canvas.height*t,canvas.width):canvas.height=Math.min(canvas.width/t,canvas.height),canvas.width>0&&(canvasWidth=canvas.width),canvas.height>0&&(canvasHeight=canvas.height)}setCanvas(),ArcballFactor=1+8*Math.hypot(viewportmargin[0],viewportmargin[1])/size2,viewportshift[0]/=Zoom0,viewportshift[1]/=Zoom0,gl.enable(gl.BLEND),gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA),gl.enable(gl.DEPTH_TEST),gl.enable(gl.SCISSOR_TEST),setViewport(),home(),canvas.onmousedown=handleMouseDown,document.onmouseup=handleMouseUpOrTouchEnd,document.onmousemove=handleMouseMove,canvas.onkeydown=handleKey,embedded||enableZoom(),canvas.addEventListener("touchstart",handleTouchStart,!1),canvas.addEventListener("touchend",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchcancel",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchleave",handleMouseUpOrTouchEnd,!1),canvas.addEve!
 ntListener("touchmove",handleTouchMove,!1),document.addEventListener("keydown",handleKey,!1)}let listen=!1;class Align{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],a=t[2],r=e*this.ct+a*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+a*this.ct+this.center[2]]}}function Tcorners(t,e,i){let a=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1],e[2]]),t(i)];return[minbound(a),maxbound(a)]}function sphere(t,e,i,r,n){let s,o,h,l,d,c,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,g=.0549670512339254,w=.998880711874577,x=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,a,0],[1,a,m],[f,a*f,u],[p,a*p,v],[a,1,0],[a,1,m],[a*f,f,u],[a*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,a*p,v],[g,0,w],[a*p,p,v],[x,x,1],[.05*a,0,1],[0,p,v],[0,g,w],[0,.05*a,1],[0,0,1]]],b=new Align(t,n);function A(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let a=t[i];e[i]=d([s*a[0],o*a[1],h*a[2]])}return e}n?(l=1,c=0,d=b.T.bind(b)):(l=-1,c=-e,d=b.T0.bind(b));let S=Tcorners(d,[-e,-e,c],[e,e,e]),R=S[0],T=S[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){o=t*e;for(let t=l;t<=1;t+=2){h=t*e;for(let t=0;t<2;++t)P.push(new BezierPatch(A(M[t]),i,r,R,T))}}}}let a=4/3*(Math.sqrt(2)-1);function disk(t,e,i,r,n){let s=1-2*a/3,o=[[1,0,0],[1,-a,0],[a,-1,0],[0,-1,0],[1,a,0],[s,0,0],[0,-s,0],[-a,-1,0],[a,1,0],[0,s,0],[-s,0,0],[-1,-a,0],[0,1,0],[-a,1,0],[-1,a,0],[-1,0,0]],h=new Align(t,n);let l=Tcorners(h.T.bind(h),[-e,-e,0],[e,e,0]);P.push(new BezierPatch(function(t){let i=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];i[a]=h.T([e*r[0],e*r[1],0])}return i}(o),i,r,l[0],l[1]))}function cylinder(t,e,i,r,n,s,o){let h,l,d=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,a,0],[1,a,1/3],[1,a,2/3],!
 [1,a,1],[a,1,0],[a,1,1/3],[a,1,2/3],[a,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],c=new Align(t,s);function m(t){let e=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];e[a]=c.T([h*r[0],l*r[1],i*r[2]])}return e}let f=Tcorners(c.T.bind(c),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){h=t*e;for(let t=-1;t<=1;t+=2)l=t*e,P.push(new BezierPatch(m(d),r,n,u,p))}if(o){let e=c.T([0,0,i]);P.push(new BezierCurve([t,e],r,n,t,e))}}function rmf(t,e,i,a,r){class n{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=cross(i,e)}}let s=Number.EPSILON*Math.max(abs2(t),abs2(e),abs2(i),abs2(a));function o(r){if(1==r){let r=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return abs2(r)>s?unit(r):abs2(r=[2*i[0]-e[0]-a[0],2*i[1]-e[1]-a[1],2*i[2]-e[2]-a[2]])>s?unit(r):[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}let n=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,d=[n[0]*l+o[0]*r+h[0],n[1]*l+o[1]*r+h[1],n[2]*l+o[2]*r+h[2]];return abs2(d)>s?unit(d):abs2(d=[n[0]*(l=2*r)+o[0],n[1]*l+o[1],n[2]*l+o[2]])>s?unit(d):unit(n)}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];abs2(l)<s&&abs2(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]])<s&&(l=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]);let d=function(t){let e=cross(t,[0,1,0]),i=Number.EPSILON*abs2(t);return abs2(e)>i?unit(e):abs2(e=cross(t,[0,0,1]))>i?unit(e):[1,0,0]}(l=unit(l));h[0]=new n(t,d,l);for(let s=1;s<r.length;++s){let l=h[s-1],d=r[s],c=1-d,m=c*c,f=m*c,u=3*d;m*=u,c*=u*d;let p=d*d*d,v=[f*t[0]+m*e[0]+c*i[0]+p*a[0],f*t[1]+m*e[1]+c*i[1]+p*a[1],f*t[2]+m*e[2]+c*i[2]+p*a[2]],g=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=g[0]||0!=g[1]||0!=g[2]){let t=l.r,e=unit(g),i=l.t,a=dot(e,i),r=[i[0]-2*a*e[0],i[1]-2*a*e[1],i[2]-2*a*e[2]];i=o(d);let c=2*dot(e,t),m=[t[0]-c*e[0],t[1]-c*e[1],t[2]-c*e[2]],f=unit([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*dot(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[s]=new !
 n(v,unit(m),unit(i))}else h[s]=h[s-1]}return h}function tube(t,e,i,r,n,s,o){let h=rmf(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),l=a*e,d=[[e,0],[e,l],[l,e],[0,e]];function c(e,a,o,l){let c=Array(16);for(let i=0;i<4;++i){let r=h[i],n=r.r[0],s=r.s[0],m=n*e+s*a,f=n*o+s*l,u=(n=r.r[1])*e+(s=r.s[1])*a,p=n*o+s*l,v=(n=r.r[2])*e+(s=r.s[2])*a,g=n*o+s*l,w=t[i],x=w[0];w1=w[1],w2=w[2];for(let t=0;t<4;++t){let e=d[t],a=e[0],r=e[1];c[4*i+t]=[m*a+f*r+x,u*a+p*r+w1,v*a+g*r+w2]}}P.push(new BezierPatch(c,i,r,n,s))}c(1,0,0,1),c(0,-1,1,0),c(-1,0,0,-1),c(0,1,-1,0),o&&P.push(new BezierCurve(t,i,r,n,s))}function webGLStart(){0==window.innerWidth||0==window.innerHeight?listen||(listen=!0,window.addEventListener("resize",webGLStart,!1)):(listen&&(window.removeEventListener("resize",webGLStart,!1),listen=!1),webGLInit())}
+let vertex="\nattribute vec3 position;\n#ifdef WIDTH\nattribute float width;\n#endif\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\nattribute float materialIndex;\n#ifdef COLOR\nattribute vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\n#endif\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\nvarying vec4 emissive;\n\nstruct Material {\n  vec4 diffuse,emissive,specular;\n  vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvoid main(void)\n{\n  vec4 v=vec4(position,1.0);\n  gl_Position=projViewMat*v;\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n  ViewPosition=(viewMat*v).xyz;\n#endif      \n  Normal=normalize(normal*normMat);\n        \n  Material m;\n#ifdef TRANSPARENT\n  m=Materials[int(abs(materialIndex))-1];\n  emissive=m.emissive;\n  if(materialIndex >= 0.0) {\n    diffuse=m.diffuse;\n  } else {\n    diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n  }\n#else\n  m=Materials[int(materialIndex)];\n  emissive=m.emissive;\n#ifdef COLOR\n  diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n#else\n  diffuse=m.diffuse;\n#endif\n#endif\n  specular=m.specular.rgb;\n  vec4 parameters=m.parameters;\n  roughness=1.0-parameters[0];\n  metallic=parameters[1];\n  fresnel0=parameters[2];\n#else\n  emissive=Materials[int(materialIndex)].emissive;\n#endif\n#ifdef WIDTH\n  gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\n\nfloat Roughness2;\nvec3 normal;\n\nstruct Light {\n  vec3 direction;\n  vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\nfloat NDF_TRG(vec3 h)\n{\n  float ndoth=max(dot(normal,h),0.0);\n  float alpha2=Roughness2*Roughness2;\n  float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n  return denom != 0.0 !
 ? alpha2/(denom*denom) : 0.0;\n}\n    \nfloat GGX_Geom(vec3 v)\n{\n  float ndotv=max(dot(v,normal),0.0);\n  float ap=1.0+Roughness2;\n  float k=0.125*ap*ap;\n  return ndotv/((ndotv*(1.0-k))+k);\n}\n    \nfloat Geom(vec3 v, vec3 l)\n{\n  return GGX_Geom(v)*GGX_Geom(l);\n}\n    \nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n  float a=1.0-max(dot(h,v),0.0);\n  float b=a*a;\n  return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n    \n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n  vec3 lambertian=diffuse.rgb;\n  vec3 h=normalize(lightDirection+viewDirection);\n      \n  float omegain=max(dot(viewDirection,normal),0.0);\n  float omegali=max(dot(lightDirection,normal),0.0);\n      \n  float D=NDF_TRG(h);\n  float G=Geom(viewDirection,lightDirection);\n  float F=Fresnel(h,viewDirection,fresnel0);\n      \n  float denom=4.0*omegain*omegali;\n  float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n      \n  vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n  vec3 metal=rawReflectance*diffuse.rgb;\n      \n  return mix(dielectric,metal,metallic);\n}\n#endif\nvarying vec4 emissive;\n    \nvoid main(void)\n{\n#if defined(NORMAL) && nlights > 0\n  normal=normalize(Normal);\n  normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n  vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n  vec3 viewDir=-normalize(ViewPosition);\n#endif\n  Roughness2=roughness*roughness;\n  vec3 color=emissive.rgb;\n  for(int i=0; i < nlights; ++i) {\n    Light Li=Lights[i];\n    vec3 L=Li.direction;\n    float cosTheta=max(dot(normal,L),0.0);\n    vec3 radiance=cosTheta*Li.color;\n    color += BRDF(viewDir,L)*radiance;\n  }\n  gl_FragColor=vec4(color,diffuse.a);\n#else\n  gl_FragColor=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}("undefined"!=typeof self?self:this,(function(){return function(t)!
 {var e={};function i(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,a){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=a*Math.max(1,Math.abs(t),Math.abs(e))};var a=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var a=n(i(2)),r=n(i(3));function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=a,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=c*s-o*l,m=-c*n+o*h,f=l*n-s*h,u=i*d+a*m+r*f;if(!u)return null;return u=1/u,t[0]=d*u,t[1]=(-c*a+r*l)*u,t[2]=(o*a-r*s)*u,t[3]=m*u,t[4]=(c*i-r*h)*u,t[5]=(-o*i+r*n)*u,t[6]=f*u,t[7]=(-l*i+a*h)*u,t[8]=(s*i-a*n)*u,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0!
 ]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],g=e[15],x=i*o-a*s,w=i*h-r*s,M=i*l-n*s,b=a*h-r*o,S=a*l-n*o,P=r*l-n*h,A=c*p-d*u,y=c*v-m*u,T=c*g-f*u,R=d*v-m*p,D=d*g-f*p,I=m*g-f*v,z=x*I-w*D+M*R+b*T-S*y+P*A;if(!z)return null;return z=1/z,t[0]=(o*I-h*D+l*R)*z,t[1]=(r*D-a*I-n*R)*z,t[2]=(p*P-v*S+g*b)*z,t[3]=(m*S-d*P-f*b)*z,t[4]=(h*T-s*I-l*y)*z,t[5]=(i*I-r*T+n*y)*z,t[6]=(v*M-u*P-g*w)*z,t[7]=(c*P-m*M+f*w)*z,t[8]=(s*D-o*T+l*A)*z,t[9]=(a*T-i*D-n*A)*z,t[10]=(u*S-p*M+g*x)*z,t[11]=(d*M-c*S-f*x)*z,t[12]=(o*y-s*R-h*A)*z,t[13]=(i*R-a*y+r*A)*z,t[14]=(p*w-u*b-v*x)*z,t[15]=(c*b-d*w+m*x)*z,t},e.multiply=r,e.translate=function(t,e,i){var a=i[0],r=i[1],n=i[2],s=void 0,o=void 0,h=void 0,l=void 0,c=void 0,d=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0;e===t?(t[12]=e[0]*a+e[4]*r+e[8]*n+e[12],t[13]=e[1]*a+e[5]*r+e[9]*n+e[13],t[14]=e[2]*a+e[6]*r+e[10]*n+e[14],t[15]=e[3]*a+e[7]*r+e[11]*n+e[15]):(s=e[0],o=e[1],h=e[2],l=e[3],c=e[4],d=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],g=e[11],t[0]=s,t[1]=o,t[2]=h,t[3]=l,t[4]=c,t[5]=d,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=g,t[12]=s*a+c*r+u*n+e[12],t[13]=o*a+d*r+p*n+e[13],t[14]=h*a+m*r+v*n+e[14],t[15]=l*a+f*r+g*n+e[15]);return t},e.rotate=function(t,e,i,r){var n,s,o,h,l,c,d,m,f,u,p,v,g,x,w,M,b,S,P,A,y,T,R,D,I=r[0],z=r[1],L=r[2],N=Math.sqrt(I*I+z*z+L*L);if(Math.abs(N)<a.EPSILON)return null;I*=N=1/N,z*=N,L*=N,n=Math.sin(i),s=Math.cos(i),o=1-s,h=e[0],l=e[1],c=e[2],d=e[3],m=e[4],f=e[5],u=e[6],p=e[7],v=e[8],g=e[9],x=e[10],w=e[11],M=I*I*o+s,b=z*I*o+L*n,S=L*I*o-z*n,P=I*z*o-L*n,A=z*z*o+s,y=L*z*o+I*n,T=I*L*o+z*n,R=z*L*o-I*n,D=L*L*o+s,t[0]=h*M+m*b+v*S,t[1]=l*M+f*b+g*S,t[2]=c*M+u*b+x*S,t[3]=d*M+p*b+w*S,t[4]=h*P+m*A+v*y,t[5]=l*P+f*A+g*y,t[6]=c*P+u!
 *A+x*y,t[7]=d*P+p*A+w*y,t[8]=h*T+m*R+v*D,t[9]=l*T+f*R+g*D,t[10]=c*T+u*R+x*D,t[11]=d*T+p*R+w*D,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r,n,s,o=i[0],h=i[1],l=i[2],c=Math.sqrt(o*o+h*h+l*l);if(Math.abs(c)<a.EPSILON)return null;return o*=c=1/c,h*=c,l*=c,r=Math.sin(e),n=Math.cos(e),s=1-n,t[0]=o*o*s+n,t[1]=h*o*s+l*r,t[2]=l*o*s-h*r,t[3]=0,t[4]=o*h*s-l*r,t[5]=h*h*s+n,t[6]=l*h*s+o*r,t[7]=0,t[8]=o*l*s+h*r,t[9]=h*l*s-o*r,t[10]=l*l*s+n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,a,r,n,s){var o=1/(i-e),h=1/(r-a),l=1/(n-s);return t[0]=2*n*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*n*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+a)*h,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t},e.ortho=function(t,e,i,a,r,n,s){var o=1/(e-i),h=1/(a-r),l=1/(n-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+a)*h,t[14]=(s+n)*l,t[15]=1,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var a=e[0],r=e[1],n=e[2],s=e[3],o=e[4],h=e[5],l=e[6],c=e[7],d=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],g=e[14],x=e[15],w=i[0],M=i[1],b=i[2],S=i[3];return t[0]=w*a+M*o+b*d+S*p,t[1]=w*r+M*h+b*m+S*v,t[2]=w*n+M*l+b*f+S*g,t[3]=w*s+M*c+b*u+S*x,w=i[4],M=i[5],b=i[6],S=i[7],t[4]=w*a+M*o+b*d+S*p,t[5]=w*r+M*h+b*m+S*v,t[6]=w*n+M*l+b*f+S*g,t[7]=w*s+M*c+b*u+S*x,w=i[8],M=i[9],b=i[10],S=i[11],t[8]=w*a+M*o+b*d+S*p,t[9]=w*r+M*h+b*m+S*v,t[10]=w*n+M*l+b*f+S*g,t[11]=w*s+M*c+b*u+S*x,w=i[12],M=i[13],b=i[14],S=i[15],t[12]=w*a+M*o+b*d+S*p,t[13]=w*r+M*h+b*m+S*v,t[14]=w*n+M*l+b*f+S*g,t[15]=w*s+M*c+b*u+S*x,t}}])}));let canvasWidth,canvasHeight,canvasWidth0,canvasHeight0,b,B,angle,Zoom0,zoom0,viewportmargin,zoomFactor,zoomPinchFact!
 or,zoomPinchCap,zoomStep,shiftHoldDistance,shiftWaitTime,vibrateTime,embedded,canvas,gl,alpha,offscreen,context,maxMaterials,halfCanvasWidth,halfCanvasHeight,Zoom,maxViewportWidth,maxViewportHeight,P=[],Materials=[],Lights=[],Centers=[],Background=[1,1,1,1],absolute=!1,viewportshift=[0,0],nlights=0,Nmaterials=2,materials=[],pixel=.75,zoomRemeshFactor=1.5,FillFactor=.1;const windowTrim=10;let lastZoom,H,zmin,zmax,size2,ArcballFactor,third=1/3,rotMat=mat4.create(),projMat=mat4.create(),viewMat=mat4.create(),projViewMat=mat4.create(),normMat=mat3.create(),viewMat3=mat3.create(),cjMatInv=mat4.create(),T=mat4.create(),center={x:0,y:0,z:0},shift={x:0,y:0},viewParam={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},remesh=!0,wireframe=0,mouseDownOrTouchActive=!1,lastMouseX=null,lastMouseY=null,touchID=null,Positions=[],Normals=[],Colors=[],Indices=[];class Material{constructor(t,e,i,a,r,n){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=a,this.metallic=r,this.fresnel0=n}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Materials["+e+"]."+i);gl.uniform4fv(i("diffuse"),new Float32Array(this.diffuse)),gl.uniform4fv(i("emissive"),new Float32Array(this.emissive)),gl.uniform4fv(i("specular"),new Float32Array(this.specular)),gl.uniform4f(i("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let indexExt,TRIANGLES,material0Data,material1Data,materialData,colorData,transparentData,triangleData,materialIndex,enumPointLight=1,enumDirectionalLight=2;class Light{constructor(t,e){this.direction=t,this.color=e}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Lights["+e+"]."+i);gl.uniform3fv(i("direction"),new Float32Array(this.direction)),gl.uniform3fv(i("color"),new Float32Array(this.color))}}function initShaders(){let t=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);maxMaterials=Math.floor((t-14)/4),Nmaterials=Math.min(Math.max(Nmaterials,Materials.length),maxMaterials),pixelShader=initShader(["WIDTH"]),materialShader=initShader(["NORMAL"]),colorShader=initShader(["NORMAL","COLOR"]),transparentShader=initShader(["!
 NORMAL","COLOR","TRANSPARENT"])}function deleteShaders(){gl.deleteProgram(transparentShader),gl.deleteProgram(colorShader),gl.deleteProgram(materialShader),gl.deleteProgram(pixelShader)}function noGL(){gl||alert("Could not initialize WebGL")}function saveAttributes(){let t=window.top.document.asygl[alpha];t.gl=gl,t.nlights=Lights.length,t.Nmaterials=Nmaterials,t.maxMaterials=maxMaterials,t.pixelShader=pixelShader,t.materialShader=materialShader,t.colorShader=colorShader,t.transparentShader=transparentShader}function restoreAttributes(){let t=window.top.document.asygl[alpha];gl=t.gl,nlights=t.nlights,Nmaterials=t.Nmaterials,maxMaterials=t.maxMaterials,pixelShader=t.pixelShader,materialShader=t.materialShader,colorShader=t.colorShader,transparentShader=t.transparentShader}function initGL(){if(alpha=Background[3]<1,embedded){let t=window.top.document;null==t.asygl&&(t.asygl=Array(2)),context=canvas.getContext("2d"),offscreen=t.offscreen,offscreen||(offscreen=t.createElement("canvas"),t.offscreen=offscreen),t.asygl[alpha]&&t.asygl[alpha].gl?(restoreAttributes(),(Lights.length!=nlights||Math.min(Materials.length,maxMaterials)>Nmaterials)&&(initShaders(),saveAttributes())):(gl=offscreen.getContext("webgl",{alpha:alpha}),gl||noGL(),initShaders(),t.asygl[alpha]={},saveAttributes())}else gl=canvas.getContext("webgl",{alpha:alpha}),gl||noGL(),initShaders();indexExt=gl.getExtension("OES_element_index_uint"),TRIANGLES=gl.TRIANGLES,material0Data=new vertexBuffer(gl.POINTS),material1Data=new vertexBuffer(gl.LINES),materialData=new vertexBuffer,colorData=new vertexBuffer,transparentData=new vertexBuffer,triangleData=new vertexBuffer}function getShader(t,e,i,a=[]){let r=`#version 100\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n#else\n  precision mediump float;\n#endif\n  #define nlights ${0==wireframe?Lights.length:0}\n\n  const int Nlights=${Math.max(Lights.length,1)};\n\n  #define Nmaterials ${Nmaterials}\n`;orthographic&&(r+="#define ORTHOGRAPHIC\n"),a.forEach(t=>r+="#define "+t+"\n");let n=t.createShader(i!
 );return t.shaderSource(n,r+e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)}function registerBuffer(t,e,i,a=gl.ARRAY_BUFFER){return t.length>0&&(0==e&&(e=gl.createBuffer(),i=!0),gl.bindBuffer(a,e),i&&gl.bufferData(a,t,gl.STATIC_DRAW)),e}function drawBuffer(t,e,i=t.indices){if(0==t.indices.length)return;let a=e!=pixelShader;setUniforms(t,e);let r=remesh||t.partial||!t.rendered;t.verticesBuffer=registerBuffer(new Float32Array(t.vertices),t.verticesBuffer,r),gl.vertexAttribPointer(positionAttribute,3,gl.FLOAT,!1,a?24:16,0),a&&Lights.length>0?gl.vertexAttribPointer(normalAttribute,3,gl.FLOAT,!1,24,12):pixel&&gl.vertexAttribPointer(widthAttribute,1,gl.FLOAT,!1,16,12),t.materialsBuffer=registerBuffer(new Int16Array(t.materialIndices),t.materialsBuffer,r),gl.vertexAttribPointer(materialAttribute,1,gl.SHORT,!1,2,0),e!=colorShader&&e!=transparentShader||(t.colorsBuffer=registerBuffer(new Uint8Array(t.colors),t.colorsBuffer,r),gl.vertexAttribPointer(colorAttribute,4,gl.UNSIGNED_BYTE,!0,0,0)),t.indicesBuffer=registerBuffer(indexExt?new Uint32Array(i):new Uint16Array(i),t.indicesBuffer,r,gl.ELEMENT_ARRAY_BUFFER),t.rendered=!0,gl.drawElements(a?wireframe?gl.LINES:t.type:gl.POINTS,i.length,indexExt?gl.UNSIGNED_INT:gl.UNSIGNED_SHORT,0)}class vertexBuffer{constructor(t){this.type=t||TRIANGLES,this.verticesBuffer=0,this.materialsBuffer=0,this.colorsBuffer=0,this.indicesBuffer=0,this.rendered=!1,this.partial=!1,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.nvertices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndice!
 s.push(materialIndex),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(materialIndex),this.nvertices++}iVertex(t,e,i,a=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=materialIndex;let n=4*t;this.colors[n]=a[0],this.colors[n+1]=a[1],this.colors[n+2]=a[2],this.colors[n+3]=a[3],this.indices.push(t)}append(t){append(this.vertices,t.vertices),append(this.materialIndices,t.materialIndices),append(this.colors,t.colors),appendOffset(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function append(t,e){let i=t.length,a=e.length;t.length+=a;for(let r=0;r<a;++r)t[i+r]=e[r]}function appendOffset(t,e,i){let a=t.length,r=e.length;t.length+=e.length;for(let n=0;n<r;++n)t[a+n]=e[n]+i}class Geometry{constructor(){this.data=new vertexBuffer,this.Onscreen=!1,this.m=[]}offscreen(t){let e=projViewMat,i=t[0],a=i[0],r=i[1],n=i[2],s=1/(e[3]*a+e[7]*r+e[11]*n+e[15]);this.x=this.X=(e[0]*a+e[4]*r+e[8]*n+e[12])*s,this.y=this.Y=(e[1]*a+e[5]*r+e[9]*n+e[13])*s;for(let i=1,a=t.length;i<a;++i){let a=t[i],r=a[0],n=a[1],s=a[2],o=1/(e[3]*r+e[7]*n+e[11]*s+e[15]),h=(e[0]*r+e[4]*n+e[8]*s+e[12])*o,l=(e[1]*r+e[5]*n+e[9]*s+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],a=this.c[2],r=t[0]-e,n=t[1]-i,s=t[2]-a;return[r*normMat[0]+n*normMat[3]+s*normMat[6]+e,r*normMat[1]+n*normMat[4]+s*normMat[7]+i,r*normMat[2]+n*normMat[5]+s*normMat[8]+a]}Tcorners(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null!
 ==t.materialTable[this.MaterialIndex]&&(t.materials.length>=Nmaterials&&(t.partial=!0,e()),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(Materials[this.MaterialIndex])),materialIndex=t.materialTable[this.MaterialIndex]}render(){let t;if(this.setMaterialIndex(),0==this.CenterIndex?t=corners(this.Min,this.Max):(this.c=Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return this.data.clear(),void this.notRendered();let e,i=this.controlpoints;if(0==this.CenterIndex){if(!remesh&&this.Onscreen)return void this.append();e=i}else{let t=i.length;e=Array(t);for(let a=0;a<t;++a)e[a]=this.T(i[a])}let a=orthographic?1:this.Min[2]/B[2],r=pixel*Math.hypot(a*(viewParam.xmax-viewParam.xmin),a*(viewParam.ymax-viewParam.ymin))/size2;this.res2=r*r,this.Epsilon=FillFactor*r,this.data.clear(),this.notRendered(),this.Onscreen=!0,this.process(e)}}class BezierPatch extends Geometry{constructor(t,e,i,a,r,n){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.color=n,this.CenterIndex=e;let s=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==s||4==s?t+n[3][3]<1020:t<765}else this.transparent=Materials[i].diffuse[3]<1;this.MaterialIndex=i,this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data),this.L2norm(this.controlpoints)}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.color?this.setMaterial(colorData,drawColor):this.setMaterial(materialData,drawMaterial)}L2norm(t){let e=t[0];this.epsilon=0;let i=t.length;for(let a=1;a<i;++a)this.epsilon=Math.max(this.epsilon,abs2([t[a][0]-e[0],t[a][1]-e[1],t[a][2]-e[2]]));this.epsilon*=Number.EPSILON}processTriangle(t){let e=t[0],i=t[1],a=t[2],r=unit(cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-e[0],a[1]-e[1],a[2]-e[2]]));if(!this.offscreen([e,i,a])){let t,n,s;this.color?(t=this.data.Vertex(e,r,this.color[0]),n=this.data.Vertex(i,r,this.color[1]),s=this.data.Vertex(a,r,this.color[2])):(t=this.vertex(e,r),n=this.vertex(i,r),s=this.vertex(a,r)),0==!
 wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],a=t[2],r=t[3],n=cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-i[0],a[1]-i[1],a[2]-i[2]]),s=cross([a[0]-r[0],a[1]-r[1],a[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=unit([n[0]+s[0],n[1]+s[1],n[2]+s[2]]);if(!this.offscreen([e,i,a,r])){let t,n,s,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),n=this.data.Vertex(i,o,this.color[1]),s=this.data.Vertex(a,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),n=this.vertex(i,o),s=this.vertex(a,o),h=this.vertex(r,o)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,a,r){new BezierCurve([t[e],t[i],t[a],t[r]],0,materialIndex,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=wireframe&&(materialIndex=this.color?-1-materialIndex:1+materialIndex),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==wireframe)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],a=t[12],r=t[15],n=this.normal(i,t[2],t[1],e,t[4],t[8],a);abs2(n)<this.epsilon&&(n=this.normal(i,t[2],t[1],e,t[13],t[14],r),abs2(n)<this.epsilon&&(n=this.normal(r,t[11],t[7],i,t[4],t[8],a)));let s=this.normal(e,t[4],t[8],a,t[13],t[14],r);abs2(s)<this.epsilon&&(s=this.normal(e,t[4],t[8],a,t[11],t[7],i),abs2(s)<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r)));let o=this.normal(a,t[13],t[!
 14],r,t[11],t[7],i);abs2(o)<this.epsilon&&(o=this.normal(a,t[13],t[14],r,t[2],t[1],e),abs2(o)<this.epsilon&&(o=this.normal(e,t[4],t[8],a,t[11],t[7],i)));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(abs2(h)<this.epsilon&&(h=this.normal(r,t[11],t[7],i,t[4],t[8],a),abs2(h)<this.epsilon&&(h=this.normal(a,t[13],t[14],r,t[2],t[1],e))),this.color){let l=this.color[0],c=this.color[1],d=this.color[2],m=this.color[3],f=this.data.Vertex(e,n,l),u=this.data.Vertex(a,s,c),p=this.data.Vertex(r,o,d),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,a,r,i,!1,!1,!1,!1,l,c,d,m)}else{let l=this.vertex(e,n),c=this.vertex(a,s),d=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,c,d,m,e,a,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):this.color?colorData.append(this.data):materialData.append(this.data)}notRendered(){this.transparent?transparentData.rendered=!1:this.color?colorData.rendered=!1:materialData.rendered=!1}Render(t,e,i,a,r,n,s,o,h,l,c,d,m,f,u,p,v){let g=this.Distance(t);if(g[0]<this.res2&&g[1]<this.res2)this.offscreen([n,s,o])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a))),this.offscreen([n,o,h])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(a),this.data.indices.push(r)):(this.data.indices.push(a),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let x=t[0],w=t[3],M=t[12],b=t[15];if(g[0]<this.res2){let g=new Split3(x,t[1],t[2],w),S=new Split3(t[4],t[5],t[6],t[7]),P=new Split3(t[8],t[9],t[10],t[11]),A=new Split3(M,t[13],t[14],b),y=[x,g.m0,g.m3,g.m5,t[4],S.m0,S.m3,S.m5,t[8],P.m0,P.m3,P.m5,M,A.m0,A.m3,A.m5],T=[g.m5,g.m4,g.m2,w,S.m5,S.m4,S.m2,t[7],P.m5,P.m4,P.m2,t[11],A.m5,A.m4,A.m2,b],R=this.normal(y[12],y[13],y[14],y[15],y[11],y[7],y[3]);abs2(R)<=this.epsilon&&(R=this.normal(y[12],y[13],y[14],y[15],y[2],y[1],y[0]),a!
 bs2(R)<=this.epsilon&&(R=this.normal(y[0],y[4],y[8],y[12],y[11],y[7],y[3])));let D=this.normal(T[3],T[2],T[1],T[0],T[4],T[8],T[12]);abs2(D)<=this.epsilon&&(D=this.normal(T[3],T[2],T[1],T[0],T[13],T[14],T[15]),abs2(D)<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12])));let I=this.Epsilon,z=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!c)if(c=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(T[12],T[8],T[4],T[0]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=y[15];let L=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(x,t[1],t[2],w)<this.res2){let t=unit(this.differential(y[3],y[7],y[11],y[15]));L=[L[0]-I*t[0],L[1]-I*t[1],L[2]-I*t[2]]}else L=T[0];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),g[e]=.5*(v[e]+f[e]);let x=this.data.Vertex(z,R,t),w=this.data.Vertex(L,D,g);this.Render(y,e,i,x,w,n,s,z,L,l,c,!1,m,f,u,t,g),this.Render(T,w,x,a,r,L,z,o,h,!1,c,d,m,g,t,p,v)}else{let t=this.vertex(z,R),f=this.vertex(L,D);this.Render(y,e,i,t,f,n,s,z,L,l,c,!1,m),this.Render(T,f,t,a,r,L,z,o,h,!1,c,d,m)}return}if(g[1]<this.res2){let g=new Split3(x,t[4],t[8],M),S=new Split3(t[1],t[5],t[9],t[13]),P=new Split3(t[2],t[6],t[10],t[14]),A=new Split3(w,t[7],t[11],b),y=[x,t[1],t[2],w,g.m0,S.m0,P.m0,A.m0,g.m3,S.m3,P.m3,A.m3,g.m5,S.m5,P.m5,A.m5],T=[g.m5,S.m5,P.m5,A.m5,g.m4,S.m4,P.m4,A.m4,g.m2,S.m2,P.m2,A.m2,M,t[13],t[14],b],R=this.normal(y[0],y[4],y[8],y[12],y[13],y[14],y[15]);abs2(R)<=this.epsilon&&(R=this.normal(y[0],y[4],y[8],y[12],y[11],y[7],y[3]),abs2(R)<=this.epsilon&&(R=this.normal(y[3],y[2],y[1],y[0],y[13],y[14],y[15])));let D=this.normal(T[15],T[11],T[7],T[3],T[2],T[1],T[0]);abs2(D)<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]),abs2(D)<=this.epsilon&&(D=this.normal(T[12],T[13],T[14],T[15],T[2],T[1],T[0])));let I=this.Epsilon,z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(x,t[4],t[8],M)<this.res2){let t=unit(this.differential(T[0],T[1],T[2],T[3]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=y!
 [12];let L=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Straightness(b,t[11],t[7],w)<this.res2){let t=unit(this.differential(y[15],y[14],y[13],y[12]));L=[L[0]-I*t[0],L[1]-I*t[1],L[2]-I*t[2]]}else L=T[3];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(p[e]+v[e]);let x=this.data.Vertex(z,R,t),w=this.data.Vertex(L,D,g);this.Render(y,e,x,w,r,n,z,L,h,l,!1,d,m,f,t,g,v),this.Render(T,x,i,a,w,z,s,o,L,l,c,d,!1,t,u,p,g)}else{let t=this.vertex(z,R),f=this.vertex(L,D);this.Render(y,e,t,f,r,n,z,L,h,l,!1,d,m),this.Render(T,t,i,a,f,z,s,o,L,l,c,d,!1)}return}let S=new Split3(x,t[1],t[2],w),P=new Split3(t[4],t[5],t[6],t[7]),A=new Split3(t[8],t[9],t[10],t[11]),y=new Split3(M,t[13],t[14],b),T=new Split3(x,t[4],t[8],M),R=new Split3(S.m0,P.m0,A.m0,y.m0),D=new Split3(S.m3,P.m3,A.m3,y.m3),I=new Split3(S.m5,P.m5,A.m5,y.m5),z=new Split3(S.m4,P.m4,A.m4,y.m4),L=new Split3(S.m2,P.m2,A.m2,y.m2),N=new Split3(w,t[7],t[11],b),E=[x,S.m0,S.m3,S.m5,T.m0,R.m0,D.m0,I.m0,T.m3,R.m3,D.m3,I.m3,T.m5,R.m5,D.m5,I.m5],O=[T.m5,R.m5,D.m5,I.m5,T.m4,R.m4,D.m4,I.m4,T.m2,R.m2,D.m2,I.m2,M,y.m0,y.m3,y.m5],V=[I.m5,z.m5,L.m5,N.m5,I.m4,z.m4,L.m4,N.m4,I.m2,z.m2,L.m2,N.m2,y.m5,y.m4,y.m2,b],C=[S.m5,S.m4,S.m2,w,I.m0,z.m0,L.m0,N.m0,I.m3,z.m3,L.m3,N.m3,I.m5,z.m5,L.m5,N.m5],B=E[15],H=this.normal(E[0],E[4],E[8],E[12],E[13],E[14],E[15]);abs2(H)<this.epsilon&&(H=this.normal(E[0],E[4],E[8],E[12],E[11],E[7],E[3]),abs2(H)<this.epsilon&&(H=this.normal(E[3],E[2],E[1],E[0],E[13],E[14],E[15])));let _=this.normal(O[12],O[13],O[14],O[15],O[11],O[7],O[3]);abs2(_)<this.epsilon&&(_=this.normal(O[12],O[13],O[14],O[15],O[2],O[1],O[0]),abs2(_)<this.epsilon&&(_=this.normal(O[0],O[4],O[8],O[12],O[11],O[7],O[3])));let F=this.normal(V[15],V[11],V[7],V[3],V[2],V[1],V[0]);abs2(F)<this.epsilon&&(F=this.normal(V[15],V[11],V[7],V[3],V[4],V[8],V[12]),abs2(F)<this.epsilon&&(F=this.normal(V[12],V[13],V[14],V[15],V[2],V[1],V[0])));let G=this.normal(C[3],C[2],C[1],C[0],C[4],C[8],C[12]);abs2(G)<this.epsilon&&(G=this.normal(C[3],C[2],C[1],C[0],C[13],C[14],C[15]),!
 abs2(G)<this.epsilon&&(G=this.normal(C[15],C[11],C[7],C[3],C[4],C[8],C[12])));let W=this.normal(V[3],V[2],V[1],B,V[4],V[8],V[12]),U=this.Epsilon,Z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(x,t[4],t[8],M)<this.res2){let t=unit(this.differential(O[0],O[1],O[2],O[3]));Z=[Z[0]-U*t[0],Z[1]-U*t[1],Z[2]-U*t[2]]}else Z=E[12];let j=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!c)if(c=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(V[12],V[8],V[4],V[0]));j=[j[0]-U*t[0],j[1]-U*t[1],j[2]-U*t[2]]}else j=O[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Straightness(b,t[11],t[7],w)<this.res2){let t=unit(this.differential(C[15],C[14],C[13],C[12]));k=[k[0]-U*t[0],k[1]-U*t[1],k[2]-U*t[2]]}else k=V[3];let Y=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(x,t[1],t[2],w)<this.res2){let t=unit(this.differential(E[3],E[7],E[11],E[15]));Y=[Y[0]-U*t[0],Y[1]-U*t[1],Y[2]-U*t[2]]}else Y=C[0];if(f){let t=Array(4),g=Array(4),x=Array(4),w=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(u[e]+p[e]),x[e]=.5*(p[e]+v[e]),w[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+x[e]);let b=this.data.Vertex(Z,H,t),S=this.data.Vertex(j,_,g),P=this.data.Vertex(k,F,x),A=this.data.Vertex(Y,G,w),y=this.data.Vertex(B,W,M);this.Render(E,e,b,y,A,n,Z,B,Y,l,!1,!1,m,f,t,M,w),this.Render(O,b,i,S,y,Z,s,j,B,l,c,!1,!1,t,u,g,M),this.Render(V,y,S,a,P,B,j,o,k,!1,c,d,!1,M,g,p,x),this.Render(C,A,y,P,r,Y,B,k,h,!1,!1,d,m,w,M,x,v)}else{let t=this.vertex(Z,H),f=this.vertex(j,_),u=this.vertex(k,F),p=this.vertex(Y,G),v=this.vertex(B,W);this.Render(E,e,t,v,p,n,Z,B,Y,l,!1,!1,m),this.Render(O,t,i,f,v,Z,s,j,B,l,c,!1,!1),this.Render(V,v,f,a,u,B,j,o,k,!1,c,d,!1),this.Render(C,p,v,u,r,Y,B,k,h,!1,!1,d,m)}}}process3(t){if(1==wireframe)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],a=t[9],r=this.normal(a,t[5],t[2],e,t[1],t[3],i),n=this.normal(e,t[1],t[3],i,t[7],t[8],a),s=this.normal(i,t[7],t[8],a,t[5],t[2],e);if(this.color){let o=this.color!
 [0],h=this.color[1],l=this.color[2],c=this.data.Vertex(e,r,o),d=this.data.Vertex(i,n,h),m=this.data.Vertex(a,s,l);this.Render3(t,c,d,m,e,i,a,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,n),l=this.vertex(a,s);this.Render3(t,o,h,l,e,i,a,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,a,r,n,s,o,h,l,c,d,m){if(this.Distance3(t)<this.res2)this.offscreen([r,n,s])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],g=t[4],x=t[5],w=t[6],M=t[7],b=t[8],S=t[9],P=[.5*(S[0]+x[0]),.5*(S[1]+x[1]),.5*(S[2]+x[2])],A=[.5*(S[0]+b[0]),.5*(S[1]+b[1]),.5*(S[2]+b[2])],y=[.5*(x[0]+p[0]),.5*(x[1]+p[1]),.5*(x[2]+p[2])],T=[.5*(b[0]+g[0]),.5*(b[1]+g[1]),.5*(b[2]+g[2])],R=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],D=[.5*(p[0]+g[0]),.5*(p[1]+g[1]),.5*(p[2]+g[2])],I=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],z=[.5*(g[0]+v[0]),.5*(g[1]+v[1]),.5*(g[2]+v[2])],L=[.5*(M[0]+w[0]),.5*(M[1]+w[1]),.5*(M[2]+w[2])],N=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],E=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],O=[.5*(v[0]+w[0]),.5*(v[1]+w[1]),.5*(v[2]+w[2])],V=[.5*(P[0]+y[0]),.5*(P[1]+y[1]),.5*(P[2]+y[2])],C=[.5*(A[0]+R[0]),.5*(A[1]+R[1]),.5*(A[2]+R[2])],B=[.5*(y[0]+I[0]),.5*(y[1]+I[1]),.5*(y[2]+I[2])],H=[.5*T[0]+.25*(g[0]+u[0]),.5*T[1]+.25*(g[1]+u[1]),.5*T[2]+.25*(g[2]+u[2])],_=[.5*(R[0]+L[0]),.5*(R[1]+L[1]),.5*(R[2]+L[2])],F=[.5*D[0]+.25*(g[0]+M[0]),.5*D[1]+.25*(g[1]+M[1]),.5*D[2]+.25*(g[2]+M[2])],G=[.25*(x[0]+g[0])+.5*z[0],.25*(x[1]+g[1])+.5*z[1],.25*(x[2]+g[2])+.5*z[2]],W=[.5*(N[0]+E[0]),.5*(N[1]+E[1]),.5*(N[2]+E[2])],U=[.5*(E[0]+O[0]),.5*(E[1]+O[1]),.5*(E[2]+O[2])],Z=[.5*(F[0]+W[0]),.5*(F[1]+W[1]),.5*(F[2]+W[2])],j=[.5*(F[0]+U[0]),.5*(F[1]+U[1]),.5*(F[2]+U[2])],k=[.5*(W[0]+U[0]),.5*(W[1]+U[1]),.5*(W[2]+U[2])],Y=[.5*(G[0]+_[0]),.5*(G[1]+_[1]),.5*(!
 G[2]+_[2])],X=[.5*(C[0]+G[0]),.5*(C[1]+G[1]),.5*(C[2]+G[2])],q=[.5*(C[0]+_[0]),.5*(C[1]+_[1]),.5*(C[2]+_[2])],K=[.5*(V[0]+H[0]),.5*(V[1]+H[1]),.5*(V[2]+H[2])],$=[.5*(B[0]+H[0]),.5*(B[1]+H[1]),.5*(B[2]+H[2])],Q=[.5*(V[0]+B[0]),.5*(V[1]+B[1]),.5*(V[2]+B[2])],J=[f,N,I,W,[.5*(D[0]+N[0]),.5*(D[1]+N[1]),.5*(D[2]+N[2])],B,k,Z,$,Q],tt=[k,U,j,O,[.5*(z[0]+L[0]),.5*(z[1]+L[1]),.5*(z[2]+L[2])],Y,w,L,_,q],et=[Q,K,V,X,[.5*(P[0]+T[0]),.5*(P[1]+T[1]),.5*(P[2]+T[2])],P,q,C,A,S],it=[q,X,Y,K,[.25*(y[0]+R[0]+E[0]+g[0]),.25*(y[1]+R[1]+E[1]+g[1]),.25*(y[2]+R[2]+E[2]+g[2])],j,Q,$,Z,k],at=this.normal(k,j,Y,q,X,K,Q),rt=this.normal(q,X,K,Q,$,Z,k),nt=this.normal(Q,$,Z,k,j,Y,q),st=this.Epsilon,ot=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!o)if(o=Straightness(w,M,b,S)<this.res2){let t=unit(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-st*t[0],ot[1]-st*t[1],ot[2]-st*t[2]]}else ot=q;let ht=[.5*(s[0]+r[0]),.5*(s[1]+r[1]),.5*(s[2]+r[2])];if(!h)if(h=Straightness(f,p,x,S)<this.res2){let t=unit(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-st*t[0],ht[1]-st*t[1],ht[2]-st*t[2]]}else ht=Q;let lt=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])];if(!l)if(l=Straightness(f,u,v,w)<this.res2){let t=unit(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-st*t[0],lt[1]-st*t[1],lt[2]-st*t[2]]}else lt=k;if(c){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(d[e]+m[e]),f[e]=.5*(m[e]+c[e]),u[e]=.5*(c[e]+d[e]);let p=this.data.Vertex(ot,at,t),v=this.data.Vertex(ht,rt,f),g=this.data.Vertex(lt,nt,u);this.Render3(J,e,g,v,r,lt,ht,!1,h,l,c,u,f),this.Render3(tt,g,i,p,lt,n,ot,o,!1,l,u,d,t),this.Render3(et,v,p,a,ht,ot,s,o,h,!1,f,t,m),this.Render3(it,p,v,g,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,at),c=this.vertex(ht,rt),d=this.vertex(lt,nt);this.Render3(J,e,d,c,r,lt,ht,!1,h,l),this.Render3(tt,d,i,t,lt,n,ot,o,!1,l),this.Render3(et,c,t,a,ht,ot,s,o,h,!1),this.Render3(it,t,c,d,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],a=t[12],r=t[15],n=Flatness(e,a,i,r);!
 n=Math.max(Straightness(e,t[4],t[8],a)),n=Math.max(n,Straightness(t[1],t[5],t[9],t[13])),n=Math.max(n,Straightness(i,t[7],t[11],r)),n=Math.max(n,Straightness(t[2],t[6],t[10],t[14]));let s=Flatness(e,i,a,r);return s=Math.max(s,Straightness(e,t[1],t[2],i)),s=Math.max(s,Straightness(t[4],t[5],t[6],t[7])),s=Math.max(s,Straightness(t[8],t[9],t[10],t[11])),s=Math.max(s,Straightness(a,t[13],t[14],r)),[n,s]}Distance3(t){let e=t[0],i=t[4],a=t[6],r=t[9],n=abs2([(e[0]+a[0]+r[0])*third-i[0],(e[1]+a[1]+r[1])*third-i[1],(e[2]+a[2]+r[2])*third-i[2]]);return n=Math.max(n,Straightness(e,t[1],t[3],a)),n=Math.max(n,Straightness(e,t[2],t[5],r)),Math.max(n,Straightness(a,t[7],t[8],r))}differential(t,e,i,a){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return abs2(r)>this.epsilon?r:(r=bezierPP(t,e,i),abs2(r)>this.epsilon?r:bezierPPP(t,e,i,a))}sumdifferential(t,e,i,a,r,n,s){let o=this.differential(t,e,i,a),h=this.differential(t,r,n,s);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,a,r,n,s){let o=3*(r[0]-a[0]),h=3*(r[1]-a[1]),l=3*(r[2]-a[2]),c=3*(i[0]-a[0]),d=3*(i[1]-a[1]),m=3*(i[2]-a[2]),f=[h*m-l*d,l*c-o*m,o*d-h*c];if(abs2(f)>this.epsilon)return f;let u=[c,d,m],p=[o,h,l],v=bezierPP(a,i,e),g=bezierPP(a,r,n),x=cross(g,u),w=cross(p,v);if(f=[x[0]+w[0],x[1]+w[1],x[2]+w[2]],abs2(f)>this.epsilon)return f;let M=bezierPPP(a,i,e,t),b=bezierPPP(a,r,n,s);x=cross(p,M),w=cross(b,u);let S=cross(g,v);return f=[x[0]+w[0]+S[0],x[1]+w[1]+S[1],x[2]+w[2]+S[2]],abs2(f)>this.epsilon?f:(x=cross(b,v),w=cross(g,M),f=[x[0]+w[0],x[1]+w[1],x[2]+w[2]],abs2(f)>this.epsilon?f:cross(b,M))}}class BezierCurve extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.CenterIndex=e,this.MaterialIndex=i}setMaterialIndex(){this.setMaterial(material1Data,drawMaterial1)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],a=t[2],r=t[3!
 ],n=this..normal(bezierP(e,i),bezierPP(e,i,a)),s=this.normal(bezierP(a,r),bezierPP(r,a,i)),o=this.data.vertex(e,n),h=this.data.vertex(r,s);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){material1Data.append(this.data)}notRendered(){material1Data.rendered=!1}Render(t,e,i){let a=t[0],r=t[1],n=t[2],s=t[3];if(Straightness(a,r,n,s)<this.res2)this.offscreen([a,s])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])],h=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])],l=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])],c=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],d=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(c[0]+d[0]),.5*(c[1]+d[1]),.5*(c[2]+d[2])],f=[a,o,c,m],u=[m,d,l,s],p=this.normal(bezierPh(a,r,n,s),bezierPPh(a,r,n,s)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=dot(t,t),a=dot(t,e);return[i*e[0]-a*t[0],i*e[1]-a*t[1],i*e[2]-a*t[2]]}}class Pixel extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=a,this.Max=r}setMaterialIndex(){this.setMaterial(material0Data,drawMaterial0)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){material0Data.append(this.data)}notRendered(){material0Data.rendered=!1}}class Triangles extends Geometry{constructor(t,e,i){super(),this.CenterIndex=0,this.MaterialIndex=t,this.Min=e,this.Max=i,this.Positions=Positions,this.Normals=Normals,this.Colors=Colors,this.Indices=Indices,Positions=[],Normals=[],Colors=[],Indices=[],this.transparent=Materials[t].diffuse[3]<1}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.setMaterial(triangleData,drawTriangle)}process(t){materialIndex=this.Colors.length>0?-1-materialIndex:1+materialIndex;for(let t=0,e=this.Indices.length;t<e;++t){let e=this.Indices[t],i=e[0],a=this.Positions[i[0]],r=this.Positions[i[1]],n=this.Positions[i[2]];if(!t!
 his.offscreen([a,r,n])){let t=e.length>1?e[1]:i;if(t&&0!=t.length||(t=i),this.Colors.length>0){let s=e.length>2?e[2]:i;s&&0!=s.length||(s=i);let o=this.Colors[s[0]],h=this.Colors[s[1]],l=this.Colors[s[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l)):(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[0],a,this.Normals[t[0]],o))}else 0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]])):(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[0],a,this.Normals[t[0]]))}}this.data.nvertices=this.Positions.length,this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):triangleData.append(this.data)}notRendered(){this.transparent?transparentData.rendered=!1:triangleData.rendered=!1}}function redraw(){initProjection(),setProjection(),remesh=!0,draw()}function home(){mat4.identity(rotMat),redraw()}let positionAttribute=0,normalAttribute=1,materialAttribute=2,colorAttribute=3,widthAttribute=4;function initShader(t=[]){let e=getShader(gl,vertex,gl.VERTEX_SHADER,t),i=getShader(gl,fragment,gl.FRAGMENT_SHADER,t),a=gl.createProgram();return gl.attachShader(a,e),gl.attachShader(a,i),gl.bindAttribLocation(a,positionAttribute,"position"),gl.bindAttribLocation(a,normalAttribute,"normal"),gl.bindAttribLocation(a,materialAttribute,"materialIndex"),gl.bindAttribLocation(a,colorAttribute,"color"),gl.bindAttribLocation(a,widthAttribute,"width"),gl.linkProgram(a),g!
 l.getProgramParameter(a,gl.LINK_STATUS)||alert("Could not initialize shaders"),a}class Split3{constructor(t,e,i,a){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),n=.5*(e[1]+i[1]),s=.5*(e[2]+i[2]);this.m2=[.5*(i[0]+a[0]),.5*(i[1]+a[1]),.5*(i[2]+a[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+n),.5*(this.m0[2]+s)],this.m4=[.5*(r+this.m2[0]),.5*(n+this.m2[1]),.5*(s+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}function unit(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function abs2(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function dot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function cross(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function bezierP(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function bezierPP(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function bezierPPP(t,e,i,a){return[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}function bezierPh(t,e,i,a){return[i[0]+a[0]-t[0]-e[0],i[1]+a[1]-t[1]-e[1],i[2]+a[2]-t[2]-e[2]]}function bezierPPh(t,e,i,a){return[3*t[0]-5*e[0]+i[0]+a[0],3*t[1]-5*e[1]+i[1]+a[1],3*t[2]-5*e[2]+i[2]+a[2]]}function Straightness(t,e,i,a){let r=[third*(a[0]-t[0]),third*(a[1]-t[1]),third*(a[2]-t[2])];return Math.max(abs2([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),abs2([a[0]-r[0]-i[0],a[1]-r[1]-i[1],a[2]-r[2]-i[2]]))}function Flatness(t,e,i,a){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],n=[a[0]-i[0],a[1]-i[1],a[2]-i[2]];return Math.max(abs2(cross(r,unit(n))),abs2(cross(n,unit(r))))/9}function corners(t,e){return[t,[t[0],t[1],e[2]],[t[0],e[1],t[2]],[t[0],e[1],e[2]],[e[0],t[1],t[2]],[e[0],t[1],e[2]],[e[0],e[1],t[2]],e]}function minbound(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function maxboun!
 d(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function COBTarget(t,e){mat4.fromTranslation(T,[center.x,center.y,center.z]),mat4.invert(cjMatInv,T),mat4.multiply(t,e,cjMatInv),mat4.multiply(t,T,t)}function setUniforms(t,e){let i=e==pixelShader;gl.useProgram(e),gl.enableVertexAttribArray(positionAttribute),i&&gl.enableVertexAttribArray(widthAttribute);let a=!i&&Lights.length>0;if(a&&gl.enableVertexAttribArray(normalAttribute),gl.enableVertexAttribArray(materialAttribute),e.projViewMatUniform=gl.getUniformLocation(e,"projViewMat"),e.viewMatUniform=gl.getUniformLocation(e,"viewMat"),e.normMatUniform=gl.getUniformLocation(e,"normMat"),e!=colorShader&&e!=transparentShader||gl.enableVertexAttribArray(colorAttribute),a)for(let t=0;t<Lights.length;++t)Lights[t].setUniform(e,t);for(let i=0;i<t.materials.length;++i)t.materials[i].setUniform(e,i);gl.uniformMatrix4fv(e.projViewMatUniform,!1,projViewMat),gl.uniformMatrix4fv(e.viewMatUniform,!1,viewMat),gl.uniformMatrix3fv(e.normMatUniform,!1,normMat)}function handleMouseDown(t){zoomEnabled||enableZoom(),mouseDownOrTouchActive=!0,lastMouseX=t.clientX,lastMouseY=t.clientY}let pinchStart,touchStartTime,pinch=!1;function pinchDistance(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function handleTouchStart(t){t.preventDefault(),zoomEnabled||enableZoom();let e=t.targetTouches;swipe=rotate=pinch=!1,zooming||(1!=e.length||mouseDownOrTouchActive||(touchStartTime=(new Date).getTime(),touchId=e[0].identifier,lastMouseX=e[0].pageX,lastMouseY=e[0].pageY),2!=e.length||mouseDownOrTouchActive||(touchId=e[0].identifier,pinchStart=pinchDistance(e),pinch=!0))}function handleMouseUpOrTouchEnd(t){mouseDownOrTouchActive=!1}function rotateScene(t,e,i,a,r){if(t==i&&e==a)return;let[n,s]=arcball([t,-e],[i,-a]);mat4.fromRotation(T,2*r*ArcballFactor*n/Zoom,s),mat4.multiply(rotMat,T,rotMat)}function!
  shiftScene(t,e,i,a){let r=1/Zoom;shift.x+=(i-t)*r*halfCanvasWidth,shift.y-=(a-e)*r*halfCanvasHeight}function panScene(t,e,i,a){orthographic?shiftScene(t,e,i,a):(center.x+=(i-t)*(viewParam.xmax-viewParam.xmin),center.y-=(a-e)*(viewParam.ymax-viewParam.ymin))}function updateViewMatrix(){COBTarget(viewMat,rotMat),mat4.translate(viewMat,viewMat,[center.x,center.y,0]),mat3.fromMat4(viewMat3,viewMat),mat3.invert(normMat,viewMat3),mat4.multiply(projViewMat,projMat,viewMat)}function capzoom(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;Zoom<=e&&(Zoom=e),Zoom>=t&&(Zoom=t),(zoomRemeshFactor*Zoom<lastZoom||Zoom>zoomRemeshFactor*lastZoom)&&(remesh=!0,lastZoom=Zoom)}function zoomImage(t){let e=zoomStep*halfCanvasHeight*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(zoomFactor);Math.abs(e)<i&&(Zoom*=zoomFactor**e,capzoom())}function normMouse(t){let e=t[0],i=t[1],a=Math.hypot(e,i);return a>1&&(denom=1/a,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function arcball(t,e){let i=normMouse(t),a=normMouse(e),r=dot(i,a);return[r>1?0:r<-1?pi:Math.acos(r),unit(cross(i,a))]}function zoomScene(t,e,i,a){zoomImage(e-a)}const DRAGMODE_ROTATE=1,DRAGMODE_SHIFT=2,DRAGMODE_ZOOM=3,DRAGMODE_PAN=4;function processDrag(t,e,i,a=1){let r;switch(i){case 1:r=rotateScene;break;case 2:r=shiftScene;break;case 3:r=zoomScene;break;case 4:r=panScene;break;default:r=(t,e,i,a)=>{}}r((lastMouseX-halfCanvasWidth)/halfCanvasWidth,(lastMouseY-halfCanvasHeight)/halfCanvasHeight,(t-halfCanvasWidth)/halfCanvasWidth,(e-halfCanvasHeight)/halfCanvasHeight,a),lastMouseX=t,lastMouseY=e,setProjection(),draw()}let zoomEnabled=0;function enableZoom(){zoomEnabled=1,canvas.addEventListener("wheel",handleMouseWheel,!1)}function disableZoom(){zoomEnabled=0,canvas.removeEventListener("wheel",handleMouseWheel,!1)}function handleKey(t){if(zoomEnabled||enableZoom(),embedded&&zoomEnabled&&27==t.keyCode)return void disableZoom();let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":home();break;case"m":++wireframe,3==wirefr!
 ame&&(wireframe=0),2!=wireframe&&(embedded||deleteShaders(),initShaders()),remesh=!0,draw();break;case"+":case"=":case">":expand();break;case"-":case"_":case"<":shrink()}e.length>0&&(mat4.rotate(rotMat,rotMat,.1,e),updateViewMatrix(),draw())}function setZoom(){capzoom(),setProjection(),draw()}function handleMouseWheel(t){t.preventDefault(),t.deltaY<0?Zoom*=zoomFactor:Zoom/=zoomFactor,setZoom()}function handleMouseMove(t){if(!mouseDownOrTouchActive)return;let e,i=t.clientX,a=t.clientY;e=t.getModifierState("Control")?2:t.getModifierState("Shift")?3:t.getModifierState("Alt")?4:1,processDrag(i,a,e)}let zooming=!1,swipe=!1,rotate=!1;function handleTouchMove(t){if(t.preventDefault(),zooming)return;let e=t.targetTouches;if(!pinch&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,a=t-lastMouseX,r=i-lastMouseY,n=a*a+r*r<=shiftHoldDistance*shiftHoldDistance;if(n&&!swipe&&!rotate&&(new Date).getTime()-touchStartTime>shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(vibrateTime),swipe=!0),swipe)processDrag(t,i,2);else if(!n){rotate=!0,processDrag(e[0].pageX,e[0].pageY,1,.5)}}if(pinch&&!swipe&&2==e.length&&touchId==e[0].identifier){let t=pinchDistance(e),i=t-pinchStart;zooming=!0,i*=zoomPinchFactor,i>zoomPinchCap&&(i=zoomPinchCap),i<-zoomPinchCap&&(i=-zoomPinchCap),zoomImage(i/size2),pinchStart=t,swipe=rotate=zooming=!1,setProjection(),draw()}}let pixelShader,materialShader,colorShader,transparentShader,zbuffer=[];function transformVertices(t){let e=viewMat[2],i=viewMat[6],a=viewMat[10];zbuffer.length=t.length;for(let r=0;r<t.length;++r){let n=6*r;zbuffer[r]=e*t[n]+i*t[n+1]+a*t[n+2]}}function drawMaterial0(){drawBuffer(material0Data,pixelShader),material0Data.clear()}function drawMaterial1(){drawBuffer(material1Data,materialShader),material1Data.clear()}function drawMaterial(){drawBuffer(materialData,materialShader),materialData.clear()}function drawColor(){drawBuffer(colorData,colorShader),colorData.clear()}function drawTriangle(){drawBuffer(triangleData,transparentShader),triangleData.rendered!
 =!1,triangleData.clear()}function drawTransparent(){let t=transparentData.indices;if(wireframe>0)return drawBuffer(transparentData,transparentShader,t),void transparentData.clear();if(t.length>0){transformVertices(transparentData.vertices);let e=t.length/3,i=Array(e).fill().map((t,e)=>e);i.sort((function(e,i){let a=3*e;Ia=t[a],Ib=t[a+1],Ic=t[a+2];let r=3*i;return IA=t[r],IB=t[r+1],IC=t[r+2],zbuffer[Ia]+zbuffer[Ib]+zbuffer[Ic]<zbuffer[IA]+zbuffer[IB]+zbuffer[IC]?-1:1}));let a=Array(t.length);for(let r=0;r<e;++r){let e=3*i[r];a[3*r]=t[e],a[3*r+1]=t[e+1],a[3*r+2]=t[e+2]}gl.depthMask(!1),drawBuffer(transparentData,transparentShader,a),transparentData.rendered=!1,gl.depthMask(!0)}transparentData.clear()}function drawBuffers(){drawMaterial0(),drawMaterial1(),drawMaterial(),drawColor(),drawTriangle(),drawTransparent()}function draw(){embedded&&(offscreen.width=canvasWidth,offscreen.height=canvasHeight,setViewport()),gl.clearColor(Background[0],Background[1],Background[2],Background[3]),gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);for(let t=0;t<P.length;++t)P[t].render();drawBuffers(),embedded&&(context.clearRect(0,0,canvasWidth,canvasHeight),context.drawImage(offscreen,0,0)),0==wireframe&&(remesh=!1)}function setDimensions(t,e,i,a){let r=t/e,n=1/Zoom,s=(i/t+viewportshift[0])*Zoom,o=(a/e+viewportshift[1])*Zoom;if(orthographic){let t=B[0]-b[0],e=B[1]-b[1];if(t<e*r){let t=.5*e*r*n,i=2*t*s,a=e*n*o;viewParam.xmin=-t-i,viewParam.xmax=t-i,viewParam.ymin=b[1]*n-a,viewParam.ymax=B[1]*n-a}else{let e=.5*t/(r*Zoom),i=t*n*s,a=2*e*o;viewParam.xmin=b[0]*n-i,viewParam.xmax=B[0]*n-i,viewParam.ymin=-e-a,viewParam.ymax=e-a}}else{let t=H*n,e=t*r,i=2*e*s,a=2*t*o;viewParam.xmin=-e-i,viewParam.xmax=e-i,viewParam.ymin=-t-a,viewParam.ymax=t-a}}function setProjection(){setDimensions(canvasWidth,canvasHeight,shift.x,shift.y),(orthographic?mat4.ortho:mat4.frustum)(projMat,viewParam.xmin,viewParam.xmax,viewParam.ymin,viewParam.ymax,-viewParam.zmax,-viewParam.zmin),updateViewMatrix()}function initProjection(){H=-Math.tan(.5*angle)*B[2],center.!
 x=center..y=0,center.z=.5*(b[2]+B[2]),lastZoom=Zoom=zoom0,viewParam.zmin=b[2],viewParam.zmax=B[2],shift.x=shift.y=0}function setViewport(){gl.viewportWidth=canvasWidth,gl.viewportHeight=canvasHeight,gl.viewport(.5*(canvas.width-canvasWidth),.5*(canvas.height-canvasHeight),canvasWidth,canvasHeight),gl.scissor(0,0,canvas.width,canvas.height)}function setCanvas(){embedded&&(canvas.width=offscreen.width=canvasWidth,canvas.height=offscreen.height=canvasHeight),size2=Math.hypot(canvasWidth,canvasHeight),halfCanvasWidth=.5*canvas.width,halfCanvasHeight=.5*canvas.height,ArcballFactor=1+8*Math.hypot(viewportmargin[0],viewportmargin[1])/size2}function setsize(t,e){t>maxViewportWidth&&(t=maxViewportWidth),e>maxViewportHeight&&(e=maxViewportHeight),shift.x*=t/canvasWidth,shift.y*=e/canvasHeight,canvasWidth=t,canvasHeight=e,setCanvas(),setViewport(),setProjection(),remesh=!0}function resize(){if(zoom0=Zoom0,absolute&&!embedded)canvasWidth=canvasWidth0*window.devicePixelRatio,canvasHeight=canvasHeight0*window.devicePixelRatio;else{let t=canvasWidth0/canvasHeight0;canvasWidth=Math.max(window.innerWidth-10,10),canvasHeight=Math.max(window.innerHeight-10,10),!orthographic&&canvasWidth<canvasHeight*t&&(zoom0*=canvasWidth/(canvasHeight*t))}canvas.width=canvasWidth,canvas.height=canvasHeight;window.innerWidth,window.innerHeight;viewportshift[0]/=zoom0,viewportshift[1]/=zoom0,setsize(canvasWidth,canvasHeight),redraw()}function expand(){Zoom*=zoomFactor,setZoom()}function shrink(){Zoom/=zoomFactor,setZoom()}class Align{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],a=t[2],r=e*this.ct+a*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+a*this.ct+this.center[2]]}}function Tcorners(t,e,i){let a=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1!
 ],e[2]]),t(i)];return[minbound(a),maxbound(a)]}function sphere(t,e,i,r,n){let s,o,h,l,c,d,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,g=.0549670512339254,x=.998880711874577,w=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,a,0],[1,a,m],[f,a*f,u],[p,a*p,v],[a,1,0],[a,1,m],[a*f,f,u],[a*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,a*p,v],[g,0,x],[a*p,p,v],[w,w,1],[.05*a,0,1],[0,p,v],[0,g,x],[0,.05*a,1],[0,0,1]]],b=new Align(t,n);function S(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let a=t[i];e[i]=c([s*a[0],o*a[1],h*a[2]])}return e}n?(l=1,d=0,c=b.T.bind(b)):(l=-1,d=-e,c=b.T0.bind(b));let A=Tcorners(c,[-e,-e,d],[e,e,e]),y=A[0],T=A[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){o=t*e;for(let t=l;t<=1;t+=2){h=t*e;for(let t=0;t<2;++t)P.push(new BezierPatch(S(M[t]),i,r,y,T))}}}}let a=4/3*(Math.sqrt(2)-1);function disk(t,e,i,r,n){let s=1-2*a/3,o=[[1,0,0],[1,-a,0],[a,-1,0],[0,-1,0],[1,a,0],[s,0,0],[0,-s,0],[-a,-1,0],[a,1,0],[0,s,0],[-s,0,0],[-1,-a,0],[0,1,0],[-a,1,0],[-1,a,0],[-1,0,0]],h=new Align(t,n);let l=Tcorners(h.T.bind(h),[-e,-e,0],[e,e,0]);P.push(new BezierPatch(function(t){let i=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];i[a]=h.T([e*r[0],e*r[1],0])}return i}(o),i,r,l[0],l[1]))}function cylinder(t,e,i,r,n,s,o){let h,l,c=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,a,0],[1,a,1/3],[1,a,2/3],[1,a,1],[a,1,0],[a,1,1/3],[a,1,2/3],[a,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],d=new Align(t,s);function m(t){let e=Array(t.length);for(let a=0;a<t.length;++a){let r=t[a];e[a]=d.T([h*r[0],l*r[1],i*r[2]])}return e}let f=Tcorners(d.T.bind(d),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){h=t*e;for(let t=-1;t<=1;t+=2)l=t*e,P.push(new BezierPatch(m(c),r,n,u,p))}if(o){let e=d.T([0,0,i]);P.push(new BezierCurve([t,e],r,n,t,e))}}function rmf(t,e,i,a,r){class n{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=cross(i,e)}}let s=Number.EPSILON*Math.max(abs2(t),abs2(e),abs2(i),abs2(a));function o(r){if(1==r){let r=[a[0]-i[0],a[1]-i[!
 1],a[2]-i[2]];return abs2(r)>s?unit(r):(r=[2*i[0]-e[0]-a[0],2*i[1]-e[1]-a[1],2*i[2]-e[2]-a[2]],abs2(r)>s?unit(r):[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])])}let n=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,c=[n[0]*l+o[0]*r+h[0],n[1]*l+o[1]*r+h[1],n[2]*l+o[2]*r+h[2]];return abs2(c)>s?unit(c):(l=2*r,c=[n[0]*l+o[0],n[1]*l+o[1],n[2]*l+o[2]],abs2(c)>s?unit(c):unit(n))}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];abs2(l)<s&&(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]],abs2(l)<s&&(l=[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])])),l=unit(l);let c=function(t){let e=cross(t,[0,1,0]),i=Number.EPSILON*abs2(t);return abs2(e)>i?unit(e):(e=cross(t,[0,0,1]),abs2(e)>i?unit(e):[1,0,0])}(l);h[0]=new n(t,c,l);for(let s=1;s<r.length;++s){let l=h[s-1],c=r[s],d=1-c,m=d*d,f=m*d,u=3*c;m*=u,d*=u*c;let p=c*c*c,v=[f*t[0]+m*e[0]+d*i[0]+p*a[0],f*t[1]+m*e[1]+d*i[1]+p*a[1],f*t[2]+m*e[2]+d*i[2]+p*a[2]],g=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=g[0]||0!=g[1]||0!=g[2]){let t=l.r,e=unit(g),i=l.t,a=dot(e,i),r=[i[0]-2*a*e[0],i[1]-2*a*e[1],i[2]-2*a*e[2]];i=o(c);let d=2*dot(e,t),m=[t[0]-d*e[0],t[1]-d*e[1],t[2]-d*e[2]],f=unit([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*dot(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[s]=new n(v,unit(m),unit(i))}else h[s]=h[s-1]}return h}function tube(t,e,i,r,n,s,o){let h=rmf(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),l=a*e,c=[[e,0],[e,l],[l,e],[0,e]];function d(e,a,o,l){let d=Array(16);for(let i=0;i<4;++i){let r=h[i],n=r.r[0],s=r.s[0],m=n*e+s*a,f=n*o+s*l;n=r.r[1],s=r.s[1];let u=n*e+s*a,p=n*o+s*l;n=r.r[2],s=r.s[2];let v=n*e+s*a,g=n*o+s*l,x=t[i],w=x[0];w1=x[1],w2=x[2];for(let t=0;t<4;++t){let e=c[t],a=e[0],r=e[1];d[4*i+t]=[m*a+f*r+w,u*a+p*r+w1,v*a+g*r+w2]}}P.push(new BezierPatch(d,i,r,n,s))}d(1,0,0,1),d(0,-1,1,0),d(-1,0,0,-1),d(0,1,-1,0),o&&P.push(new BezierCurve(t,i,r,n,s))}function webGLStart(){canvas=document.ge!
 tElementById("Asymptote"),embedded=window.top.document!=document,initGL(),gl.enable(gl.BLEND),gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA),gl.enable(gl.DEPTH_TEST),gl.enable(gl.SCISSOR_TEST),canvas.onmousedown=handleMouseDown,document.onmouseup=handleMouseUpOrTouchEnd,document.onmousemove=handleMouseMove,canvas.onkeydown=handleKey,embedded||enableZoom(),canvas.addEventListener("touchstart",handleTouchStart,!1),canvas.addEventListener("touchend",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchcancel",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchleave",handleMouseUpOrTouchEnd,!1),canvas.addEventListener("touchmove",handleTouchMove,!1),document.addEventListener("keydown",handleKey,!1),canvasWidth0=canvasWidth,canvasHeight0=canvasHeight,mat4.identity(rotMat),0!=window.innerWidth&&0!=window.innerHeight&&resize(),window.addEventListener("resize",resize,!1)}

Modified: trunk/Master/texmf-dist/doc/asymptote/CAD.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/TeXShopAndAsymptote.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asy-latex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asyRefCard.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/asymptote/asymptote.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/100d.pdb1	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,535 @@
+HEADER    DNA/RNA                                 05-DEC-94   XXXX              
+TITLE     CRYSTAL STRUCTURE OF THE HIGHLY DISTORTED CHIMERIC DECAMER            
+TITLE    2 R(C)D(CGGCGCCG)R(G)-SPERMINE COMPLEX-SPERMINE BINDING TO             
+TITLE    3 PHOSPHATE ONLY AND MINOR GROOVE TERTIARY BASE-PAIRING                
+COMPND    5'-R(*CP*)-D(*CP*GP*GP*CP*GP*CP*CP*GP*)-R(*G)-3'                      
+KEYWDS    A-DNA/RNA, DOUBLE HELIX                                               
+EXPDTA    X-RAY DIFFRACTION                                                     
+AUTHOR    C.BAN, B.RAMAKRISHNAN, M.SUNDARALINGAM                                
+JRNL        AUTH   C.BAN, B.RAMAKRISHNAN, M.SUNDARALINGAM                       
+JRNL        TITL   CRYSTAL STRUCTURE OF THE HIGHLY DISTORTED CHIMERIC           
+JRNL        TITL 2 DECAMER R(C)D(CGGCGCCG)R(G).SPERMINE                         
+JRNL        TITL 3 COMPLEX--SPERMINE BINDING TO PHOSPHATE ONLY AND              
+JRNL        TITL 4 MINOR GROOVE TERTIARY BASE-PAIRING.                          
+JRNL        REF    NUCLEIC ACIDS RES.            V.  22  5466 1994              
+JRNL        REFN   ASTM NARHAD  UK ISSN 0305-1048                               
+REMARK   1                                                                      
+SEQRES   1 A   10    C  DC  DG  DG  DC  DG  DC  DC  DG   G                      
+SEQRES   1 B   10    C  DC  DG  DG  DC  DG  DC  DC  DG   G                      
+HETNAM     SPM SPERMINE                                                         
+FORMUL   3  SPM    C10 H26 N4                                                   
+FORMUL   4  HOH   *67(H2 O)                                                     
+CRYST1   23.980   40.770   44.840  90.00  90.00  90.00 P 21 21 21    8          
+ORIGX1      1.000000  0.000000  0.000000        0.00000                         
+ORIGX2      0.000000  1.000000  0.000000        0.00000                         
+ORIGX3      0.000000  0.000000  1.000000        0.00000                         
+SCALE1      0.041701  0.000000  0.000000        0.00000                         
+SCALE2      0.000000  0.024528  0.000000        0.00000                         
+SCALE3      0.000000  0.000000  0.022302        0.00000                         
+ATOM      1  N1    C A   1      -4.931   6.902   7.826  1.00 19.25           N  
+ATOM      2  C2    C A   1      -4.838   7.263   9.158  1.00 16.72           C  
+ATOM      3  O2    C A   1      -4.287   8.308   9.505  1.00 15.49           O  
+ATOM      4  N3    C A   1      -5.367   6.448  10.085  1.00 15.96           N  
+ATOM      5  C4    C A   1      -5.978   5.310   9.736  1.00 16.84           C  
+ATOM      6  N4    C A   1      -6.592   4.588  10.676  1.00 19.14           N  
+ATOM      7  C5    C A   1      -6.059   4.907   8.376  1.00 17.68           C  
+ATOM      8  C6    C A   1      -5.522   5.732   7.461  1.00 17.68           C  
+ATOM      9  O5'   C A   1      -4.549   5.095   4.262  1.00 28.71           O  
+ATOM     10  C5'   C A   1      -4.176   6.323   3.646  1.00 27.35           C  
+ATOM     11  C4'   C A   1      -3.853   7.410   4.672  1.00 24.41           C  
+ATOM     12  O4'   C A   1      -4.992   7.650   5.512  1.00 22.53           O  
+ATOM     13  C3'   C A   1      -2.713   7.010   5.605  1.00 23.56           C  
+ATOM     14  O3'   C A   1      -1.379   7.127   5.060  1.00 21.02           O  
+ATOM     15  C2'   C A   1      -2.950   7.949   6.756  1.00 23.73           C  
+ATOM     16  O2'   C A   1      -2.407   9.267   6.554  1.00 23.93           O  
+ATOM     17  C1'   C A   1      -4.489   7.917   6.825  1.00 20.60           C  
+ATOM     18  P    DC A   2      -0.178   6.220   5.647  1.00 24.85           P  
+ATOM     19  N1   DC A   2      -1.070   6.635  10.823  1.00 14.48           N  
+ATOM     20  C2   DC A   2      -1.417   6.355  12.130  1.00 13.03           C  
+ATOM     21  O2   DC A   2      -1.007   7.022  13.094  1.00 11.15           O  
+ATOM     22  N3   DC A   2      -2.233   5.297  12.333  1.00 11.95           N  
+ATOM     23  C4   DC A   2      -2.681   4.542  11.344  1.00 11.37           C  
+ATOM     24  N4   DC A   2      -3.532   3.569  11.652  1.00 11.93           N  
+ATOM     25  C5   DC A   2      -2.314   4.796   9.986  1.00 11.95           C  
+ATOM     26  C6   DC A   2      -1.510   5.853   9.776  1.00 11.94           C  
+ATOM     27  OP1  DC A   2       0.915   6.451   4.671  1.00 25.96           O  
+ATOM     28  OP2  DC A   2      -0.948   4.954   5.664  1.00 24.57           O  
+ATOM     29  O5'  DC A   2       0.435   6.502   7.097  1.00 24.10           O  
+ATOM     30  C5'  DC A   2       1.020   7.793   7.281  1.00 19.66           C  
+ATOM     31  C4'  DC A   2       1.034   8.184   8.738  1.00 17.99           C  
+ATOM     32  O4'  DC A   2      -0.290   8.244   9.222  1.00 17.23           O  
+ATOM     33  C3'  DC A   2       1.724   7.167   9.617  1.00 18.98           C  
+ATOM     34  O3'  DC A   2       3.130   7.395   9.564  1.00 18.39           O  
+ATOM     35  C2'  DC A   2       1.152   7.607  10.934  1.00 17.33           C  
+ATOM     36  C1'  DC A   2      -0.273   7.853  10.599  1.00 15.44           C  
+ATOM     37  P    DG A   3       4.177   6.440  10.285  1.00 21.10           P  
+ATOM     38  N9   DG A   3       1.615   4.437  14.168  1.00 11.63           N  
+ATOM     39  C8   DG A   3       1.389   4.110  12.865  1.00 10.83           C  
+ATOM     40  N7   DG A   3       0.474   3.204  12.690  1.00 12.03           N  
+ATOM     41  C5   DG A   3       0.093   2.891  13.972  1.00  9.28           C  
+ATOM     42  C6   DG A   3      -0.792   1.917  14.408  1.00  6.67           C  
+ATOM     43  O6   DG A   3      -1.528   1.253  13.693  1.00 11.90           O  
+ATOM     44  N1   DG A   3      -0.833   1.822  15.808  1.00  7.48           N  
+ATOM     45  C2   DG A   3      -0.098   2.583  16.686  1.00  7.12           C  
+ATOM     46  N2   DG A   3      -0.228   2.346  17.999  1.00  2.92           N  
+ATOM     47  N3   DG A   3       0.745   3.531  16.259  1.00  7.08           N  
+ATOM     48  C4   DG A   3       0.788   3.626  14.894  1.00 12.36           C  
+ATOM     49  OP1  DG A   3       5.469   7.004   9.830  1.00 21.52           O  
+ATOM     50  OP2  DG A   3       3.681   5.183   9.686  1.00 14.50           O  
+ATOM     51  O5'  DG A   3       4.378   6.142  11.832  1.00 19.95           O  
+ATOM     52  C5'  DG A   3       4.654   7.213  12.730  1.00 17.61           C  
+ATOM     53  C4'  DG A   3       4.016   6.885  14.035  1.00 17.62           C  
+ATOM     54  O4'  DG A   3       2.614   6.626  13.799  1.00 16.77           O  
+ATOM     55  C3'  DG A   3       4.595   5.586  14.598  1.00 16.31           C  
+ATOM     56  O3'  DG A   3       5.774   5.836  15.353  1.00 18.86           O  
+ATOM     57  C2'  DG A   3       3.484   5.274  15.528  1.00 17.71           C  
+ATOM     58  C1'  DG A   3       2.243   5.627  14.740  1.00 16.27           C  
+ATOM     59  P    DG A   4       6.647   4.633  15.976  1.00 19.10           P  
+ATOM     60  N9   DG A   4       3.496   1.232  18.319  1.00 11.82           N  
+ATOM     61  C8   DG A   4       3.617   1.742  17.054  1.00  8.09           C  
+ATOM     62  N7   DG A   4       2.902   1.118  16.167  1.00 11.07           N  
+ATOM     63  C5   DG A   4       2.252   0.091  16.894  1.00 11.16           C  
+ATOM     64  C6   DG A   4       1.310  -0.920  16.456  1.00  9.75           C  
+ATOM     65  O6   DG A   4       0.888  -1.151  15.321  1.00  9.97           O  
+ATOM     66  N1   DG A   4       0.906  -1.749  17.502  1.00  8.27           N  
+ATOM     67  C2   DG A   4       1.340  -1.630  18.818  1.00  8.31           C  
+ATOM     68  N2   DG A   4       0.852  -2.494  19.717  1.00  6.42           N  
+ATOM     69  N3   DG A   4       2.218  -0.681  19.223  1.00  9.10           N  
+ATOM     70  C4   DG A   4       2.629   0.144  18.209  1.00 10.34           C  
+ATOM     71  OP1  DG A   4       7.834   5.387  16.410  1.00 21.78           O  
+ATOM     72  OP2  DG A   4       6.811   3.466  15.083  1.00 20.41           O  
+ATOM     73  O5'  DG A   4       5.837   4.160  17.304  1.00 19.69           O  
+ATOM     74  C5'  DG A   4       5.832   4.777  18.613  1.00 14.70           C  
+ATOM     75  C4'  DG A   4       5.349   3.746  19.615  1.00 15.74           C  
+ATOM     76  O4'  DG A   4       4.014   3.339  19.320  1.00 15.71           O  
+ATOM     77  C3'  DG A   4       6.144   2.446  19.549  1.00 14.86           C  
+ATOM     78  O3'  DG A   4       7.442   2.553  20.185  1.00 20.22           O  
+ATOM     79  C2'  DG A   4       5.194   1.467  20.191  1.00 13.42           C  
+ATOM     80  C1'  DG A   4       3.886   1.904  19.582  1.00 13.10           C  
+ATOM     81  P    DC A   5       8.623   1.481  19.918  1.00 16.11           P  
+ATOM     82  N1   DC A   5       5.142  -2.576  17.527  1.00 12.08           N  
+ATOM     83  C2   DC A   5       4.179  -3.389  16.962  1.00 12.60           C  
+ATOM     84  O2   DC A   5       3.695  -4.327  17.591  1.00 10.69           O  
+ATOM     85  N3   DC A   5       3.792  -3.162  15.680  1.00 10.73           N  
+ATOM     86  C4   DC A   5       4.335  -2.176  14.967  1.00 10.86           C  
+ATOM     87  N4   DC A   5       3.833  -1.904  13.765  1.00  7.57           N  
+ATOM     88  C5   DC A   5       5.346  -1.339  15.528  1.00 12.31           C  
+ATOM     89  C6   DC A   5       5.709  -1.571  16.800  1.00 10.26           C  
+ATOM     90  OP1  DC A   5       9.474   2.225  20.879  1.00 21.84           O  
+ATOM     91  OP2  DC A   5       8.908   1.639  18.468  1.00 19.79           O  
+ATOM     92  O5'  DC A   5       8.728  -0.072  20.325  1.00 19.47           O  
+ATOM     93  C5'  DC A   5       8.554  -1.158  19.407  1.00 15.29           C  
+ATOM     94  C4'  DC A   5       7.470  -2.178  19.802  1.00 12.49           C  
+ATOM     95  O4'  DC A   5       6.161  -1.717  19.496  1.00 12.55           O  
+ATOM     96  C3'  DC A   5       7.697  -3.468  19.046  1.00 11.96           C  
+ATOM     97  O3'  DC A   5       8.775  -4.194  19.666  1.00 14.17           O  
+ATOM     98  C2'  DC A   5       6.342  -4.056  19.192  1.00 10.58           C  
+ATOM     99  C1'  DC A   5       5.464  -2.822  18.946  1.00 10.97           C  
+ATOM    100  P    DG A   6       9.797  -5.058  18.800  1.00 14.87           P  
+ATOM    101  N9   DG A   6       5.801  -7.550  16.290  1.00 13.78           N  
+ATOM    102  C8   DG A   6       6.477  -6.339  16.189  1.00 11.32           C  
+ATOM    103  N7   DG A   6       6.114  -5.628  15.161  1.00 11.53           N  
+ATOM    104  C5   DG A   6       5.137  -6.431  14.528  1.00 15.14           C  
+ATOM    105  C6   DG A   6       4.442  -6.239  13.291  1.00 14.51           C  
+ATOM    106  O6   DG A   6       4.382  -5.224  12.595  1.00 15.52           O  
+ATOM    107  N1   DG A   6       3.678  -7.348  12.942  1.00 15.78           N  
+ATOM    108  C2   DG A   6       3.558  -8.503  13.679  1.00 16.04           C  
+ATOM    109  N2   DG A   6       2.732  -9.421  13.210  1.00 15.11           N  
+ATOM    110  N3   DG A   6       4.187  -8.691  14.842  1.00 14.81           N  
+ATOM    111  C4   DG A   6       4.959  -7.617  15.206  1.00 13.90           C  
+ATOM    112  OP1  DG A   6      10.851  -5.532  19.718  1.00 14.32           O  
+ATOM    113  OP2  DG A   6      10.144  -4.575  17.432  1.00 10.67           O  
+ATOM    114  O5'  DG A   6       8.762  -6.277  18.626  1.00 15.18           O  
+ATOM    115  C5'  DG A   6       8.679  -7.438  19.428  1.00 15.40           C  
+ATOM    116  C4'  DG A   6       7.717  -8.446  18.789  1.00 15.34           C  
+ATOM    117  O4'  DG A   6       6.431  -7.834  18.520  1.00 16.46           O  
+ATOM    118  C3'  DG A   6       8.150  -9.052  17.449  1.00 16.54           C  
+ATOM    119  O3'  DG A   6       9.172 -10.043  17.595  1.00 18.58           O  
+ATOM    120  C2'  DG A   6       6.796  -9.650  17.066  1.00 17.79           C  
+ATOM    121  C1'  DG A   6       5.804  -8.517  17.397  1.00 13.96           C  
+ATOM    122  P    DC A   7      10.498 -10.100  16.665  1.00 17.81           P  
+ATOM    123  N1   DC A   7       7.217  -9.334  12.285  1.00  7.65           N  
+ATOM    124  C2   DC A   7       6.458  -8.793  11.230  1.00 10.22           C  
+ATOM    125  O2   DC A   7       5.771  -9.507  10.500  1.00 15.05           O  
+ATOM    126  N3   DC A   7       6.567  -7.461  10.942  1.00  6.65           N  
+ATOM    127  C4   DC A   7       7.403  -6.694  11.658  1.00  5.07           C  
+ATOM    128  N4   DC A   7       7.447  -5.391  11.420  1.00  4.65           N  
+ATOM    129  C5   DC A   7       8.188  -7.242  12.730  1.00  4.20           C  
+ATOM    130  C6   DC A   7       8.053  -8.558  13.000  1.00  6.45           C  
+ATOM    131  OP1  DC A   7      11.307 -11.102  17.394  1.00 17.82           O  
+ATOM    132  OP2  DC A   7      11.084  -8.759  16.374  1.00 20.08           O  
+ATOM    133  O5'  DC A   7       9.986 -10.722  15.264  1.00 17.30           O  
+ATOM    134  C5'  DC A   7       9.312 -11.986  15.170  1.00 16.36           C  
+ATOM    135  C4'  DC A   7       8.436 -12.095  13.916  1.00 15.85           C  
+ATOM    136  O4'  DC A   7       7.361 -11.148  13.955  1.00 16.34           O  
+ATOM    137  C3'  DC A   7       9.165 -11.823  12.595  1.00 14.83           C  
+ATOM    138  O3'  DC A   7      10.003 -12.907  12.161  1.00 16.25           O  
+ATOM    139  C2'  DC A   7       7.973 -11.600  11.717  1.00 11.20           C  
+ATOM    140  C1'  DC A   7       7.076 -10.772  12.582  1.00 10.61           C  
+ATOM    141  P    DC A   8      11.175 -12.651  11.083  1.00 18.77           P  
+ATOM    142  N1   DC A   8       8.297  -9.310   7.883  1.00  6.87           N  
+ATOM    143  C2   DC A   8       7.867  -8.224   7.123  1.00  9.10           C  
+ATOM    144  O2   DC A   8       7.226  -8.387   6.080  1.00  7.86           O  
+ATOM    145  N3   DC A   8       8.296  -6.966   7.459  1.00  7.75           N  
+ATOM    146  C4   DC A   8       9.147  -6.784   8.485  1.00  9.21           C  
+ATOM    147  N4   DC A   8       9.589  -5.560   8.779  1.00  7.67           N  
+ATOM    148  C5   DC A   8       9.609  -7.891   9.258  1.00  7.40           C  
+ATOM    149  C6   DC A   8       9.156  -9.121   8.923  1.00  9.24           C  
+ATOM    150  OP1  DC A   8      11.871 -13.952  10.908  1.00 20.04           O  
+ATOM    151  OP2  DC A   8      12.020 -11.472  11.376  1.00 20.24           O  
+ATOM    152  O5'  DC A   8      10.469 -12.357   9.649  1.00 18.79           O  
+ATOM    153  C5'  DC A   8       9.733 -13.334   8.924  1.00 12.85           C  
+ATOM    154  C4'  DC A   8       8.867 -12.647   7.941  1.00 14.40           C  
+ATOM    155  O4'  DC A   8       8.156 -11.587   8.589  1.00 10.91           O  
+ATOM    156  C3'  DC A   8       9.598 -11.936   6.845  1.00 14.90           C  
+ATOM    157  O3'  DC A   8      10.249 -12.831   5.936  1.00 15.23           O  
+ATOM    158  C2'  DC A   8       8.377 -11.232   6.304  1.00  9.34           C  
+ATOM    159  C1'  DC A   8       7.789 -10.648   7.568  1.00  8.80           C  
+ATOM    160  P    DG A   9      11.518 -12.329   5.128  1.00 14.64           P  
+ATOM    161  N9   DG A   9       9.338  -8.006   2.891  1.00  5.76           N  
+ATOM    162  C8   DG A   9      10.079  -8.162   4.036  1.00  7.27           C  
+ATOM    163  N7   DG A   9      10.578  -7.077   4.541  1.00  5.05           N  
+ATOM    164  C5   DG A   9      10.143  -6.100   3.664  1.00  6.30           C  
+ATOM    165  C6   DG A   9      10.387  -4.694   3.690  1.00  6.32           C  
+ATOM    166  O6   DG A   9      10.988  -4.056   4.538  1.00  8.77           O  
+ATOM    167  N1   DG A   9       9.805  -4.022   2.632  1.00  5.02           N  
+ATOM    168  C2   DG A   9       9.072  -4.651   1.658  1.00  7.22           C  
+ATOM    169  N2   DG A   9       8.590  -3.921   0.680  1.00  5.13           N  
+ATOM    170  N3   DG A   9       8.837  -5.970   1.631  1.00  8.90           N  
+ATOM    171  C4   DG A   9       9.395  -6.649   2.656  1.00  5.39           C  
+ATOM    172  OP1  DG A   9      11.889 -13.707   4.763  1.00 17.77           O  
+ATOM    173  OP2  DG A   9      12.558 -11.435   5.714  1.00 16.33           O  
+ATOM    174  O5'  DG A   9      10.890 -11.645   3.793  1.00 13.73           O  
+ATOM    175  C5'  DG A   9      10.098 -12.334   2.826  1.00 10.04           C  
+ATOM    176  C4'  DG A   9       9.322 -11.365   2.036  1.00  8.60           C  
+ATOM    177  O4'  DG A   9       8.636 -10.420   2.864  1.00  9.95           O  
+ATOM    178  C3'  DG A   9      10.183 -10.481   1.201  1.00 11.49           C  
+ATOM    179  O3'  DG A   9      10.786 -11.138   0.073  1.00 12.29           O  
+ATOM    180  C2'  DG A   9       9.103  -9.503   0.858  1.00  7.88           C  
+ATOM    181  C1'  DG A   9       8.570  -9.111   2.181  1.00  8.58           C  
+ATOM    182  P     G A  10      12.244 -10.723  -0.414  1.00 18.00           P  
+ATOM    183  N9    G A  10      11.582  -5.303  -1.017  1.00 15.40           N  
+ATOM    184  C8    G A  10      12.179  -6.115  -0.061  1.00 15.00           C  
+ATOM    185  N7    G A  10      12.826  -5.480   0.870  1.00 12.61           N  
+ATOM    186  C5    G A  10      12.635  -4.148   0.522  1.00 13.15           C  
+ATOM    187  C6    G A  10      13.133  -2.991   1.159  1.00 11.89           C  
+ATOM    188  O6    G A  10      13.713  -2.965   2.241  1.00 12.64           O  
+ATOM    189  N1    G A  10      12.806  -1.814   0.462  1.00  9.10           N  
+ATOM    190  C2    G A  10      12.079  -1.777  -0.689  1.00 10.96           C  
+ATOM    191  N2    G A  10      11.851  -0.582  -1.197  1.00 11.87           N  
+ATOM    192  N3    G A  10      11.588  -2.874  -1.294  1.00 12.41           N  
+ATOM    193  C4    G A  10      11.899  -4.020  -0.633  1.00 13.44           C  
+ATOM    194  OP1   G A  10      12.221 -11.870  -1.354  1.00 19.65           O  
+ATOM    195  OP2   G A  10      13.525 -10.237   0.168  1.00 21.55           O  
+ATOM    196  O5'   G A  10      11.507  -9.424  -1.092  1.00 18.23           O  
+ATOM    197  C5'   G A  10      10.721  -9.357  -2.288  1.00 18.20           C  
+ATOM    198  C4'   G A  10      10.589  -7.934  -2.878  1.00 17.37           C  
+ATOM    199  O4'   G A  10      10.102  -6.968  -1.936  1.00 15.12           O  
+ATOM    200  C3'   G A  10      11.859  -7.317  -3.471  1.00 17.88           C  
+ATOM    201  O3'   G A  10      12.164  -7.754  -4.846  1.00 16.65           O  
+ATOM    202  C2'   G A  10      11.470  -5.841  -3.464  1.00 16.83           C  
+ATOM    203  O2'   G A  10      10.607  -5.618  -4.583  1.00 18.75           O  
+ATOM    204  C1'   G A  10      10.721  -5.691  -2.168  1.00 15.79           C  
+TER     205        G A  10                                                      
+ATOM    206  N1    C B  11      13.988   2.735   1.589  1.00 16.99           N  
+ATOM    207  C2    C B  11      13.552   1.541   1.023  1.00 15.65           C  
+ATOM    208  O2    C B  11      12.869   1.532   0.006  1.00 14.94           O  
+ATOM    209  N3    C B  11      13.773   0.359   1.678  1.00 16.15           N  
+ATOM    210  C4    C B  11      14.386   0.347   2.865  1.00 16.53           C  
+ATOM    211  N4    C B  11      14.619  -0.822   3.476  1.00 18.43           N  
+ATOM    212  C5    C B  11      14.816   1.571   3.473  1.00 16.78           C  
+ATOM    213  C6    C B  11      14.597   2.724   2.804  1.00 15.01           C  
+ATOM    214  O5'   C B  11      14.526   5.793   4.007  1.00 18.48           O  
+ATOM    215  C5'   C B  11      14.531   6.777   2.948  1.00 17.64           C  
+ATOM    216  C4'   C B  11      14.028   6.161   1.616  1.00 17.23           C  
+ATOM    217  O4'   C B  11      14.808   4.991   1.256  1.00 16.55           O  
+ATOM    218  C3'   C B  11      12.611   5.611   1.737  1.00 17.97           C  
+ATOM    219  O3'   C B  11      11.508   6.538   1.711  1.00 18.76           O  
+ATOM    220  C2'   C B  11      12.546   4.594   0.654  1.00 14.10           C  
+ATOM    221  O2'   C B  11      12.366   5.290  -0.579  1.00 13.63           O  
+ATOM    222  C1'   C B  11      13.918   3.977   0.766  1.00 14.14           C  
+ATOM    223  P    DC B  12      10.233   6.143   2.644  1.00 21.42           P  
+ATOM    224  N1   DC B  12       9.527   0.825   1.326  1.00 15.29           N  
+ATOM    225  C2   DC B  12       9.472  -0.563   1.382  1.00 14.49           C  
+ATOM    226  O2   DC B  12       8.922  -1.257   0.518  1.00 17.30           O  
+ATOM    227  N3   DC B  12      10.055  -1.190   2.418  1.00 11.60           N  
+ATOM    228  C4   DC B  12      10.676  -0.500   3.383  1.00 15.58           C  
+ATOM    229  N4   DC B  12      11.164  -1.186   4.430  1.00 14.28           N  
+ATOM    230  C5   DC B  12      10.760   0.927   3.341  1.00 15.60           C  
+ATOM    231  C6   DC B  12      10.166   1.544   2.298  1.00 15.73           C  
+ATOM    232  OP1  DC B  12       9.634   7.406   2.139  1.00 21.29           O  
+ATOM    233  OP2  DC B  12      10.077   5.869   4.079  1.00 22.13           O  
+ATOM    234  O5'  DC B  12       9.636   4.841   1.804  1.00 20.84           O  
+ATOM    235  C5'  DC B  12       8.999   5.040   0.519  1.00 19.83           C  
+ATOM    236  C4'  DC B  12       8.512   3.757  -0.108  1.00 18.55           C  
+ATOM    237  O4'  DC B  12       9.529   2.733  -0.171  1.00 19.79           O  
+ATOM    238  C3'  DC B  12       7.498   3.211   0.801  1.00 18.00           C  
+ATOM    239  O3'  DC B  12       6.305   3.969   0.629  1.00 19.14           O  
+ATOM    240  C2'  DC B  12       7.475   1.788   0.344  1.00 15.87           C  
+ATOM    241  C1'  DC B  12       8.913   1.473   0.156  1.00 15.45           C  
+ATOM    242  P    DG B  13       4.970   3.543   1.371  1.00 21.52           P  
+ATOM    243  N9   DG B  13       6.185  -2.069   3.050  1.00  9.23           N  
+ATOM    244  C8   DG B  13       6.745  -1.032   3.745  1.00  8.94           C  
+ATOM    245  N7   DG B  13       7.370  -1.389   4.833  1.00  7.30           N  
+ATOM    246  C5   DG B  13       7.209  -2.767   4.877  1.00  8.43           C  
+ATOM    247  C6   DG B  13       7.692  -3.719   5.823  1.00  9.75           C  
+ATOM    248  O6   DG B  13       8.258  -3.536   6.903  1.00 14.29           O  
+ATOM    249  N1   DG B  13       7.361  -5.014   5.443  1.00  5.73           N  
+ATOM    250  C2   DG B  13       6.655  -5.359   4.323  1.00  2.65           C  
+ATOM    251  N2   DG B  13       6.506  -6.654   4.079  1.00  2.15           N  
+ATOM    252  N3   DG B  13       6.190  -4.477   3.470  1.00  2.55           N  
+ATOM    253  C4   DG B  13       6.497  -3.198   3.793  1.00  6.08           C  
+ATOM    254  OP1  DG B  13       4.172   4.637   0.743  1.00 22.41           O  
+ATOM    255  OP2  DG B  13       5.322   3.646   2.816  1.00 21.67           O  
+ATOM    256  O5'  DG B  13       4.263   2.118   1.102  1.00 18.28           O  
+ATOM    257  C5'  DG B  13       3.977   1.214   2.153  1.00 12.90           C  
+ATOM    258  C4'  DG B  13       3.997  -0.166   1.554  1.00 15.74           C  
+ATOM    259  O4'  DG B  13       5.326  -0.638   1.288  1.00 15.41           O  
+ATOM    260  C3'  DG B  13       3.328  -1.110   2.479  1.00 14.99           C  
+ATOM    261  O3'  DG B  13       1.948  -0.901   2.181  1.00 18.56           O  
+ATOM    262  C2'  DG B  13       3.943  -2.416   1.990  1.00 14.49           C  
+ATOM    263  C1'  DG B  13       5.414  -2.020   1.777  1.00 12.61           C  
+ATOM    264  P    DG B  14       0.784  -1.093   3.255  1.00 15.78           P  
+ATOM    265  N9   DG B  14       3.152  -5.336   5.518  1.00  6.83           N  
+ATOM    266  C8   DG B  14       3.420  -4.010   5.692  1.00  4.36           C  
+ATOM    267  N7   DG B  14       4.172  -3.751   6.719  1.00  5.76           N  
+ATOM    268  C5   DG B  14       4.412  -5.012   7.281  1.00  8.36           C  
+ATOM    269  C6   DG B  14       5.175  -5.383   8.425  1.00 10.81           C  
+ATOM    270  O6   DG B  14       5.939  -4.687   9.102  1.00 10.46           O  
+ATOM    271  N1   DG B  14       5.100  -6.738   8.655  1.00  7.70           N  
+ATOM    272  C2   DG B  14       4.415  -7.650   7.890  1.00  6.88           C  
+ATOM    273  N2   DG B  14       4.444  -8.925   8.254  1.00  4.21           N  
+ATOM    274  N3   DG B  14       3.730  -7.316   6.805  1.00  7.97           N  
+ATOM    275  C4   DG B  14       3.774  -5.982   6.566  1.00  7.79           C  
+ATOM    276  OP1  DG B  14      -0.388  -0.771   2.418  1.00 12.44           O  
+ATOM    277  OP2  DG B  14       0.951  -0.425   4.562  1.00 16.99           O  
+ATOM    278  O5'  DG B  14       0.825  -2.666   3.590  1.00 12.34           O  
+ATOM    279  C5'  DG B  14       0.518  -3.657   2.618  1.00 15.26           C  
+ATOM    280  C4'  DG B  14       0.962  -5.042   3.026  1.00 11.81           C  
+ATOM    281  O4'  DG B  14       2.388  -5.092   3.261  1.00 14.56           O  
+ATOM    282  C3'  DG B  14       0.298  -5.494   4.281  1.00 10.90           C  
+ATOM    283  O3'  DG B  14      -1.014  -5.933   3.977  1.00 16.35           O  
+ATOM    284  C2'  DG B  14       1.223  -6.607   4.600  1.00  8.75           C  
+ATOM    285  C1'  DG B  14       2.583  -6.029   4.341  1.00  8.31           C  
+ATOM    286  P    DC B  15      -2.108  -5.846   5.127  1.00 18.17           P  
+ATOM    287  N1   DC B  15       0.594  -8.193   8.784  1.00 10.36           N  
+ATOM    288  C2   DC B  15       1.420  -8.271   9.913  1.00 13.07           C  
+ATOM    289  O2   DC B  15       1.626  -9.323  10.519  1.00 11.62           O  
+ATOM    290  N3   DC B  15       1.985  -7.143  10.391  1.00  9.60           N  
+ATOM    291  C4   DC B  15       1.755  -5.962   9.810  1.00  9.75           C  
+ATOM    292  N4   DC B  15       2.507  -4.945  10.242  1.00 10.36           N  
+ATOM    293  C5   DC B  15       0.883  -5.835   8.681  1.00  8.80           C  
+ATOM    294  C6   DC B  15       0.336  -6.973   8.201  1.00 11.04           C  
+ATOM    295  OP1  DC B  15      -3.198  -6.237   4.195  1.00 23.53           O  
+ATOM    296  OP2  DC B  15      -2.242  -4.630   5.951  1.00 23.09           O  
+ATOM    297  O5'  DC B  15      -1.783  -7.100   6.053  1.00 20.88           O  
+ATOM    298  C5'  DC B  15      -2.023  -8.439   5.585  1.00 16.99           C  
+ATOM    299  C4'  DC B  15      -1.560  -9.527   6.542  1.00 16.47           C  
+ATOM    300  O4'  DC B  15      -0.145  -9.414   6.793  1.00 14.34           O  
+ATOM    301  C3'  DC B  15      -2.235  -9.419   7.903  1.00 17.63           C  
+ATOM    302  O3'  DC B  15      -3.580  -9.983   8.004  1.00 16.81           O  
+ATOM    303  C2'  DC B  15      -1.174 -10.022   8.803  1.00 12.88           C  
+ATOM    304  C1'  DC B  15       0.116  -9.496   8.210  1.00 14.19           C  
+ATOM    305  P    DG B  16      -4.447  -9.204   9.118  1.00 23.27           P  
+ATOM    306  N9   DG B  16      -0.792  -7.342  13.150  1.00 14.23           N  
+ATOM    307  C8   DG B  16      -1.064  -6.617  12.000  1.00 13.86           C  
+ATOM    308  N7   DG B  16      -0.426  -5.487  11.941  1.00 10.67           N  
+ATOM    309  C5   DG B  16       0.313  -5.477  13.124  1.00 13.65           C  
+ATOM    310  C6   DG B  16       1.184  -4.501  13.652  1.00 10.61           C  
+ATOM    311  O6   DG B  16       1.552  -3.475  13.129  1.00 10.52           O  
+ATOM    312  N1   DG B  16       1.683  -4.846  14.894  1.00 14.28           N  
+ATOM    313  C2   DG B  16       1.388  -6.009  15.567  1.00 12.13           C  
+ATOM    314  N2   DG B  16       1.910  -6.217  16.766  1.00 10.28           N  
+ATOM    315  N3   DG B  16       0.578  -6.929  15.063  1.00 15.53           N  
+ATOM    316  C4   DG B  16       0.082  -6.603  13.853  1.00 12.03           C  
+ATOM    317  OP1  DG B  16      -5.486 -10.240   8.913  1.00 22.76           O  
+ATOM    318  OP2  DG B  16      -4.614  -7.887   8.455  1.00 24.12           O  
+ATOM    319  O5'  DG B  16      -4.232  -8.798  10.672  1.00 18.16           O  
+ATOM    320  C5'  DG B  16      -4.091  -9.850  11.581  1.00 18.35           C  
+ATOM    321  C4'  DG B  16      -3.224  -9.555  12.771  1.00 17.50           C  
+ATOM    322  O4'  DG B  16      -1.873  -9.267  12.423  1.00 15.59           O  
+ATOM    323  C3'  DG B  16      -3.673  -8.498  13.727  1.00 17.67           C  
+ATOM    324  O3'  DG B  16      -4.857  -8.945  14.432  1.00 23.53           O  
+ATOM    325  C2'  DG B  16      -2.423  -8.573  14.568  1.00 16.53           C  
+ATOM    326  C1'  DG B  16      -1.278  -8.659  13.568  1.00 15.43           C  
+ATOM    327  P    DC B  17      -6.006  -7.956  15.048  1.00 19.94           P  
+ATOM    328  N1   DC B  17      -2.194  -5.587  17.570  1.00 12.74           N  
+ATOM    329  C2   DC B  17      -1.248  -4.622  17.829  1.00 13.09           C  
+ATOM    330  O2   DC B  17      -0.698  -4.517  18.933  1.00 12.24           O  
+ATOM    331  N3   DC B  17      -0.984  -3.712  16.852  1.00 14.35           N  
+ATOM    332  C4   DC B  17      -1.639  -3.762  15.686  1.00 13.79           C  
+ATOM    333  N4   DC B  17      -1.297  -2.921  14.711  1.00 16.68           N  
+ATOM    334  C5   DC B  17      -2.631  -4.748  15.430  1.00 11.59           C  
+ATOM    335  C6   DC B  17      -2.858  -5.633  16.400  1.00  8.53           C  
+ATOM    336  OP1  DC B  17      -6.749  -9.243  15.142  1.00 18.85           O  
+ATOM    337  OP2  DC B  17      -6.441  -6.892  14.132  1.00 21.49           O  
+ATOM    338  O5'  DC B  17      -5.598  -7.385  16.536  1.00 17.70           O  
+ATOM    339  C5'  DC B  17      -5.483  -8.267  17.659  1.00 17.29           C  
+ATOM    340  C4'  DC B  17      -4.462  -7.850  18.701  1.00 19.19           C  
+ATOM    341  O4'  DC B  17      -3.142  -7.783  18.121  1.00 20.08           O  
+ATOM    342  C3'  DC B  17      -4.754  -6.460  19.204  1.00 21.26           C  
+ATOM    343  O3'  DC B  17      -5.866  -6.375  20.121  1.00 23.03           O  
+ATOM    344  C2'  DC B  17      -3.399  -6.104  19.736  1.00 18.88           C  
+ATOM    345  C1'  DC B  17      -2.472  -6.604  18.629  1.00 18.39           C  
+ATOM    346  P    DC B  18      -7.007  -5.260  19.781  1.00 28.77           P  
+ATOM    347  N1   DC B  18      -3.297  -1.380  18.786  1.00 18.17           N  
+ATOM    348  C2   DC B  18      -2.446  -0.458  18.171  1.00 16.98           C  
+ATOM    349  O2   DC B  18      -1.573   0.166  18.774  1.00 20.32           O  
+ATOM    350  N3   DC B  18      -2.583  -0.258  16.848  1.00 16.82           N  
+ATOM    351  C4   DC B  18      -3.505  -0.931  16.149  1.00 15.76           C  
+ATOM    352  N4   DC B  18      -3.636  -0.665  14.860  1.00 13.34           N  
+ATOM    353  C5   DC B  18      -4.372  -1.893  16.748  1.00 12.67           C  
+ATOM    354  C6   DC B  18      -4.237  -2.080  18.066  1.00 14.81           C  
+ATOM    355  OP1  DC B  18      -8.010  -5.697  20.796  1.00 27.91           O  
+ATOM    356  OP2  DC B  18      -7.417  -4.926  18.375  1.00 24.48           O  
+ATOM    357  O5'  DC B  18      -6.346  -3.878  20.355  1.00 26.69           O  
+ATOM    358  C5'  DC B  18      -5.876  -3.663  21.675  1.00 22.45           C  
+ATOM    359  C4'  DC B  18      -4.868  -2.527  21.660  1.00 20.14           C  
+ATOM    360  O4'  DC B  18      -3.898  -2.791  20.621  1.00 17.95           O  
+ATOM    361  C3'  DC B  18      -5.383  -1.139  21.350  1.00 20.46           C  
+ATOM    362  O3'  DC B  18      -6.122  -0.495  22.422  1.00 22.52           O  
+ATOM    363  C2'  DC B  18      -4.069  -0.456  20.977  1.00 18.70           C  
+ATOM    364  C1'  DC B  18      -3.245  -1.549  20.252  1.00 18.68           C  
+ATOM    365  P    DG B  19      -7.015   0.794  21.992  1.00 18.68           P  
+ATOM    366  N9   DG B  19      -3.670   3.314  18.697  1.00  8.91           N  
+ATOM    367  C8   DG B  19      -4.569   2.317  18.417  1.00  7.23           C  
+ATOM    368  N7   DG B  19      -4.814   2.192  17.179  1.00  8.80           N  
+ATOM    369  C5   DG B  19      -4.038   3.182  16.585  1.00  8.99           C  
+ATOM    370  C6   DG B  19      -3.831   3.450  15.217  1.00  9.86           C  
+ATOM    371  O6   DG B  19      -4.361   2.871  14.270  1.00 14.98           O  
+ATOM    372  N1   DG B  19      -2.868   4.446  14.998  1.00  8.65           N  
+ATOM    373  C2   DG B  19      -2.192   5.116  15.998  1.00  8.58           C  
+ATOM    374  N2   DG B  19      -1.417   6.149  15.640  1.00  8.82           N  
+ATOM    375  N3   DG B  19      -2.387   4.836  17.299  1.00  9.44           N  
+ATOM    376  C4   DG B  19      -3.324   3.871  17.515  1.00  8.64           C  
+ATOM    377  OP1  DG B  19      -7.592   0.740  23.355  1.00 20.58           O  
+ATOM    378  OP2  DG B  19      -7.881   0.644  20.808  1.00 18.98           O  
+ATOM    379  O5'  DG B  19      -6.137   2.085  21.765  1.00 14.67           O  
+ATOM    380  C5'  DG B  19      -5.282   2.635  22.743  1.00 14.92           C  
+ATOM    381  C4'  DG B  19      -4.265   3.471  22.044  1.00 11.67           C  
+ATOM    382  O4'  DG B  19      -3.668   2.725  20.993  1.00 13.34           O  
+ATOM    383  C3'  DG B  19      -4.831   4.632  21.315  1.00 12.46           C  
+ATOM    384  O3'  DG B  19      -5.233   5.692  22.194  1.00 12.97           O  
+ATOM    385  C2'  DG B  19      -3.646   4.994  20.460  1.00 10.60           C  
+ATOM    386  C1'  DG B  19      -3.149   3.663  20.010  1.00 11.00           C  
+ATOM    387  P     G B  20      -6.156   6.845  21.578  1.00 16.17           P  
+ATOM    388  N9    G B  20      -4.621   7.966  16.781  1.00  8.70           N  
+ATOM    389  C8    G B  20      -5.409   6.982  17.305  1.00  8.15           C  
+ATOM    390  N7    G B  20      -5.951   6.226  16.408  1.00  9.88           N  
+ATOM    391  C5    G B  20      -5.496   6.753  15.190  1.00 10.42           C  
+ATOM    392  C6    G B  20      -5.780   6.342  13.855  1.00 11.50           C  
+ATOM    393  O6    G B  20      -6.476   5.399  13.485  1.00 13.46           O  
+ATOM    394  N1    G B  20      -5.138   7.125  12.924  1.00  8.26           N  
+ATOM    395  C2    G B  20      -4.310   8.187  13.214  1.00  7.88           C  
+ATOM    396  N2    G B  20      -3.735   8.801  12.170  1.00  6.62           N  
+ATOM    397  N3    G B  20      -4.043   8.594  14.477  1.00  8.59           N  
+ATOM    398  C4    G B  20      -4.676   7.821  15.410  1.00  7.98           C  
+ATOM    399  OP1   G B  20      -6.346   7.569  22.839  1.00 11.59           O  
+ATOM    400  OP2   G B  20      -7.348   6.334  20.882  1.00 19.70           O  
+ATOM    401  O5'   G B  20      -5.304   7.716  20.550  1.00 15.64           O  
+ATOM    402  C5'   G B  20      -4.166   8.497  20.960  1.00 13.60           C  
+ATOM    403  C4'   G B  20      -3.731   9.295  19.780  1.00 11.64           C  
+ATOM    404  O4'   G B  20      -3.346   8.405  18.762  1.00 12.78           O  
+ATOM    405  C3'   G B  20      -4.937  10.017  19.154  1.00  9.26           C  
+ATOM    406  O3'   G B  20      -5.162  11.232  19.849  1.00  8.82           O  
+ATOM    407  C2'   G B  20      -4.515  10.231  17.738  1.00 10.28           C  
+ATOM    408  O2'   G B  20      -3.496  11.210  17.640  1.00 14.06           O  
+ATOM    409  C1'   G B  20      -3.782   8.924  17.491  1.00 11.06           C  
+TER     410        G B  20                                                      
+HETATM  411  N1  SPM    21      10.683  -8.783  22.839  1.00 40.13           N  
+HETATM  412  C2  SPM    21      11.531  -7.621  23.379  1.00 38.06           C  
+HETATM  413  C3  SPM    21      10.826  -6.312  23.033  1.00 36.69           C  
+HETATM  414  C4  SPM    21      11.754  -5.116  22.994  1.00 35.02           C  
+HETATM  415  N5  SPM    21      10.958  -3.909  22.549  1.00 32.86           N  
+HETATM  416  C6  SPM    21      12.018  -2.878  22.231  1.00 32.94           C  
+HETATM  417  C7  SPM    21      11.419  -1.515  22.220  1.00 31.05           C  
+HETATM  418  C8  SPM    21      12.460  -0.586  21.671  1.00 30.79           C  
+HETATM  419  C9  SPM    21      12.057   0.847  21.888  1.00 28.48           C  
+HETATM  420  N10 SPM    21      13.064   1.749  21.221  1.00 28.45           N  
+HETATM  421  C11 SPM    21      13.493   2.749  22.270  1.00 30.71           C  
+HETATM  422  C12 SPM    21      14.237   3.946  21.699  1.00 31.37           C  
+HETATM  423  C13 SPM    21      14.691   4.712  22.920  1.00 32.44           C  
+HETATM  424  N14 SPM    21      14.460   6.175  22.642  1.00 34.72           N  
+HETATM  425  O   HOH    22      -2.974  -2.437  11.925  1.00 16.09           O  
+HETATM  426  O   HOH    23       4.908  -5.520   0.996  1.00 18.38           O  
+HETATM  427  O   HOH    24      -7.781   4.610  18.814  1.00 18.46           O  
+HETATM  428  O   HOH    25      -0.410  11.047   5.984  1.00 21.92           O  
+HETATM  429  O   HOH    26      -8.768   2.303  25.439  1.00 63.34           O  
+HETATM  430  O   HOH    27       2.982  -6.730  19.716  1.00 59.88           O  
+HETATM  431  O   HOH    28      14.965 -12.628  -1.536  1.00 20.30           O  
+HETATM  432  O   HOH    29      11.946 -14.326   0.320  1.00 19.82           O  
+HETATM  433  O   HOH    30      10.067  -5.986  15.026  1.00 53.92           O  
+HETATM  434  O   HOH    31      12.687  -7.091   6.513  1.00 22.27           O  
+HETATM  435  O   HOH    32      12.609  -9.474   8.227  1.00 37.71           O  
+HETATM  436  O   HOH    33      -2.941  -7.858   2.063  1.00 27.19           O  
+HETATM  437  O   HOH    34       7.529  -3.577  14.088  1.00 21.79           O  
+HETATM  438  O   HOH    35       1.254  -0.882  12.378  1.00 24.27           O  
+HETATM  439  O   HOH    36       3.423   0.963  13.195  1.00 29.99           O  
+HETATM  440  O   HOH    37       7.112  -6.175  -0.485  1.00 27.77           O  
+HETATM  441  O   HOH    38      -0.686  -3.219  10.199  1.00 34.51           O  
+HETATM  442  O   HOH    39       9.580   7.535  14.458  1.00 36.42           O  
+HETATM  443  O   HOH    40      13.715  -4.726   5.032  1.00 69.56           O  
+HETATM  444  O   HOH    41       5.720  -2.345  11.434  1.00 31.09           O  
+HETATM  445  O   HOH    42       3.591   6.788   4.471  1.00 54.80           O  
+HETATM  446  O   HOH    43      10.402   4.780  14.504  1.00 68.31           O  
+HETATM  447  O   HOH    44      14.574 -10.275  18.466  1.00 49.77           O  
+HETATM  448  O   HOH    45       9.740   9.480   0.051  1.00 32.13           O  
+HETATM  449  O   HOH    46       0.657   2.761   2.939  1.00 32.50           O  
+HETATM  450  O   HOH    47      -4.337  -5.705  11.632  1.00 61.29           O  
+HETATM  451  O   HOH    48       8.511   0.032   6.773  1.00 19.39           O  
+HETATM  452  O   HOH    49       4.696  -1.081   7.336  1.00 33.58           O  
+HETATM  453  O   HOH    50      15.251 -12.102   2.108  1.00 32.25           O  
+HETATM  454  O   HOH    51      -6.031  -4.587  15.810  1.00 44.75           O  
+HETATM  455  O   HOH    52       3.985   7.860   0.750  1.00 43.33           O  
+HETATM  456  O   HOH    53      -9.947  -8.411  16.066  1.00 42.79           O  
+HETATM  457  O   HOH    54      14.022  -9.173   2.574  1.00 61.84           O  
+HETATM  458  O   HOH    55       8.927   4.925  21.552  1.00 21.30           O  
+HETATM  459  O   HOH    56      12.080  -9.656  20.565  1.00 39.11           O  
+HETATM  460  O   HOH    57      10.264   3.453   5.213  1.00 32.36           O  
+HETATM  461  O   HOH    58       7.585   8.903  10.458  1.00 55.81           O  
+HETATM  462  O   HOH    59      -6.958 -12.129  15.577  1.00 25.61           O  
+HETATM  463  O   HOH    60       7.487   1.041  16.040  1.00 46.35           O  
+HETATM  464  O   HOH    61      -0.194  -3.247   7.396  1.00 35.93           O  
+HETATM  465  O   HOH    62       8.225   6.727  12.206  1.00 60.91           O  
+HETATM  466  O   HOH    63      -7.060   4.463   4.604  1.00 46.27           O  
+HETATM  467  O   HOH    64       7.946   3.533  12.709  1.00 28.03           O  
+HETATM  468  O   HOH    65       6.779  -1.926   8.904  1.00 41.06           O  
+HETATM  469  O   HOH    66      -4.616   1.948   8.938  1.00 36.90           O  
+HETATM  470  O   HOH    67       2.587   3.984   4.922  1.00 71.03           O  
+HETATM  471  O   HOH    68      -2.870   3.373   6.568  1.00 35.34           O  
+HETATM  472  O   HOH    69      -2.641  -4.676   8.852  1.00 65.95           O  
+HETATM  473  O   HOH    70       7.896   2.158   5.060  1.00 37.59           O  
+HETATM  474  O   HOH    71     -10.031  -4.027  18.622  1.00 67.65           O  
+HETATM  475  O   HOH    72      -8.176  -1.645  24.639  1.00 49.61           O  
+HETATM  476  O   HOH    73      17.116   0.579  15.466  1.00 47.99           O  
+HETATM  477  O   HOH    74      -2.555   0.759   5.884  1.00 40.81           O  
+HETATM  478  O   HOH    75       5.250   1.995   7.543  1.00 70.98           O  
+HETATM  479  O   HOH    76     -10.113  -6.723  18.202  1.00 59.20           O  
+HETATM  480  O   HOH    77       1.829  -2.266   9.724  1.00 75.20           O  
+HETATM  481  O   HOH    78      -8.873  -3.504  22.680  1.00 79.41           O  
+HETATM  482  O   HOH    79      -9.310  -1.446  19.391  1.00 71.79           O  
+HETATM  483  O   HOH    80      -6.613   0.677  10.598  1.00 80.35           O  
+HETATM  484  O   HOH    81      -7.134   2.452   7.202  1.00 72.90           O  
+HETATM  485  O   HOH    82      13.359   4.222  15.085  1.00 55.82           O  
+HETATM  486  O   HOH    83      -1.981   3.230   3.724  1.00 91.06           O  
+HETATM  487  O   HOH    84       8.014 -16.765   6.352  1.00 97.71           O  
+HETATM  488  O   HOH    85      13.277  -1.574   6.340  1.00 80.86           O  
+HETATM  489  O   HOH    86       4.216   1.820  10.481  1.00 76.69           O  
+HETATM  490  O   HOH    87      10.662 -11.389  23.778  1.00 49.18           O  
+HETATM  491  O   HOH    88      -2.029 -10.316  17.858  1.00 83.02           O  
+CONECT  411  412                                                                
+CONECT  412  411  413                                                           
+CONECT  413  412  414                                                           
+CONECT  414  413  415                                                           
+CONECT  415  414  416                                                           
+CONECT  416  415  417                                                           
+CONECT  417  416  418                                                           
+CONECT  418  417  419                                                           
+CONECT  419  418  420                                                           
+CONECT  420  419  421                                                           
+CONECT  421  420  422                                                           
+CONECT  422  421  423                                                           
+CONECT  423  422  424                                                           
+CONECT  424  423                                                                
+MASTER        0    0    0    0    0    0    0    6  489    2   14    2          
+END                                                                             

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/1overx.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/1overx.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/1overx.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,7 +8,7 @@
   static int lastsign=0;
   if(x == 0) return false;
   int sign=sgn(x);
-  bool b=lastsign == 0 || sign == lastsign; 
+  bool b=lastsign == 0 || sign == lastsign;
   lastsign=sign;
   return b ? true : default;
 }

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/BezierPatch.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,9 +5,9 @@
 
 surface s=surface(patch(new triple[][] {
       {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
-      {(0,1,0),(1,0,1),(1,0,1),(2,1,0)},
-      {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)},
-      {(0,2,0),(1,2,0),(1,2,0),(2,2,0)}}));
+        {(0,1,0),(1,0,1),(1,0,1),(2,1,0)},
+          {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)},
+            {(0,2,0),(1,2,0),(1,2,0),(2,2,0)}}));
 
 draw(s,yellow);
 draw(s.s[0].vequals(0.5),squarecap+2bp+blue,currentlight);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/BezierSurface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,29 +10,33 @@
 // viewpoint=getstring("viewpoint",viewpoint);
 currentprojection=perspective(viewpoint);
 
-triple[][][] P={
+triple[][][] P=
   {
+   {
     {(-1.6,0,1.875),(-2.3,0,1.875),(-2.7,0,1.875),(-2.7,0,1.65),},
     {(-1.6,-0.3,1.875),(-2.3,-0.3,1.875),(-2.7,-0.3,1.875),(-2.7,-0.3,1.65),},
     {(-1.5,-0.3,2.1),(-2.5,-0.3,2.1),(-3,-0.3,2.1),(-3,-0.3,1.65),},
     {(-1.5,0,2.1),(-2.5,0,2.1),(-3,0,2.1),(-3,0,1.65),}
-  },{
+   },
+   {
     {(-2.7,0,1.65),(-2.7,0,1.425),(-2.5,0,0.975),(-2,0,0.75),},
     {(-2.7,-0.3,1.65),(-2.7,-0.3,1.425),(-2.5,-0.3,0.975),(-2,-0.3,0.75),},
     {(-3,-0.3,1.65),(-3,-0.3,1.2),(-2.65,-0.3,0.7275),(-1.9,-0.3,0.45),},
     {(-3,0,1.65),(-3,0,1.2),(-2.65,0,0.7275),(-1.9,0,0.45),}
-  },{
+   },
+   {
     {(-2.7,0,1.65),(-2.7,0,1.875),(-2.3,0,1.875),(-1.6,0,1.875),},
     {(-2.7,0.3,1.65),(-2.7,0.3,1.875),(-2.3,0.3,1.875),(-1.6,0.3,1.875),},
     {(-3,0.3,1.65),(-3,0.3,2.1),(-2.5,0.3,2.1),(-1.5,0.3,2.1),},
     {(-3,0,1.65),(-3,0,2.1),(-2.5,0,2.1),(-1.5,0,2.1),}
-  },{
+   },
+   {
     {(-2,0,0.75),(-2.5,0,0.975),(-2.7,0,1.425),(-2.7,0,1.65),},
     {(-2,0.3,0.75),(-2.5,0.3,0.975),(-2.7,0.3,1.425),(-2.7,0.3,1.65),},
     {(-1.9,0.3,0.45),(-2.65,0.3,0.7275),(-3,0.3,1.2),(-3,0.3,1.65),},
     {(-1.9,0,0.45),(-2.65,0,0.7275),(-3,0,1.2),(-3,0,1.65),}
-  }
-};
+   }
+  };
 
 picture pic;
 size(pic,15cm);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/CDlabel.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,12 +5,12 @@
 fill(unitcircle^^(scale(2/11.7)*unitcircle),
      evenodd+rgb(124/255,205/255,124/255));
 label(scale(1.1)*minipage(
-"\centering\scriptsize \textbf{\LARGE {\tt Asymptote}\\
+                          "\centering\scriptsize \textbf{\LARGE {\tt Asymptote}\\
 \smallskip
 \small The Vector Graphics Language}\\
 \smallskip
 \textsc{Andy Hammerlindl, John Bowman, and Tom Prince}
-http://asymptote.sourceforge.net\\
+https://asymptote.sourceforge.io\\
 ",8cm),(0,0.6));
 label(graphic("logo","height=7cm"),(0,-0.22));
 clip(unitcircle^^(scale(2/11.7)*unitcircle),evenodd);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/Gouraud.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 size(200);
 
-pen[] p={red,green,blue,magenta};
+pen[] p={red,green,blue,yellow};
 pair[] z={(-1,0),(0,0),(0,1),(1,0)};
 int[] edges={0,0,0,1};
 gouraudshade(z[0]--z[2]--z[3]--cycle,p,z,edges);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/HermiteSpline.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,14 +1,14 @@
 import graph;
 
-size(140mm,70mm,IgnoreAspect); 
-scale(false); 
+size(140mm,70mm,IgnoreAspect);
+scale(false);
 real[] x={1,3,4,5,6};
-real[] y={1,5,2,0,4}; 
+real[] y={1,5,2,0,4};
 
-marker mark=marker(scale(1mm)*cross(6,false,r=0.35),red,Fill); 
+marker mark=marker(scale(1mm)*cross(6,false,r=0.35),red,Fill);
 
 draw(graph(x,y,Hermite),"Hermite Spline",mark);
-xaxis("$x$",Bottom,LeftTicks(x)); 
-yaxis("$y$",Left,LeftTicks); 
+xaxis("$x$",Bottom,LeftTicks(x));
+yaxis("$y$",Left,LeftTicks);
 attach(legend(),point(NW),40S+30E,UnFill);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/Klein.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/Klein.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/Klein.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,12 +2,11 @@
 
 size(469pt);
 
-currentprojection=perspective(
-camera=(25.0851928432063,-30.3337528952473,19.3728775115443),
-up=Z,
-target=(-0.590622314050054,0.692357205025578,-0.627122488455679),
-zoom=1,
-autoadjust=false);
+currentprojection=
+  perspective(camera=(25.0851928432063,-30.3337528952473,19.3728775115443),
+              up=Z,
+              target=(-0.590622314050054,0.692357205025578,-0.627122488455679),
+              zoom=1,autoadjust=false);
 
 triple f(pair t) {
   real u=t.x;

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/NURBScurve.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,13 +8,14 @@
 // udegree=3, nu=6;
 real[] knot={0,0,0,0,0.4,0.6,1,1,1,1};
 
-triple[] P={
-  (-31.2061,12.001,6.45082),
-  (-31.3952,14.7353,6.53707),
-  (-31.5909,21.277,6.70051),
-  (-31.4284,25.4933,6.76745),
-  (-31.5413,30.3485,6.68777),
-  (-31.4896,32.2839,6.58385)
+triple[] P=
+  {
+   (-31.2061,12.001,6.45082),
+   (-31.3952,14.7353,6.53707),
+   (-31.5909,21.277,6.70051),
+   (-31.4284,25.4933,6.76745),
+   (-31.5413,30.3485,6.68777),
+   (-31.4896,32.2839,6.58385)
   };
 
 draw(P,knot,green);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsphere.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,16 +1,16 @@
 import three;
 
 /* Reference:
- at article{Qin97,
-  title={{Representing quadric surfaces using NURBS surfaces}},
-  author={Qin, K.},
-  journal={Journal of Computer Science and Technology},
-  volume={12},
-  number={3},
-  pages={210--216},
-  year={1997},
-  publisher={Springer}
-}
+   @article{Qin97,
+   title={{Representing quadric surfaces using NURBS surfaces}},
+   author={Qin, K.},
+   journal={Journal of Computer Science and Technology},
+   volume={12},
+   number={3},
+   pages={210--216},
+   year={1997},
+   publisher={Springer}
+   }
 */
 
 size(10cm);
@@ -31,8 +31,8 @@
 
 real[][] weights=new real[3][4];
 for(int i=0; i < 3; ++i)
-for(int j=0; j < 4; ++j)
-  weights[i][j]=W[i]*w[j];
+  for(int j=0; j < 4; ++j)
+    weights[i][j]=W[i]*w[j];
 
 real[] uknot={0,0,1/3,1/2,1,1};
 real[] vknot={0,0,0,0,1,1,1,1};
@@ -40,7 +40,7 @@
 int N=1;
 
 for(int k=0; k < N; ++k)
-for(int i=0; i < 4; ++i)
-  draw(shift(k*Z)*P[i:i+3],uknot,vknot,weights,blue);
+  for(int i=0; i < 4; ++i)
+    draw(shift(k*Z)*P[i:i+3],uknot,vknot,weights,blue);
 
 // draw(unitsphere,red+opacity(0.1));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/NURBSsurface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,43 +9,49 @@
 real[] uknot={0,0,0,0,0.5,1,1,1,1};
 real[] vknot={0,0,0,0,0.4,0.6,1,1,1,1};
 
-triple[][] P={{
-  (-31.2061,12.001,6.45082),
-  (-31.3952,14.7353,6.53707),
-  (-31.5909,21.277,6.70051),
-  (-31.4284,25.4933,6.76745),
-  (-31.5413,30.3485,6.68777),
-  (-31.4896,32.2839,6.58385)
-  },{
-  (-28.279,12.001,7.89625),
-  (-28.4187,14.7353,8.00954),
-  (-28.5633,21.277,8.22422),
-  (-28.4433,25.4933,8.31214),
-  (-28.5266,30.3485,8.20749),
-  (-28.4885,32.2839,8.07099)
-  },{
-  (-20,12.001,10.0379),
-  (-20,14.7353,10.2001),
-  (-20,21.277,10.5076),
-  (-20,25.4933,10.6335),
-  (-20,30.3485,10.4836),
-  (-20,32.2839,10.2881)
-  },{
-  (-11.721,12.001,7.84024),
-  (-11.5813,14.7353,7.95269),
-  (-11.4367,21.277,8.16575),
-  (-11.5567,25.4933,8.25302),
-  (-11.4734,30.3485,8.14915),
-  (-11.5115,32.2839,8.01367)
-  },{
-  (-8.79391,12.001,6.39481),
-  (-8.60483,14.7353,6.48022),
-  (-8.40905,21.277,6.64204),
-  (-8.57158,25.4933,6.70832),
-  (-8.45874,30.3485,6.62943),
-  (-8.51041,32.2839,6.52653)
-  }
-};
+triple[][] P=
+  {
+   {
+    (-31.2061,12.001,6.45082),
+    (-31.3952,14.7353,6.53707),
+    (-31.5909,21.277,6.70051),
+    (-31.4284,25.4933,6.76745),
+    (-31.5413,30.3485,6.68777),
+    (-31.4896,32.2839,6.58385)
+   },
+   {
+    (-28.279,12.001,7.89625),
+    (-28.4187,14.7353,8.00954),
+    (-28.5633,21.277,8.22422),
+    (-28.4433,25.4933,8.31214),
+    (-28.5266,30.3485,8.20749),
+    (-28.4885,32.2839,8.07099)
+   },
+   {
+    (-20,12.001,10.0379),
+    (-20,14.7353,10.2001),
+    (-20,21.277,10.5076),
+    (-20,25.4933,10.6335),
+    (-20,30.3485,10.4836),
+    (-20,32.2839,10.2881)
+   },
+   {
+    (-11.721,12.001,7.84024),
+    (-11.5813,14.7353,7.95269),
+    (-11.4367,21.277,8.16575),
+    (-11.5567,25.4933,8.25302),
+    (-11.4734,30.3485,8.14915),
+    (-11.5115,32.2839,8.01367)
+   },
+   {
+    (-8.79391,12.001,6.39481),
+    (-8.60483,14.7353,6.48022),
+    (-8.40905,21.277,6.64204),
+    (-8.57158,25.4933,6.70832),
+    (-8.45874,30.3485,6.62943),
+    (-8.51041,32.2839,6.52653)
+   }
+  };
 
 draw(P,uknot,vknot,new pen[] {red,green,blue,magenta});
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSphere.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSphere.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSphere.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -33,9 +33,9 @@
 draw(q,1bp+heavyblue);
 
 triple
-	A=(0,0,1),
-	B=(u(40),v(40),w(40)),
-	C=(x(40),y(40),z(40));
+A=(0,0,1),
+B=(u(40),v(40),w(40)),
+C=(x(40),y(40),z(40));
 
 path3 L=A--C;
 draw(L,1bp+black);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,13 +1,13 @@
 import graph3;
 import palette;
-       
+
 size(200,300,keepAspect=false);
 //settings.nothin=true;
-       
+
 currentprojection=orthographic(10,10,30);
 currentlight=(10,10,5);
 triple f(pair t) {return (exp(t.x)*cos(t.y),exp(t.x)*sin(t.y),t.y);}
-       
+
 surface s=surface(f,(-4,-2pi),(0,4pi),8,16,Spline);
 s.colors(palette(s.map(zpart),Rainbow()));
 draw(s,render(merge=true));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/RiemannSurfaceRoot.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,11 +5,11 @@
 int n=3;
 
 size(200,300,keepAspect=false);
- 
+
 currentprojection=orthographic(10,10,30);
 currentlight=(10,10,5);
 triple f(pair t) {return (t.x*cos(t.y),t.x*sin(t.y),t.x^(1/n)*sin(t.y/n));}
- 
+
 surface s=surface(f,(0,0),(1,2pi*n),8,16,Spline);
 s.colors(palette(s.map(zpart),Rainbow()));
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiGasket.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,15 +2,15 @@
 import palette;
 import three;
 currentprojection=perspective(8,2,1);
-    
+
 triple[] M={(0,0,1),1/3*(sqrt(8),0,-1),
             1/3*((sqrt(8))*Cos(120),(sqrt(8))*Sin(120),-1),
             1/3*((sqrt(8))*Cos(240),(sqrt(8))*Sin(240),-1)};
-    
+
 int level=5;
-    
+
 surface s;
-    
+
 void recur(triple p, real u, int l) {
   if(l < level)
     for(triple V : M)
@@ -23,9 +23,9 @@
       s.append(surface((p+u*(V+M[3]))--(p+u*(V+M[2]))--(p+u*(V+M[1]))--cycle));
     }
 }
-    
+
 recur(O,0.5,1);
-    
+
 s.colors(palette(s.map(zpart),Rainbow()));
-    
+
 draw(s,render(merge=true));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/SierpinskiSponge.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,36 +4,40 @@
 
 currentprojection=orthographic(1,1,1);
 
-triple[] M={
-  (-1,-1,-1),(0,-1,-1),(1,-1,-1),(1,0,-1),
-  (1,1,-1),(0,1,-1),(-1,1,-1),(-1,0,-1),
-  (-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0),
-  (-1,-1,1),(0,-1,1),(1,-1,1),(1,0,1),(1,1,1),(0,1,1),(-1,1,1),(-1,0,1)
-};
+triple[] M=
+  {
+   (-1,-1,-1),(0,-1,-1),(1,-1,-1),(1,0,-1),
+   (1,1,-1),(0,1,-1),(-1,1,-1),(-1,0,-1),
+   (-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0),
+   (-1,-1,1),(0,-1,1),(1,-1,1),(1,0,1),(1,1,1),(0,1,1),(-1,1,1),(-1,0,1)
+  };
 
-surface[] Squares={
-  surface((1,-1,-1)--(1,1,-1)--(1,1,1)--(1,-1,1)--cycle),
-  surface((-1,-1,-1)--(-1,1,-1)--(-1,1,1)--(-1,-1,1)--cycle),
-  surface((1,1,-1)--(-1,1,-1)--(-1,1,1)--(1,1,1)--cycle),
-  surface((1,-1,-1)--(-1,-1,-1)--(-1,-1,1)--(1,-1,1)--cycle),
-  surface((1,-1,1)--(1,1,1)--(-1,1,1)--(-1,-1,1)--cycle),
-  surface((1,-1,-1)--(1,1,-1)--(-1,1,-1)--(-1,-1,-1)--cycle),
+surface[] Squares=
+  {
+   surface((1,-1,-1)--(1,1,-1)--(1,1,1)--(1,-1,1)--cycle),
+   surface((-1,-1,-1)--(-1,1,-1)--(-1,1,1)--(-1,-1,1)--cycle),
+   surface((1,1,-1)--(-1,1,-1)--(-1,1,1)--(1,1,1)--cycle),
+   surface((1,-1,-1)--(-1,-1,-1)--(-1,-1,1)--(1,-1,1)--cycle),
+   surface((1,-1,1)--(1,1,1)--(-1,1,1)--(-1,-1,1)--cycle),
+   surface((1,-1,-1)--(1,1,-1)--(-1,1,-1)--(-1,-1,-1)--cycle),
 };
 
-int[][] SquaresPoints={
-  {2,3,4,10,16,15,14,9},
-  {0,7,6,11,18,19,12,8},
-  {4,5,6,11,18,17,16,10},
-  {2,1,0,8,12,13,14,9},
-  {12,13,14,15,16,17,18,19},
-  {0,1,2,3,4,5,6,7}
-};
+int[][] SquaresPoints=
+  {
+   {2,3,4,10,16,15,14,9},
+   {0,7,6,11,18,19,12,8},
+   {4,5,6,11,18,17,16,10},
+   {2,1,0,8,12,13,14,9},
+   {12,13,14,15,16,17,18,19},
+   {0,1,2,3,4,5,6,7}
+  };
 
-int[][] index={
-  {0,2,4},{0,1},{1,2,4},{2,3},{1,3,4},{0,1},{0,3,4},{2,3},
-  {4,5},{4,5},{4,5},{4,5},
-  {0,2,5},{0,1},{1,2,5},{2,3},{1,3,5},{0,1},{0,3,5},{2,3}
-};
+int[][] index=
+  {
+   {0,2,4},{0,1},{1,2,4},{2,3},{1,3,4},{0,1},{0,3,4},{2,3},
+   {4,5},{4,5},{4,5},{4,5},
+   {0,2,5},{0,1},{1,2,5},{2,3},{1,3,5},{0,1},{0,3,5},{2,3}
+  };
 
 int[] Sponge0=array(n=6,value=1);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/animations/slidemovies.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -16,7 +16,7 @@
 usersetting();
 
 titlepage("Slides with {\tt Asymptote}: Animations","John C. Bowman",
-          "University of Alberta","\today","http://asymptote.sf.net");
+          "University of Alberta","\today","https://asymptote.sourceforge.io");
 
 title("Embedded PDF movies (portable)");
 animation a=animation("A");

Added: trunk/Master/texmf-dist/doc/asymptote/examples/axialshade.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/axialshade.asy	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/axialshade.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,5 @@
+size(0,100);
+
+axialshade(unitsquare,red,(0,0),blue,(1,1));
+
+

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/bars3.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/bars3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/bars3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 import three;
-import palette; 
+import palette;
 import graph3;
 
 size(300);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/centroidfg.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,9 +8,9 @@
 
 draw(graph(f,a,b,operator ..),red);
 draw(graph(g,a,b,operator ..),blue);
- 
-xaxis(); 
 
+xaxis();
+
 int n=5;
 
 real width=(b-a)/(real) n;
@@ -18,7 +18,7 @@
   real x=a+width*i;
   draw((x,g(x))--(x,f(x)));
 }
- 
+
 labelx("$a$",a);
 labelx("$b$",b);
 draw((a,0)--(a,g(a)),dotted);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/colorpatch.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/colorpatch.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/colorpatch.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,9 +5,9 @@
 
 surface s=surface(patch(new triple[][] {
       {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
-      {(0,1,0),(1,0,1),(1,0,1),(2,1,0)},
-      {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)},
-      {(0,2,0),(1,2,0),(1,2,0),(2,2,0)}}));
+        {(0,1,0),(1,0,1),(1,0,1),(2,1,0)},
+          {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)},
+            {(0,2,0),(1,2,0),(1,2,0),(2,2,0)}}));
 
 s.s[0].colors=new pen[] {red,green,blue,black};
 draw(s,nolight);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/colorplanes.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -16,7 +16,7 @@
 gouraudshade(faces.push(y),project(y),p,edges);
 gouraudshade(faces.push(l),project(l),p,edges);
 gouraudshade(faces.push(g),project(g),new pen[]{cyan,magenta,yellow,black},
-	     edges);
+             edges);
 
 add(faces);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/conicurv.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/conicurv.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/conicurv.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,4 +1,4 @@
-// Original name : conicurv.mp 
+// Original name : conicurv.mp
 // Author : L. Nobre G.
 // Translators : J. Pienaar (2004) and John Bowman (2005)
 
@@ -7,7 +7,7 @@
 
 size(300,0);
 
-currentprojection=perspective(10,-5,5.44); 
+currentprojection=perspective(10,-5,5.44);
 
 real theta=30, width=3, shortradius=2, bord=2, refsize=1, vecsize=2;
 real height=0.3, anglar=1.75, totup=3;

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/contextfonts.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 settings.tex="context";
 // Work around ConTeXT bug for font sizes less than 12pt:
-texpreamble("\setupbodyfont[8pt]"); 
+texpreamble("\setupbodyfont[8pt]");
 
 usetypescript("iwona");
 usetypescript("antykwa-torunska");

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/controlsystem.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 block delay=roundrectangle("$e^{-sT_t}$",(0.33,0));
 block system=roundrectangle("$\frac{s+3}{s^2+0.3s+1}$",(0.6,0));
 block controller=roundrectangle("$0.06\left( 1 + \frac{1}{s}\right)$",
-				(0.45,-0.25));
+                                (0.45,-0.25));
 block sum1=circle("",(0.15,0),mindiameter=0.3cm);
 block junction1=circle("",(0.75,0),fillpen=currentpen);
 
@@ -16,7 +16,7 @@
 
 add(new void(picture pic, transform t) {
     blockconnector operator --=blockconnector(pic,t);
-    
+
     block(0,0)--Label("$u$",align=N)--Arrow--sum1--Arrow--delay--Arrow--
       system--junction1--Label("$y$",align=N)--Arrow--block(1,0);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/cosaddition.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 real A=130;
 real B=40;
 
-pair O=(0,0); 
+pair O=(0,0);
 pair R=(1,0);
 pair P=dir(A);
 pair Q=dir(B);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/cpkcolors.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -17,243 +17,245 @@
  *  License along with this library; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-string[] Element={
-    "Xx", // 0
-    "H",  // 1
-    "He", // 2
-    "Li", // 3
-    "Be", // 4
-    "B",  // 5
-    "C",  // 6
-    "N",  // 7
-    "O",  // 8
-    "F",  // 9
-    "Ne", // 10
-    "Na", // 11
-    "Mg", // 12
-    "Al", // 13
-    "Si", // 14
-    "P",  // 15
-    "S",  // 16
-    "Cl", // 17
-    "Ar", // 18
-    "K",  // 19
-    "Ca", // 20
-    "Sc", // 21
-    "Ti", // 22
-    "V",  // 23
-    "Cr", // 24
-    "Mn", // 25
-    "Fe", // 26
-    "Co", // 27
-    "Ni", // 28
-    "Cu", // 29
-    "Zn", // 30
-    "Ga", // 31
-    "Ge", // 32
-    "As", // 33
-    "Se", // 34
-    "Br", // 35
-    "Kr", // 36
-    "Rb", // 37
-    "Sr", // 38
-    "Y",  // 39
-    "Zr", // 40
-    "Nb", // 41
-    "Mo", // 42
-    "Tc", // 43
-    "Ru", // 44
-    "Rh", // 45
-    "Pd", // 46
-    "Ag", // 47
-    "Cd", // 48
-    "In", // 49
-    "Sn", // 50
-    "Sb", // 51
-    "Te", // 52
-    "I",  // 53
-    "Xe", // 54
-    "Cs", // 55
-    "Ba", // 56
-    "La", // 57
-    "Ce", // 58
-    "Pr", // 59
-    "Nd", // 60
-    "Pm", // 61
-    "Sm", // 62
-    "Eu", // 63
-    "Gd", // 64
-    "Tb", // 65
-    "Dy", // 66
-    "Ho", // 67
-    "Er", // 68
-    "Tm", // 69
-    "Yb", // 70
-    "Lu", // 71
-    "Hf", // 72
-    "Ta", // 73
-    "W",  // 74
-    "Re", // 75
-    "Os", // 76
-    "Ir", // 77
-    "Pt", // 78
-    "Au", // 79
-    "Hg", // 80
-    "Tl", // 81
-    "Pb", // 82
-    "Bi", // 83
-    "Po", // 84
-    "At", // 85
-    "Rn", // 86
-    "Fr", // 87
-    "Ra", // 88
-    "Ac", // 89
-    "Th", // 90
-    "Pa", // 91
-    "U",  // 92
-    "Np", // 93
-    "Pu", // 94
-    "Am", // 95
-    "Cm", // 96
-    "Bk", // 97
-    "Cf", // 98
-    "Es", // 99
-    "Fm", // 100
-    "Md", // 101
-    "No", // 102
-    "Lr", // 103
-    "Rf", // 104
-    "Db", // 105
-    "Sg", // 106
-    "Bh", // 107
-    "Hs", // 108
-    "Mt", // 109
-    /*
-    "Ds", // 110
-    "Uuu",// 111
-    "Uub",// 112
-    "Uut",// 113
-    "Uuq",// 114
-    "Uup",// 115
-    "Uuh",// 116
-    "Uus",// 117
-    "Uuo",// 118
-    */
-};
+string[] Element=
+  {
+   "Xx", // 0
+   "H",  // 1
+   "He", // 2
+   "Li", // 3
+   "Be", // 4
+   "B",  // 5
+   "C",  // 6
+   "N",  // 7
+   "O",  // 8
+   "F",  // 9
+   "Ne", // 10
+   "Na", // 11
+   "Mg", // 12
+   "Al", // 13
+   "Si", // 14
+   "P",  // 15
+   "S",  // 16
+   "Cl", // 17
+   "Ar", // 18
+   "K",  // 19
+   "Ca", // 20
+   "Sc", // 21
+   "Ti", // 22
+   "V",  // 23
+   "Cr", // 24
+   "Mn", // 25
+   "Fe", // 26
+   "Co", // 27
+   "Ni", // 28
+   "Cu", // 29
+   "Zn", // 30
+   "Ga", // 31
+   "Ge", // 32
+   "As", // 33
+   "Se", // 34
+   "Br", // 35
+   "Kr", // 36
+   "Rb", // 37
+   "Sr", // 38
+   "Y",  // 39
+   "Zr", // 40
+   "Nb", // 41
+   "Mo", // 42
+   "Tc", // 43
+   "Ru", // 44
+   "Rh", // 45
+   "Pd", // 46
+   "Ag", // 47
+   "Cd", // 48
+   "In", // 49
+   "Sn", // 50
+   "Sb", // 51
+   "Te", // 52
+   "I",  // 53
+   "Xe", // 54
+   "Cs", // 55
+   "Ba", // 56
+   "La", // 57
+   "Ce", // 58
+   "Pr", // 59
+   "Nd", // 60
+   "Pm", // 61
+   "Sm", // 62
+   "Eu", // 63
+   "Gd", // 64
+   "Tb", // 65
+   "Dy", // 66
+   "Ho", // 67
+   "Er", // 68
+   "Tm", // 69
+   "Yb", // 70
+   "Lu", // 71
+   "Hf", // 72
+   "Ta", // 73
+   "W",  // 74
+   "Re", // 75
+   "Os", // 76
+   "Ir", // 77
+   "Pt", // 78
+   "Au", // 79
+   "Hg", // 80
+   "Tl", // 81
+   "Pb", // 82
+   "Bi", // 83
+   "Po", // 84
+   "At", // 85
+   "Rn", // 86
+   "Fr", // 87
+   "Ra", // 88
+   "Ac", // 89
+   "Th", // 90
+   "Pa", // 91
+   "U",  // 92
+   "Np", // 93
+   "Pu", // 94
+   "Am", // 95
+   "Cm", // 96
+   "Bk", // 97
+   "Cf", // 98
+   "Es", // 99
+   "Fm", // 100
+   "Md", // 101
+   "No", // 102
+   "Lr", // 103
+   "Rf", // 104
+   "Db", // 105
+   "Sg", // 106
+   "Bh", // 107
+   "Hs", // 108
+   "Mt", // 109
+   /*
+     "Ds", // 110
+     "Uuu",// 111
+     "Uub",// 112
+     "Uut",// 113
+     "Uuq",// 114
+     "Uup",// 115
+     "Uuh",// 116
+     "Uus",// 117
+     "Uuo",// 118
+   */
+  };
 
 // Default table of CPK atom colors
 // (ghemical colors with a few proposed modifications).
-string[] Hexcolor={
-    "FF1493", // Xx 0
-    "FFFFFF", // H  1
-    "D9FFFF", // He 2
-    "CC80FF", // Li 3
-    "C2FF00", // Be 4
-    "FFB5B5", // B  5
-    "909090", // C  6 - changed from ghemical
-    "3050F8", // N  7 - changed from ghemical
-    "FF0D0D", // O  8
-    "90E050", // F  9 - changed from ghemical
-    "B3E3F5", // Ne 10
-    "AB5CF2", // Na 11
-    "8AFF00", // Mg 12
-    "BFA6A6", // Al 13
-    "F0C8A0", // Si 14 - changed from ghemical
-    "FF8000", // P  15
-    "FFFF30", // S  16
-    "1FF01F", // Cl 17
-    "80D1E3", // Ar 18
-    "8F40D4", // K  19
-    "3DFF00", // Ca 20
-    "E6E6E6", // Sc 21
-    "BFC2C7", // Ti 22
-    "A6A6AB", // V  23
-    "8A99C7", // Cr 24
-    "9C7AC7", // Mn 25
-    "E06633", // Fe 26 - changed from ghemical
-    "F090A0", // Co 27 - changed from ghemical
-    "50D050", // Ni 28 - changed from ghemical
-    "C88033", // Cu 29 - changed from ghemical
-    "7D80B0", // Zn 30
-    "C28F8F", // Ga 31
-    "668F8F", // Ge 32
-    "BD80E3", // As 33
-    "FFA100", // Se 34
-    "A62929", // Br 35
-    "5CB8D1", // Kr 36
-    "702EB0", // Rb 37
-    "00FF00", // Sr 38
-    "94FFFF", // Y  39
-    "94E0E0", // Zr 40
-    "73C2C9", // Nb 41
-    "54B5B5", // Mo 42
-    "3B9E9E", // Tc 43
-    "248F8F", // Ru 44
-    "0A7D8C", // Rh 45
-    "006985", // Pd 46
-    "C0C0C0", // Ag 47 - changed from ghemical
-    "FFD98F", // Cd 48
-    "A67573", // In 49
-    "668080", // Sn 50
-    "9E63B5", // Sb 51
-    "D47A00", // Te 52
-    "940094", // I  53
-    "429EB0", // Xe 54
-    "57178F", // Cs 55
-    "00C900", // Ba 56
-    "70D4FF", // La 57
-    "FFFFC7", // Ce 58
-    "D9FFC7", // Pr 59
-    "C7FFC7", // Nd 60
-    "A3FFC7", // Pm 61
-    "8FFFC7", // Sm 62
-    "61FFC7", // Eu 63
-    "45FFC7", // Gd 64
-    "30FFC7", // Tb 65
-    "1FFFC7", // Dy 66
-    "00FF9C", // Ho 67
-    "00E675", // Er 68
-    "00D452", // Tm 69
-    "00BF38", // Yb 70
-    "00AB24", // Lu 71
-    "4DC2FF", // Hf 72
-    "4DA6FF", // Ta 73
-    "2194D6", // W  74
-    "267DAB", // Re 75
-    "266696", // Os 76
-    "175487", // Ir 77
-    "D0D0E0", // Pt 78 - changed from ghemical
-    "FFD123", // Au 79 - changed from ghemical
-    "B8B8D0", // Hg 80 - changed from ghemical
-    "A6544D", // Tl 81
-    "575961", // Pb 82
-    "9E4FB5", // Bi 83
-    "AB5C00", // Po 84
-    "754F45", // At 85
-    "428296", // Rn 86
-    "420066", // Fr 87
-    "007D00", // Ra 88
-    "70ABFA", // Ac 89
-    "00BAFF", // Th 90
-    "00A1FF", // Pa 91
-    "008FFF", // U  92
-    "0080FF", // Np 93
-    "006BFF", // Pu 94
-    "545CF2", // Am 95
-    "785CE3", // Cm 96
-    "8A4FE3", // Bk 97
-    "A136D4", // Cf 98
-    "B31FD4", // Es 99
-    "B31FBA", // Fm 100
-    "B30DA6", // Md 101
-    "BD0D87", // No 102
-    "C70066", // Lr 103
-    "CC0059", // Rf 104
-    "D1004F", // Db 105
-    "D90045", // Sg 106
-    "E00038", // Bh 107
-    "E6002E", // Hs 108
-    "EB0026"  // Mt 109
-};
+string[] Hexcolor=
+  {
+   "FF1493", // Xx 0
+   "FFFFFF", // H  1
+   "D9FFFF", // He 2
+   "CC80FF", // Li 3
+   "C2FF00", // Be 4
+   "FFB5B5", // B  5
+   "909090", // C  6 - changed from ghemical
+   "3050F8", // N  7 - changed from ghemical
+   "FF0D0D", // O  8
+   "90E050", // F  9 - changed from ghemical
+   "B3E3F5", // Ne 10
+   "AB5CF2", // Na 11
+   "8AFF00", // Mg 12
+   "BFA6A6", // Al 13
+   "F0C8A0", // Si 14 - changed from ghemical
+   "FF8000", // P  15
+   "FFFF30", // S  16
+   "1FF01F", // Cl 17
+   "80D1E3", // Ar 18
+   "8F40D4", // K  19
+   "3DFF00", // Ca 20
+   "E6E6E6", // Sc 21
+   "BFC2C7", // Ti 22
+   "A6A6AB", // V  23
+   "8A99C7", // Cr 24
+   "9C7AC7", // Mn 25
+   "E06633", // Fe 26 - changed from ghemical
+   "F090A0", // Co 27 - changed from ghemical
+   "50D050", // Ni 28 - changed from ghemical
+   "C88033", // Cu 29 - changed from ghemical
+   "7D80B0", // Zn 30
+   "C28F8F", // Ga 31
+   "668F8F", // Ge 32
+   "BD80E3", // As 33
+   "FFA100", // Se 34
+   "A62929", // Br 35
+   "5CB8D1", // Kr 36
+   "702EB0", // Rb 37
+   "00FF00", // Sr 38
+   "94FFFF", // Y  39
+   "94E0E0", // Zr 40
+   "73C2C9", // Nb 41
+   "54B5B5", // Mo 42
+   "3B9E9E", // Tc 43
+   "248F8F", // Ru 44
+   "0A7D8C", // Rh 45
+   "006985", // Pd 46
+   "C0C0C0", // Ag 47 - changed from ghemical
+   "FFD98F", // Cd 48
+   "A67573", // In 49
+   "668080", // Sn 50
+   "9E63B5", // Sb 51
+   "D47A00", // Te 52
+   "940094", // I  53
+   "429EB0", // Xe 54
+   "57178F", // Cs 55
+   "00C900", // Ba 56
+   "70D4FF", // La 57
+   "FFFFC7", // Ce 58
+   "D9FFC7", // Pr 59
+   "C7FFC7", // Nd 60
+   "A3FFC7", // Pm 61
+   "8FFFC7", // Sm 62
+   "61FFC7", // Eu 63
+   "45FFC7", // Gd 64
+   "30FFC7", // Tb 65
+   "1FFFC7", // Dy 66
+   "00FF9C", // Ho 67
+   "00E675", // Er 68
+   "00D452", // Tm 69
+   "00BF38", // Yb 70
+   "00AB24", // Lu 71
+   "4DC2FF", // Hf 72
+   "4DA6FF", // Ta 73
+   "2194D6", // W  74
+   "267DAB", // Re 75
+   "266696", // Os 76
+   "175487", // Ir 77
+   "D0D0E0", // Pt 78 - changed from ghemical
+   "FFD123", // Au 79 - changed from ghemical
+   "B8B8D0", // Hg 80 - changed from ghemical
+   "A6544D", // Tl 81
+   "575961", // Pb 82
+   "9E4FB5", // Bi 83
+   "AB5C00", // Po 84
+   "754F45", // At 85
+   "428296", // Rn 86
+   "420066", // Fr 87
+   "007D00", // Ra 88
+   "70ABFA", // Ac 89
+   "00BAFF", // Th 90
+   "00A1FF", // Pa 91
+   "008FFF", // U  92
+   "0080FF", // Np 93
+   "006BFF", // Pu 94
+   "545CF2", // Am 95
+   "785CE3", // Cm 96
+   "8A4FE3", // Bk 97
+   "A136D4", // Cf 98
+   "B31FD4", // Es 99
+   "B31FBA", // Fm 100
+   "B30DA6", // Md 101
+   "BD0D87", // No 102
+   "C70066", // Lr 103
+   "CC0059", // Rf 104
+   "D1004F", // Db 105
+   "D90045", // Sg 106
+   "E00038", // Bh 107
+   "E6002E", // Hs 108
+   "EB0026"  // Mt 109
+  };
 
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/curvedlabel3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,7 +8,7 @@
 \textbf{Asymptote} (implemented with {\tt texpath}).}";
 
 string txt2="This is a test of curved labels in Asymptote\\(implemented
-without the {\tt PSTricks pstextpath} macro)."; 
+without the {\tt PSTricks pstextpath} macro).";
 
 draw(surface(g),paleblue+opacity(0.5));
 draw(labelpath(txt1,subpath(g,0,reltime(g,0.95)),angle=-90),orange);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/diatom.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/diatom.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/diatom.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -40,7 +40,7 @@
   real[] P=percentage[taxon];
   if(max(P) < ignorebelow) continue;
   final=taxon;
-}  
+}
 
 real angle=45;
 real L=3cm;
@@ -100,10 +100,10 @@
           pair z1=t*z+v;
           pair w1=z1+Ldir;
           draw[i]=new void(frame f) {
-            path g=z0--(z0.x+(ymax-z0.y)/Tan(angle),ymax)--
-            (z1.x+(ymax-z1.y)/Tan(angle),ymax)--z1;
-            draw(f,g);
-            label(f,group[i],point(g,1.5),align);
+                                     path g=z0--(z0.x+(ymax-z0.y)/Tan(angle),ymax)--
+                                     (z1.x+(ymax-z1.y)/Tan(angle),ymax)--z1;
+                                     draw(f,g);
+                                     label(f,group[i],point(g,1.5),align);
           };
         });
     }
@@ -113,7 +113,7 @@
 
   if(taxon == 0) yaxis(pic,depthlabel,Left,RightTicks(0,10),above=true);
   if(taxon == final) yaxis(pic,Right,LeftTicks("%",0,10),above=true);
- 
+
   add(shift(location,0)*pic);
   location += pic.userMax().x;
 }

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/dimension.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/dimension.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/dimension.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,7 +1,7 @@
-size(12cm,0); 
- 
+size(12cm,0);
+
 void distance(picture pic=currentpicture, pair A, pair B, Label L="", real n=0,
-              pen p=currentpen) 
+              pen p=currentpen)
 {
   real d=3mm;
   path g=A--B;
@@ -9,15 +9,15 @@
   pic.add(new void(frame f, transform t) {
       picture opic;
       path G=T*t*g;
-      draw(opic,Label(L,Center,UnFill(1)),G,p,Arrows(NoFill),Bars,PenMargins); 
+      draw(opic,Label(L,Center,UnFill(1)),G,p,Arrows(NoFill),Bars,PenMargins);
       add(f,opic.fit());
     });
   pic.addBox(min(g),max(g),T*min(p),T*max(p));
-} 
- 
-pair A=(0,0), B=(3,3); 
- 
-dot(A); 
-dot(B); 
- 
-distance(A,B,"$\ell$",1); 
+}
+
+pair A=(0,0), B=(3,3);
+
+dot(A);
+dot(B);
+
+distance(A,B,"$\ell$",1);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/electromagnetic.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,47 +1,47 @@
-import graph; 
+import graph;
 import palette;
-texpreamble("\usepackage[amssymb,thinqspace,thinspace]{SIunits}"); 
- 
-size(800,200); 
- 
+texpreamble("\usepackage[amssymb,thinqspace,thinspace]{SIunits}");
+
+size(800,200);
+
 real c=3e8;
 real nm=1e-9;
-real freq(real lambda) {return c/(lambda*nm);} 
-real lambda(real f) {return c/(f*nm);} 
- 
-real fmin=10; 
-real fmax=1e23; 
- 
-scale(Log(true),Linear(true)); 
-xlimits(fmin,fmax); 
-ylimits(0,1); 
- 
+real freq(real lambda) {return c/(lambda*nm);}
+real lambda(real f) {return c/(f*nm);}
+
+real fmin=10;
+real fmax=1e23;
+
+scale(Log(true),Linear(true));
+xlimits(fmin,fmax);
+ylimits(0,1);
+
 real uv=freq(400);
 real ir=freq(700);
- 
+
 bounds visible=bounds(Scale(uv).x,Scale(ir).x);
 palette(visible,uv,ir+(0,2),Bottom,Rainbow(),invisible);
 
-xaxis(Label("\hertz",1),Bottom,RightTicks,above=true); 
- 
+xaxis(Label("\hertz",1),Bottom,RightTicks,above=true);
+
 real log10Left(real x) {return -log10(x);}
 real pow10Left(real x) {return pow10(-x);}
 
 scaleT LogLeft=scaleT(log10Left,pow10Left,logarithmic=true);
 
-picture q=secondaryX(new void(picture p) { 
-    scale(p,LogLeft,Linear); 
+picture q=secondaryX(new void(picture p) {
+    scale(p,LogLeft,Linear);
     xlimits(p,lambda(fmax),lambda(fmin));
-    ylimits(p,0,1); 
-    xaxis(p,Label("\nano\metre",1,0.01N),Top,LeftTicks(DefaultLogFormat,n=10)); 
-  }); 
- 
-add(q,above=true); 
+    ylimits(p,0,1);
+    xaxis(p,Label("\nano\metre",1,0.01N),Top,LeftTicks(DefaultLogFormat,n=10));
+  });
 
+add(q,above=true);
+
 margin margin=PenMargin(0,0);
-draw("radio",Scale((10,1))--Scale((5e12,1)),S,Arrow); 
+draw("radio",Scale((10,1))--Scale((5e12,1)),S,Arrow);
 draw("infrared",Scale((1e12,1.75))--Scale(shift(0,1.75)*ir),LeftSide,Arrows,margin);
 draw("UV",Scale(shift(0,1.75)*uv)--Scale((1e17,1.76)),LeftSide,Arrows,margin);
-draw("x-rays",Scale((1e16,1))--Scale((1e21,1)),RightSide,Arrows); 
-draw("$\gamma$-rays",Scale((fmax,1.75))--Scale((2e18,1.75)),Arrow); 
+draw("x-rays",Scale((1e16,1))--Scale((1e21,1)),RightSide,Arrows);
+draw("$\gamma$-rays",Scale((fmax,1.75))--Scale((2e18,1.75)),Arrow);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/elliptic.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/elliptic.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/elliptic.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -74,7 +74,7 @@
 
 curve c; c.a=-1; c.b=4;
 
-pair oncurve(real x) 
+pair oncurve(real x)
 {
   return (x,sqrt(c.y2(x)));
 }
@@ -111,5 +111,5 @@
 add(output,currentpicture.fit(),(0.5cm,0),E);
 
 shipout(output);
-    
+
 restore();

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/equilchord.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/equilchord.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/equilchord.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -6,7 +6,7 @@
 real t=0.5;
 
 real F(pair z) {
-  return (z.x^2+z.y^2 <= 1) ? sqrt(3)*(sqrt(1-z.x^2)-abs(z.y)) : 0; 
+  return (z.x^2+z.y^2 <= 1) ? sqrt(3)*(sqrt(1-z.x^2)-abs(z.y)) : 0;
 }
 
 real a=1.5;

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/exp.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/exp.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/exp.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,11 +4,11 @@
 real f(real x) {return exp(x);}
 pair F(real x) {return (x,f(x));}
 
+draw(graph(f,-4,2,operator ..),red);
+
 xaxis("$x$");
 yaxis("$y$",0);
 
-draw(graph(f,-4,2,operator ..),red);
-
 labely(1,E);
 label("$e^x$",F(1),SE);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/fequlogo.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 size(200,0);
 size3(200);
 
-if(settings.render < 0) settings.render=8; 
+if(settings.render < 0) settings.render=8;
 
 texpreamble("\usepackage[T1]{fontenc}");
 texpreamble("\usepackage{ccfonts,eulervm}");
@@ -34,4 +34,4 @@
     draw(f,surface(invert(box(min(f,P),max(f,P)),min3(f),P),
                    new pen[] {orange,red,yellow,brown}+opacity(0.9)));
   }
-);
+  );

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/filesurface.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/filesurface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/filesurface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -19,7 +19,7 @@
 real[] level=uniform(min(f)*(1-sqrtEpsilon),max(f)*(1+sqrtEpsilon),4);
 
 s.colors(palette(s.map(new real(triple v) {return find(level >= v.z);}),
-                 Rainbow())); 
+                 Rainbow()));
 
 draw(s,meshpen=thick(),render(merge=true));
 
@@ -32,11 +32,11 @@
 zaxis3("$z$",Bounds,InTicks);
 
 /*
-picture palette;
-size3(palette,1cm);
-draw(palette,unitcube,red);
-frame F=palette.fit3();
-add(F,(M.x,m.y,m.z));
+  picture palette;
+  size3(palette,1cm);
+  draw(palette,unitcube,red);
+  frame F=palette.fit3();
+  add(F,(M.x,m.y,m.z));
 */
 
 currentprojection=perspective(camera=target+realmult(dir(68,225),M-m),

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/fillcontour.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -15,7 +15,7 @@
 defaultpen(1bp);
 
 bounds range=bounds(-1,1);
-    
+
 real[] Cvals=uniform(range.min,range.max,Divs);
 guide[][] g=contour(f,a,b,Cvals,N,operator --);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/fin.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/fin.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/fin.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 import palette;
 
 int N = 26;
-real[] C = array(N,0); 
+real[] C = array(N,0);
 real[][] A = new real[N][N];
 for(int i = 0; i < N; ++i)
   for(int j = 0; j < N; ++j)
@@ -46,23 +46,23 @@
 
 // interior nodes
 for(int m = 2; m<13; ++m)
-{
-  A[i][indexof(m,2)] = -4;
-  A[i][indexof(m-1,2)] = A[i][indexof(m+1,2)] = 1;
-  A[i][indexof(m,1)] = 2;
-  C[i] = 0;
-  ++i;
-}
+  {
+    A[i][indexof(m,2)] = -4;
+    A[i][indexof(m-1,2)] = A[i][indexof(m+1,2)] = 1;
+    A[i][indexof(m,1)] = 2;
+    C[i] = 0;
+    ++i;
+  }
 
 // convective bottom side nodes
 for(int m = 2; m<13; ++m)
-{
-  A[i][indexof(m,1)] = -(2+h*delta/k);
-  A[i][indexof(m-1,1)] = A[i][indexof(m+1,1)] = 0.5;
-  A[i][indexof(m,2)] = 1;
-  C[i] = -h*delta*Tinf/k;
-  ++i;
-}
+  {
+    A[i][indexof(m,1)] = -(2+h*delta/k);
+    A[i][indexof(m-1,1)] = A[i][indexof(m+1,1)] = 0.5;
+    A[i][indexof(m,2)] = 1;
+    C[i] = -h*delta*Tinf/k;
+    ++i;
+  }
 
 // convective bottom right corner node
 A[i][indexof(13,2)] = A[i][indexof(12,1)] = 0.5;
@@ -115,18 +115,18 @@
 
 draw(shift(0,1,0)*rightsquare,lookupColour(1,2));
 for(int i = 2; i < 13; ++i)
-{
-  draw(shift(i-1,1,0)*square,lookupColour(i,2));
-}
+  {
+    draw(shift(i-1,1,0)*square,lookupColour(i,2));
+  }
 draw(shift(12,1,0)*leftsquare,lookupColour(13,2));
 
 draw(shift(0,2,0)*SEcorner,lookupColour(1,3));
 draw(shift(0,0,0)*NEcorner,lookupColour(1,1));
 for(int i = 2; i < 13; ++i)
-{
-  draw(shift(i-1,0,0)*topsquare,lookupColour(i,1));
-  draw(shift(i-1,2,0)*bottomsquare,lookupColour(i,3));
-}
+  {
+    draw(shift(i-1,0,0)*topsquare,lookupColour(i,1));
+    draw(shift(i-1,2,0)*bottomsquare,lookupColour(i,3));
+  }
 draw(shift(12,2,0)*SWcorner,lookupColour(13,3));
 draw(shift(12,0,0)*NWcorner,lookupColour(13,1));
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/floatingdisk.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,28 +1,28 @@
-import trembling; 
-if(settings.outformat == "") 
-  settings.outformat="pdf"; 
+import trembling;
+if(settings.outformat == "")
+  settings.outformat="pdf";
 
-size(6cm,0); 
- 
-real R=1/5; 
-real h=0.5; 
-real d=1/12; 
-real l=.7; 
- 
-pair pA=(-l,0); 
-pair pB=(l,0); 
+size(6cm,0);
 
+real R=1/5;
+real h=0.5;
+real d=1/12;
+real l=.7;
+
+pair pA=(-l,0);
+pair pB=(l,0);
+
 tremble tr=tremble(angle=10,frequency=0.1,random=50,fuzz=1);
-path waterline=tr.deform(pA..pB); 
+path waterline=tr.deform(pA..pB);
 
-path disk=shift(0,-d)*scale(R)*unitcircle; 
-path water=waterline--(l,-h)--(-l,-h)--(-l,0)--cycle; 
-path container=(l,1/7)--(l,-h)--(-l,-h)--(-l,1/7); 
- 
-filldraw(disk,red,linewidth(.3)); 
-fill(water,mediumgrey+opacity(0.5)); 
-draw(waterline); 
- 
-draw(container,linewidth(1.5)); 
- 
+path disk=shift(0,-d)*scale(R)*unitcircle;
+path water=waterline--(l,-h)--(-l,-h)--(-l,0)--cycle;
+path container=(l,1/7)--(l,-h)--(-l,-h)--(-l,1/7);
+
+filldraw(disk,red,linewidth(.3));
+fill(water,mediumgrey+opacity(0.5));
+draw(waterline);
+
+draw(container,linewidth(1.5));
+
 shipout(bbox(2mm));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/floor.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/floor.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/floor.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,7 +10,7 @@
   static real lasty;
   static bool first=true;
   real y=floor(x);
-  bool samebranch=first || lasty == y; 
+  bool samebranch=first || lasty == y;
   first=false;
   if(samebranch) lasty=x;
   else {
@@ -21,7 +21,7 @@
   return samebranch ? true : default;
 };
 
-draw(graph(Floor,-5.5,5.5,500,branch)); 
+draw(graph(Floor,-5.5,5.5,500,branch));
 axes("$x$",rotate(0)*"$\lfloor x\rfloor$",red);
 
 dot(Close);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/flowchartdemo.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -3,8 +3,8 @@
 import flowchart;
 
 block block1=rectangle(Label("Example",magenta),
-		       pack(Label("Start:",heavygreen),"",Label("$A:=0$",blue),
-			    "$B:=1$"),(-0.5,3),palegreen,paleblue,red);
+                       pack(Label("Start:",heavygreen),"",Label("$A:=0$",blue),
+                            "$B:=1$"),(-0.5,3),palegreen,paleblue,red);
 block block2=diamond(Label("Choice?",blue),(0,2),palegreen,red);
 block block3=roundrectangle("Do something",(-1,1));
 block block4=bevel("Don't do something",(1,1));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/gamma.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/gamma.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/gamma.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -12,7 +12,7 @@
 }
 
 draw(graph(gamma,-4,4,n=2000,branch),red);
- 
+
 scale(false);
 xlimits(-4,4);
 ylimits(-6,6);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/gamma3.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/gamma3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/gamma3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,7 +7,7 @@
 real X=4.5;
 real M=abs(gamma((X,0)));
 
-pair Gamma(pair z) 
+pair Gamma(pair z)
 {
   return (z.x > 0 || z != floor(z.x)) ? gamma(z) : M;
 }

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/genustwo.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/genustwo.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/genustwo.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -12,9 +12,9 @@
   return (r-2)^2 + z^2 - tuberadius^2;
 }
 
-// Take the union of the two tangent tori (by taking 
+// Take the union of the two tangent tori (by taking
 // the product of the functions defining them). Then
-// add (or subtract) a bit of noise to smooth things 
+// add (or subtract) a bit of noise to smooth things
 // out.
 real f(real x, real y, real z) {
   real f1 = toruscontour(x - 2 - tuberadius, y, z);
@@ -22,15 +22,15 @@
   return f1 * f2 - 0.1;
 }
 
-// The noisy function extends a bit farther than the union of 
+// The noisy function extends a bit farther than the union of
 // the two tori, so include a bit of extra space in the box.
 triple max = (2*(2+tuberadius), 2+tuberadius, tuberadius)
-            + (0.1, 0.1, 0.1);
+  + (0.1, 0.1, 0.1);
 triple min = -max;
 
 // Draw the implicit surface.
-draw(implicitsurface(f, min, max, overlapedges=true, 
+draw(implicitsurface(f, min, max, overlapedges=true,
                      nx=20, nz=5),
      surfacepen=material(diffusepen=gray(0.6),
-			 emissivepen=gray(0.3),
-			 specularpen=gray(0.1)));
+                         emissivepen=gray(0.3),
+                         specularpen=gray(0.1)));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/icon.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/icon.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/icon.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 
 real f(real t) {return t < 0 ? -1/t : -0.5/t;}
 
-picture logo(pair s=0, pen q) 
+picture logo(pair s=0, pen q)
 {
   picture pic;
   pen p=linewidth(3)+q;
@@ -17,6 +17,6 @@
   draw(pic,z+c+eps--z,p);
   yaxis(pic,p);
   return shift(s)*pic;
-} 
+}
 
 add(logo(red));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/imagecontour.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -19,7 +19,7 @@
 pen[] Palette=BWRainbow();
 
 bounds range=image(f,Automatic,a,b,N,Palette);
-    
+
 // Major contours
 
 real[] Cvals=uniform(range.min,range.max,Divs);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/imagehistogram.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,8 +1,8 @@
 import stats;
-import graph; 
-import palette; 
-import contour; 
- 
+import graph;
+import palette;
+import contour;
+
 size(20cm);
 
 scale(false);
@@ -9,39 +9,39 @@
 
 pair[] data=new pair[50000];
 for(int i=0; i < data.length; ++i)
-  data[i]=Gaussrandpair(); 
- 
-// Histogram limits and number of bins 
-pair datamin=(-0.15,-0.15); 
-pair datamax=(0.15,0.15); 
-int Nx=30; 
-int Ny=30; 
+  data[i]=Gaussrandpair();
 
+// Histogram limits and number of bins
+pair datamin=(-0.15,-0.15);
+pair datamax=(0.15,0.15);
+int Nx=30;
+int Ny=30;
+
 int[][] bins=frequency(data,datamin,datamax,Nx,Ny);
- 
-real[] values=new real[Nx*Ny]; 
+
+real[] values=new real[Nx*Ny];
 pair[] points=new pair[Nx*Ny];
-int k=0; 
+int k=0;
 real dx=(datamax.x-datamin.x)/Nx;
 real dy=(datamax.y-datamin.y)/Ny;
 for(int i=0; i < Nx; ++i) {
   for(int j=0; j < Ny; ++j) {
-    values[k]=bins[i][j]; 
-    points[k]=(datamin.x+(i+0.5)*dx,datamin.y+(j+0.5)*dy); 
-    ++k; 
+    values[k]=bins[i][j];
+    points[k]=(datamin.x+(i+0.5)*dx,datamin.y+(j+0.5)*dy);
+    ++k;
   }
-} 
- 
-// Create a color palette 
+}
+
+// Create a color palette
 pen[] InvGrayscale(int NColors=256) {
-  real ninv=1.0/(NColors-1.0); 
-  return sequence(new pen(int i) {return gray(1-17*i*ninv);},NColors); 
-} 
- 
-// Draw the histogram, with axes 
-bounds range=image(points,values,Range(0,40),InvGrayscale()); 
+  real ninv=1.0/(NColors-1.0);
+  return sequence(new pen(int i) {return gray(1-17*i*ninv);},NColors);
+}
+
+// Draw the histogram, with axes
+bounds range=image(points,values,Range(0,40),InvGrayscale());
 draw(contour(points,values,new real[] {1,2,3,4,8,12,16,20,24,28,32,36,40},
-             operator--),blue); 
-xaxis("$x$",BottomTop,LeftTicks,above=true); 
-yaxis("$y$",LeftRight,RightTicks,above=true); 
+             operator--),blue);
+xaxis("$x$",BottomTop,LeftTicks,above=true);
+yaxis("$y$",LeftRight,RightTicks,above=true);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/integraltest.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/integraltest.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/integraltest.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -9,17 +9,17 @@
 void subinterval(real a, real b)
 {
   path g=box((a,0),(b,f(b)));
-  filldraw(g,lightgray); 
+  filldraw(g,lightgray);
   draw(box((a,f(a)),(b,0)));
 }
 
 int a=1, b=9;
-  
-xaxis("$x$",0,b); 
-yaxis("$y$",0); 
- 
+
+xaxis("$x$",0,b);
+yaxis("$y$",0);
+
 draw(graph(f,a,b,operator ..),red);
- 
+
 int n=2;
 
 for(int i=a; i <= b; ++i) {

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/interpolate1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -127,9 +127,9 @@
 
 shipout("runge4");
 
-erase();        
+erase();
 
-// Test 5: The situation is much better using Tchebychev points. 
+// Test 5: The situation is much better using Tchebychev points.
 
 unitsize(2cm);
 
@@ -194,7 +194,7 @@
 
 shipout("runge6");
 
-erase();        
+erase();
 
 // Test 7: Another Tchebychev example.
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/intro.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/intro.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/intro.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -32,7 +32,7 @@
 %and Instituto Nacional de Matem\'atica Pura e Aplicada (IMPA)
 \medskip\Green{Collaborators: Orest Shardt, Michail Vidiassov}",
 "June 30, 2010",
-"http://asymptote.sf.net/intro.pdf");
+"https://asymptote.sourceforge.io/intro.pdf");
 
 title("History");
 item("1979: \TeX\ and \MF\ (Knuth)");
@@ -48,7 +48,7 @@
 title("Statistics (as of June, 2010)");
 item("Runs under Linux/UNIX, Mac OS X, Microsoft Windows.");
 item("4000 downloads/month from primary\hfill\\
- {\tt asymptote.sourceforge.net} site alone.");
+ {\tt asymptote.sourceforge.io} site alone.");
 item("80\ 000 lines of low-level C++ code.");
 item("36\ 000 lines of high-level Asymptote code.");
 
@@ -941,7 +941,7 @@
 title("\mbox{Asymptote: 2D \& 3D Vector Graphics Language}");
 asyinclude("../examples/logo3");
 skip();
-center("\tt http://asymptote.sf.net");
+center("\tt https://asymptote.sourceforge.io");
 center("(freely available under the LGPL license)");
 
 //  LocalWords:  pdflatex mflogo viewportsize pagewidth pagemargin goysr bibtex

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/jump.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/jump.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/jump.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,13 +1,13 @@
 import graph;
 size(4inches,0);
 
-real f1(real x) {return (1+x^2);} 
+real f1(real x) {return (1+x^2);}
 real f2(real x) {return (4-x);}
 
 xaxis("$x$",LeftTicks,Arrow);
 yaxis("$y$",RightTicks,Arrow);
 
-draw("$y=1+x^2$",graph(f1,-2,1)); 
+draw("$y=1+x^2$",graph(f1,-2,1));
 dot((1,f1(1)),UnFill);
 
 draw("$y=4-x$",graph(f2,1,5),LeftSide,red,Arrow);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/label3zoom.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -3,14 +3,14 @@
 currentlight=Headlamp;
 size(469.75499pt,0);
 
-currentprojection=perspective(
-camera=(160.119024441391,136.348802919248,253.822628496226),
-up=(-0.188035408976828,0.910392236102215,-0.368549401594584),
-target=(25.5462739598034,1.77605243766079,-9.93996244768584),
-zoom=5.59734733413271,
-angle=5.14449021168139,
-viewportshift=(0.813449720559684,-0.604674743165144),
-autoadjust=false);
+currentprojection=
+  perspective(camera=(160.119024441391,136.348802919248,253.822628496226),
+              up=(-0.188035408976828,0.910392236102215,-0.368549401594584),
+              target=(25.5462739598034,1.77605243766079,-9.93996244768584),
+              zoom=5.59734733413271,
+              angle=5.14449021168139,
+              viewportshift=(0.813449720559684,-0.604674743165144),
+              autoadjust=false);
 
 draw(scale3(4)*extrude("$\displaystyle\int\limits_{-\infty}^{+\infty}\!\! e^{-\alpha x^2}\!\!=\sqrt{\frac{\pi}{\alpha}}$",2Z),
      material(blue));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/leastsquares.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -22,7 +22,7 @@
 // Remove negative or zero values of rho:
 t=rho > 0 ? t : null;
 rho=rho > 0 ? rho : null;
-    
+
 scale(Log(true),Linear(true));
 
 int n=step > 0 ? ceil((last-first)/step) : 0;
@@ -33,17 +33,17 @@
   real first=first+i*step;
   real[] logrho=(t >= first & t <= last) ? log(rho) : null;
   real[] logt=(t >= first & t <= last) ? -log(t) : null;
-  
+
   if(logt.length < 2) break;
-  
+
   // Fit to the line logt=L.m*logrho+L.b:
   linefit L=leastsquares(logt,logrho);
-    
+
   T.push(first);
   xi.push(L.m);
   dxi.push(L.dm);
-} 
-    
+}
+
 draw(graph(T,xi),blue);
 errorbars(T,xi,dxi,red);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/legend.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/legend.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/legend.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,15 +1,15 @@
-import graph; 
-size(8cm,6cm,IgnoreAspect); 
- 
-typedef real realfcn(real); 
-realfcn F(real p) { 
-  return new real(real x) {return sin(p*x);}; 
-}; 
- 
+import graph;
+size(8cm,6cm,IgnoreAspect);
+
+typedef real realfcn(real);
+realfcn F(real p) {
+  return new real(real x) {return sin(p*x);};
+};
+
 for(int i=1; i < 5; ++i)
   draw(graph(F(i*pi),0,1),Pen(i),
-       "$\sin("+(i == 1 ? "" : (string) i)+"\pi x)$"); 
-xaxis("$x$",BottomTop,LeftTicks); 
-yaxis("$y$",LeftRight,RightTicks(trailingzero)); 
- 
-attach(legend(2),(point(S).x,truepoint(S).y),10S,UnFill); 
+       "$\sin("+(i == 1 ? "" : (string) i)+"\pi x)$");
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks(trailingzero));
+
+attach(legend(2),(point(S).x,truepoint(S).y),10S,UnFill);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/linearregression.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/linearregression.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/linearregression.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -28,13 +28,13 @@
 real[] coeffs = leastsquares(independentvars, dependentvars, warn=false);
 if (coeffs.length == 0) {
   abort("Unable to find regression: independent variables are "
-    + "linearly dependent.");
+        + "linearly dependent.");
 }
 
 real f(pair xy) {
   return coeffs[0] * xy.x  // income
-       + coeffs[1] * xy.y  // education
-       + coeffs[2];        // residue
+    + coeffs[1] * xy.y  // education
+    + coeffs[2];        // residue
 }
 
 real xmin = infinity, xmax = -infinity, ymin = infinity, ymax = -infinity;
@@ -52,7 +52,7 @@
 
 for (int ii = 0; ii < independentvars.length; ++ii) {
   triple pt = (independentvars[ii][0], independentvars[ii][1],
-           dependentvars[ii]);
+               dependentvars[ii]);
   draw(shift(pt) * unitsphere, material(yellow, emissivepen=0.2*yellow));
   real z = f((pt.x, pt.y));
   if (pt.z > z) draw (pt -- (pt.x, pt.y, z), green);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/linetype.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/linetype.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/linetype.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -6,7 +6,7 @@
   draw((0,y-40)--(100,y-40),currentpen+dashdotted);
   draw((0,y-50)--(100,y-50),currentpen+longdashdotted);
   draw((0,y-60)--(100,y-60),currentpen+Dotted);
-} 
+}
 
 currentpen=linewidth(0.5);
 testline(100);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/lmfit1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,10 +4,10 @@
 size(10cm, 7cm, IgnoreAspect);
 
 real[] date = { 1790, 1800, 1810, 1820, 1830, 1840, 1850, 1860, 1870, 1880,
-1890, 1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990 };
+                1890, 1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990 };
 real[] population = { 3.929, 5.308, 7.240, 9.638, 12.866, 17.069, 23.192, 31.443,
-38.558, 50.156, 62.948, 75.996, 91.972, 105.711, 122.775, 131.669, 150.697,
-179.323, 203.185, 226.546, 248.710 };
+                      38.558, 50.156, 62.948, 75.996, 91.972, 105.711, 122.775, 131.669, 150.697,
+                      179.323, 203.185, 226.546, 248.710 };
 
 real t0 = 1776;
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/logo.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/logo.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/logo.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,6 +1,6 @@
 size(140,80,IgnoreAspect);
 
-picture logo(pair s=0, pen q) 
+picture logo(pair s=0, pen q)
 {
   picture pic;
   pen p=linewidth(2)+fontsize(24pt)+q;
@@ -19,7 +19,7 @@
   draw(pic,(0,y1)--(0,y2),p);
   draw(pic,(a,0)--(b,0),p);
   return shift(s)*pic;
-} 
+}
 
 pair z=(-0.015,0.08);
 for(int x=0; x < 10; ++x)

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/logo3.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/logo3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/logo3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,12 +1,16 @@
 import three;
 
-//size(105,50,IgnoreAspect);
-size(560,320,IgnoreAspect); // Fullsize
+size(560,320,IgnoreAspect);
 size3(140,80,15);
-currentprojection=perspective(-2,20,10,up=Y);
-currentlight=White;
-viewportmargin=(0,10);
 
+currentprojection=
+  perspective(camera=(-0.7387428806982,-50.4754947040394,10.1433958227456),
+              up=(0.0023,0.158056646909439,0.000753078712035578),
+              target=(0.275794537878997,1.26294757366264,-0.0498743055531516),
+              zoom=1,
+              angle=3.26228798100531,
+              autoadjust=false);
+
 real a=-0.4;
 real b=0.95;
 real y1=-5;
@@ -32,12 +36,11 @@
 g.push(point(B,0)--shift(f*hy,-f*h)*B--point(B,1)--shift(-f*hy,f*h)*reverse(B)--cycle);
 
 triple H=-0.1Z;
-material m=material(lightgray,shininess=1.0);
+material m=material(0.5*red+0.125*purple,shininess=1.0);
 
 for(path p : g)
-  draw(extrude(p,H),m);
+  draw(extrude(p,H),m,nolight);
 
 surface s=surface(g);
 draw(s,red,nolight);
-draw(shift(H)*s,m);
-
+draw(shift(H)*s,m,nolight);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/lowupint.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/lowupint.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/lowupint.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,8 +8,8 @@
   real height=(a < c && c < b) ? f(c) : h(f(a),f(b));
   pair p=(a,0), q=(b,height);
   path g=box(p,q);
-  fill(g,lightgray); 
-  draw(g); 
+  fill(g,lightgray);
+  draw(g);
 }
 
 void partition(real a, real b, real c, real h(real,real))

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/markers1.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/markers1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/markers1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -64,7 +64,7 @@
 p=T*p;
 draw(p,CircleBarIntervalMarker(n=3,angle=30,barsize=8mm,radius=2mm,
                                FillDraw(.8red),circleabove=true,dotframe,
-			       above=false));
+                               above=false));
 label("$11$",point(p,0),3W);
 
 //line 12 **********

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/markregular.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/markregular.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/markregular.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,8 +8,8 @@
 real f(real x) {return x^2;}
 
 marker cross=marker(scale(4)*rotate(45)*cross(4),
-		    markuniform(new pair(real t) {return Scale((t,f(t)));},
-				xmin,xmax,round(2*(xmax-xmin))),1bp+red);
+                    markuniform(new pair(real t) {return Scale((t,f(t)));},
+                                xmin,xmax,round(2*(xmax-xmin))),1bp+red);
 
 draw(graph(f,xmin,xmax,n=400),linewidth(1bp),cross);
 
@@ -17,10 +17,10 @@
 
 xaxis(Label("$x$",position=EndPoint, align=NE),xmin=xmin,xmax=xmax,
       Ticks(scale(.7)*Label(align=E),NoZero,begin=false,beginlabel=false,
-	    end=false,endlabel=false,Step=1,step=.25,
-	    Size=1mm, size=.5mm,pTick=black,ptick=gray),Arrow);
+            end=false,endlabel=false,Step=1,step=.25,
+            Size=1mm, size=.5mm,pTick=black,ptick=gray),Arrow);
 
 yaxis(Label("$y$",position=EndPoint, align=NE),ymin=ymin,ymax=ymax,
       Ticks(scale(.7)*Label(),NoZero,begin=false,beginlabel=false,
-	    end=false,endlabel=false,Step=1,step=.25,Size=1mm,size=.5mm,
+            end=false,endlabel=false,Step=1,step=.25,Size=1mm,size=.5mm,
             pTick=black,ptick=gray),Arrow);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/mergeExample.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,11 +20,11 @@
 path l = point(p[1],2)--point(p[0],4);
 draw(l,red);
 for(int i = 0; i < p.length; ++i)
-{
-  real[][] ts = intersections(l,p[i]);
-  for(real[] t:ts)
-    dot(point(l,t[0]));
-}
+  {
+    real[][] ts = intersections(l,p[i]);
+    for(real[] t:ts)
+      dot(point(l,t[0]));
+  }
 path l2 = point(l,intersections(l,p[0])[0][0])--point(l,intersections(l,p[2])[1][0]);
 real to = intersections(l,p[0])[0][1];
 real ti = intersections(l,p[2])[1][1];
@@ -71,7 +71,7 @@
 real x = min(p).x - 4.5w;
 string l = "abcdef";
 for(int i = 0; i < 6; ++i)
-{
-  label("("+substr(l,i,1)+")",(x,min(p).y),3S,fontsize(10pt));
-  x += w;
-}
+  {
+    label("("+substr(l,i,1)+")",(x,min(p).y),3S,fontsize(10pt));
+    x += w;
+  }

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/mosaic.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/mosaic.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/mosaic.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -19,7 +19,7 @@
   // returns the path obtained by adding to p a copy rotated
   // around the endpoint of p by 180 degrees
   // works only if the initial point and the endpoint of p are different
-  // a c_line is symetric with respect to the center of 
+  // a c_line is symetric with respect to the center of
   // the straight line between its endpoints
   //
   return p..rotate(180,point(p,length(p)))*reverse(p);
@@ -41,7 +41,7 @@
 }
 
 void centershade(picture pic=currentpicture, path p, pen in, pen out,
-                 pen drawpen=currentpen) { 
+                 pen drawpen=currentpen) {
   pair center=0.5(max(p)+min(p));
   real radius=0.5abs(max(p)-min(p));
   radialshade(pic,p,in,center,0,out,center,radius);
@@ -86,7 +86,7 @@
 }
 
 for(int j=0; j < 7; ++j) {
-  tage[j]=shift((j,yc)+diff)*kasten; 
+  tage[j]=shift((j,yc)+diff)*kasten;
   filldraw(tage[j],farbe(j),black+2bp);
   label(wochentag[j],zentrum(tage[j]),Palatino());
   for(int i=0; i < 6; ++i) {bx[i][j]=shift((j,-yc*i)+diff)*kasten;
@@ -94,10 +94,10 @@
     if(holiday[i][j]) {filldraw(bx[i][j],farbe(6),black+2bp);};
   };
 };
-filldraw(Gkasten,0.3white,black+2bp); 
+filldraw(Gkasten,0.3white,black+2bp);
 for(int j=0; j < 7; ++j)
   for(int i=0; i < 6 ; ++i) {label(entry[i][j],zentrum(bx[i][j]),Palatino());}
-label("\Huge Februar 2006",zentrum(Gkasten),Palatino()+white); 
+label("\Huge Februar 2006",zentrum(Gkasten),Palatino()+white);
 // Zentrum=center; Februar=february
 add(kalender,currentpicture);
 erase();
@@ -139,9 +139,9 @@
                   (1-i/10)*chartreuse,black+2bp);
     }
   }
-  
-// Now we produce the bijective images inside 
-// a suitably scaled unitcircle            
+
+// Now we produce the bijective images inside
+// a suitably scaled unitcircle
 for(int k=-1; k < 2; ++k)
   for(int l=-1; l < 2; ++l) {
     transform tr=shift(k*tri+l*trii);
@@ -149,11 +149,11 @@
       centershade(temppic,scale(2.5)*tounitcircle(tr*kontur[i],380),
                   (1-i/10)*white,(1-i/10)*orange,black+2bp);
     }
-  }         
-          
-add(temppic); 
+  }
 
-// We clip the picture to a suitable box 
+add(temppic);
+
+// We clip the picture to a suitable box
 pair piccenter=0.5*(temppic.min()+temppic.max());
 pair picbox=temppic.max()-temppic.min();
 real picwidth=picbox.x;
@@ -162,4 +162,4 @@
 clip(trialtrans*unitsquare);
 
 // add the calendar at a suitable position
-add(kalender.fit(0.75*outputwidth),interp(point(S),point(N),1/13)); 
+add(kalender.fit(0.75*outputwidth),interp(point(S),point(N),1/13));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/mosquito.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/mosquito.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/mosquito.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -49,7 +49,7 @@
      RightSide,Arrow,PenMargin);
 
 path ise=point(infectious,E)--point(se,0.5);
-  
+
 draw("$(ac)$",ise,LeftSide,dashed,Arrow,PenMargin);
 label(minipage("\flushleft{biting rate $\times$ transmission
 probability}",50pt),point(infectious,SE),dir(-60)+S);
@@ -58,7 +58,7 @@
 
 draw("$(ab)$",isi,LeftSide,dashed,Arrow,PenMargin);
 draw(se,LeftSide,Arrow,PenMargin);
-      
+
 real t=2.0;
 draw("$\beta_M$",
      point(susceptibleM,E){right}..tension t..{left}point(larval,E),

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/near_earth.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/near_earth.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/near_earth.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,7 +7,7 @@
 pen thickp=linewidth(0.5mm);
 real radius=0.8, lambda=37, aux=60;
 
-currentprojection=perspective(4,1,2); 
+currentprojection=perspective(4,1,2);
 
 // Planes
 pen bg=gray(0.9)+opacity(0.5);
@@ -21,7 +21,7 @@
 draw(Label("$y$",1),O--r*Y,p,Arrow3);
 draw(Label("$z$",1),O--r*Z,p,Arrow3);
 label("$\rm O$",(0,0,0),W);
-  
+
 // Point Q
 triple pQ=radius*dir(lambda,aux);
 draw(O--radius*dir(90,aux),dashed);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/oneoverx.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -8,7 +8,7 @@
   static int lastsign=0;
   if(x == 0) return false;
   int sign=sgn(x);
-  bool b=lastsign == 0 || sign == lastsign; 
+  bool b=lastsign == 0 || sign == lastsign;
   lastsign=sign;
   return b ? true : default;
 }

Deleted: trunk/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/p-orbital.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,31 +0,0 @@
-import graph3;
-import palette;
-size(200);
-currentprojection=orthographic(6,8,2);
-viewportmargin=(1cm,0);
- 
-real c0=0.1;
-
-real f(real r) {return r*(1-r/6)*exp(-r/3);}
-
-triple f(pair t) {
-  real r=t.x;
-  real phi=t.y;
-  real f=f(r);
-  real s=max(min(f != 0 ? c0/f : 1,1),-1);
-  real R=r*sqrt(1-s^2);
-  return (R*cos(phi),R*sin(phi),r*s);
-}
-
-bool cond(pair t) {return f(t.x) != 0;}
-
-real R=abs((20,20,20));
-surface s=surface(f,(0,0),(R,2pi),100,8,Spline,cond);
-
-s.colors(palette(s.map(abs),Gradient(palegreen,heavyblue)));
-
-render render=render(compression=Low,merge=true);
-draw(s,render);
-draw(zscale3(-1)*s);
- 
-axes3("$x$","$y$","$z$",Arrow3);

Added: trunk/Master/texmf-dist/doc/asymptote/examples/pOrbital.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/pOrbital.asy	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/pOrbital.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,31 @@
+import graph3;
+import palette;
+size(200);
+currentprojection=orthographic(6,8,2);
+viewportmargin=(1cm,0);
+
+real c0=0.1;
+
+real f(real r) {return r*(1-r/6)*exp(-r/3);}
+
+triple f(pair t) {
+  real r=t.x;
+  real phi=t.y;
+  real f=f(r);
+  real s=max(min(f != 0 ? c0/f : 1,1),-1);
+  real R=r*sqrt(1-s^2);
+  return (R*cos(phi),R*sin(phi),r*s);
+}
+
+bool cond(pair t) {return f(t.x) != 0;}
+
+real R=abs((20,20,20));
+surface s=surface(f,(0,0),(R,2pi),100,8,Spline,cond);
+
+s.colors(palette(s.map(abs),Gradient(palegreen,heavyblue)));
+
+render render=render(compression=Low,merge=true);
+draw(s,render);
+draw(zscale3(-1)*s);
+
+axes3("$x$","$y$","$z$",Arrow3);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/pathintersectsurface.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,11 +7,12 @@
 
 draw(g,red);
 
-triple[][] P={
-  {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
-  {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
-  {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
-  {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}};
+triple[][] P=
+  {
+   {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
+   {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
+   {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
+   {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}};
 
 surface s=surface(patch(P));
 s.append(unitplane);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/pdb.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/pdb.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/pdb.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -24,7 +24,7 @@
 string prefix=stripextension(filename);
 file data=input(filename);
 
-pen color(string e) 
+pen color(string e)
 {
   e=replace(e," ","");
   int n=length(e);
@@ -33,7 +33,7 @@
   int index=find(Element == e);
   if(index < 0) return currentpen;
   return rgb(Hexcolor[index]);
-}	
+}
 
 // ATOM
 string[] name,altLoc,resName,chainID,iCode,element,charge;
@@ -42,7 +42,7 @@
 
 bool newchain=true;
 
-struct bond 
+struct bond
 {
   int i,j;
   void operator init(int i, int j) {
@@ -53,7 +53,7 @@
 
 bond[] bonds;
 
-struct atom 
+struct atom
 {
   string name;
   triple v;
@@ -87,8 +87,8 @@
     serial=(int) substr(line,6,5);
     a.name=substr(line,76,2);
     a.v=((real) substr(line,30,8),
-	 (real) substr(line,38,8),
-	 (real) substr(line,46,8));
+         (real) substr(line,38,8),
+         (real) substr(line,46,8));
   }
   if(ATOM) {
     if(newchain) {
@@ -109,12 +109,12 @@
     int i=(int) substr(line,6,5);
     while(true) {
       string s=replace(substr(line,11+k,5)," ","");
-     if(s == "") break;
+      if(s == "") break;
       k += 5;
       int j=(int) s;
       if(j <= i) continue;
       bonds.push(bond(i,j));
-     }
+    }
   }
 }
 
@@ -158,7 +158,6 @@
 string viewfilename=prefix+".views";
 
 if(!error(input(viewfilename,check=false)))
-  options="3Dviews="+viewfilename;
+  options="3Dviews="+locatefile(viewfilename);
 
-shipout(prefix,options=options);
-currentpicture.erase();
+shipout(options=options);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/pipes.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/pipes.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/pipes.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,14 +4,14 @@
 import palette;
 size(8cm);
 
-currentprojection=perspective(
-camera=(13.3596389245356,8.01038090435314,14.4864483364785),
-up=(-0.0207054323419367,-0.00472438375047319,0.0236460907598947),
-target=(-1.06042550499095,2.68154529985845,0.795007562120261));
+currentprojection=
+  perspective(camera=(13.3596389245356,8.01038090435314,14.4864483364785),
+              up=(-0.0207054323419367,-0.00472438375047319,0.0236460907598947),
+              target=(-1.06042550499095,2.68154529985845,0.795007562120261));
 
 defaultpen(fontsize(6pt));
 
-// draw coordinates and frames 
+// draw coordinates and frames
 // axis1 is defined by z axis of TBase
 // axis2 is defined by z axis of TEnd
 void DrawFrame(transform3 TBase, transform3 TEnd, string s)
@@ -25,57 +25,57 @@
 
   real[][] A=
     {
-      {v1.x,-v2.x,-n.x},
-      {v1.y,-v2.y,-n.y},
-      {v1.z,-v2.z,-n.z}
+     {v1.x,-v2.x,-n.x},
+     {v1.y,-v2.y,-n.y},
+     {v1.z,-v2.z,-n.z}
     };
 
   triple vb=p2-p1;
 
   real[] b={vb.x,vb.y,vb.z};
-    
-  // Get the extention along vector v1 and v2, 
+
+  // Get the extention along vector v1 and v2,
   // so, we can get the common normal between two axis
   real[] x=solve(A,b);
 
   real s1=x[0];
   real s2=x[1];
-    
+
   // get foot of a perpendicular on both axies
   triple foot1=p1+s1*v1;
   triple foot2=p2+s2*v2;
-	
+
   // draw two axis
   triple axis_a,axis_b;
   axis_a=p1+s1*v1*1.5;
   axis_b=p1-s1*v1*1.5;
   draw(axis_a--axis_b);
-	
+
   axis_a=p2+s2*v2*1.5;
   axis_b=p2-s2*v2*1.5;
   draw(axis_a--axis_b);
- 
-  // draw "a"(common normal) 
-  draw(Label("$a_{"+s+"}$"),foot1--foot2,linewidth(1pt)); 
 
+  // draw "a"(common normal)
+  draw(Label("$a_{"+s+"}$"),foot1--foot2,linewidth(1pt));
+
   // draw the coordinates frame
   triple dx,dy,dz,org;
   real length=0.8;
-    
+
   org=foot1;
   dx =length*unit(foot2-foot1); // define the x axis of the frame on "a"
   dz =length*unit(v1);          // define the z axis which is along axis1
   dy =length*unit(cross(dz,dx));
-	
+
   draw(Label("$X_{"+s+"}$",1,align=-dy-dz),org--(org+dx),red+linewidth(1.5pt),
        Arrow3(8));
-  draw(Label("$Y_{"+s+"}$",1,align=2dy-dz-dx),org--(org+dy), 
-       green+linewidth(1.5pt),	Arrow3(8));
+  draw(Label("$Y_{"+s+"}$",1,align=2dy-dz-dx),org--(org+dy),
+       green+linewidth(1.5pt),  Arrow3(8));
   draw(Label("$Z_{"+s+"}$",1,align=-2dx-dy),org--(org+dz),
-       blue+linewidth(1.5pt),	Arrow3(8));
-    
+       blue+linewidth(1.5pt),   Arrow3(8));
+
   dot(Label("$O_{"+s+"}$",align =-dx-dz,black),org,black); // origin
-           
+
 }
 
 void DrawLink(transform3 TBase, transform3 TEnd, pen objStyle,string s)
@@ -85,13 +85,13 @@
   path3 generator=(0.5*r,0,h)--(r,0,h)--(r,0,0)--(0.5*r,0,0);
   revolution vase=revolution(O,generator,0,360);
   surface objSurface=surface(vase);
-    
+
   render render=render(merge=true);
 
   // draw two cylinders
   draw(TBase*objSurface,objStyle,render);
   draw(TEnd*shift((0,0,-h+1e-5))*objSurface,objStyle,render);
-	
+
   // draw the link between two cylinders
   triple pStart=TBase*(0.5*h*Z);
   triple pEnd  =TEnd*(-0.5*h*Z);
@@ -98,7 +98,7 @@
   triple pControl1=0.25*(pEnd-pStart)+TBase*(0,0,h);
   triple pControl2=-0.25*(pEnd-pStart)+TEnd*(0,0,-h);
   path3 p=pStart..controls pControl1 and pControl2..pEnd;
-  draw(tube(p,scale(0.2)*unitsquare),objStyle,render);   
+  draw(tube(p,scale(0.2)*unitsquare),objStyle,render);
 }
 
 // t1 and t2 define the starting frame and ending frame of the first link(i-1)
@@ -105,7 +105,7 @@
 transform3 t1=shift((0,0,1));
 transform3 t2=shift((0,0,-1))*rotate(-20,Y)*shift((0,3,2));
 // as, the two links were connected, so t2 is also the starting frame of link(i)
-// t3 defines the ending frame of link(i) 
+// t3 defines the ending frame of link(i)
 transform3 t3=t2*rotate(40,Z)*shift((0,3,1.5))*rotate(-15,Y)*shift(-1.5*Z);
 
 // draw link(i-1)
@@ -137,4 +137,4 @@
 
 // draw d_{i-1}
 triple org_i   =t2*shift((0,0,1.5))*O;
-draw(Label("$d_{i}$",0.13),p0--org_i,linewidth(1pt)); 
+draw(Label("$d_{i}$",0.13),p0--org_i,linewidth(1pt));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/poster.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/poster.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/poster.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -16,7 +16,7 @@
 frame f=background.fit();
 box(f,RadialShade(yellow,0.6*yellow+red),above=false);
 background.erase();
-add(background,f);  
+add(background,f);
 
 title("Young Researchers' Conference",align=3S,fontsize(48pt));
 center("University of Alberta, Edmonton, April 1--2, 2006");

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/projectrevolution.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,17 +1,17 @@
-import solids; 
-import palette; 
- 
-currentprojection=orthographic(20,0,3); 
- 
-size(400,300,IgnoreAspect); 
- 
+import solids;
+import palette;
+
+currentprojection=orthographic(20,0,3);
+
+size(400,300,IgnoreAspect);
+
 revolution r=revolution(graph(new triple(real x) {
-      return (x,0,sin(x)*exp(-x/2));},0,2pi,operator ..),axis=Z); 
-surface s=surface(r); 
- 
+      return (x,0,sin(x)*exp(-x/2));},0,2pi,operator ..),axis=Z);
+surface s=surface(r);
+
 surface S=planeproject(shift(-Z)*unitsquare3)*s;
 S.colors(palette(s.map(zpart),Rainbow()));
 
 render render=render(compression=Low,merge=true);
 draw(S,render);
-draw(s,lightgray,render); 
+draw(s,lightgray,render);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/rainbow.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/rainbow.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/rainbow.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -4,7 +4,7 @@
 
 void rainbow(path g) {
   draw(new path[] {scale(1.3)*g,scale(1.2)*g,scale(1.1)*g,g,
-	scale(0.9)*g,scale(0.8)*g,scale(0.7)*g},
+                     scale(0.9)*g,scale(0.8)*g,scale(0.7)*g},
     new pen[] {red,orange,yellow,green,blue,indigo,purple});
 }
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/roll.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/roll.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/roll.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -3,7 +3,7 @@
 size(200,0);
 
 triple f(pair t) {
-return(t.x+t.y/4+sin(t.y),cos(t.y),sin(t.y));
+  return(t.x+t.y/4+sin(t.y),cos(t.y),sin(t.y));
 }
 
 surface s=surface(f,(0,0),(2pi,2pi),7,20,Spline);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/roundpath.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/roundpath.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/roundpath.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -22,7 +22,7 @@
 for (int i = 1; i < 20; ++i)                          // only round edges
   draw(shift(0,-30)*roundedpath(B,i/4), rgb(0.5, i*0.049,0) + linewidth(0.5));
 
-for (int i = 1; i < 20; ++i)                          // round edged and scale 
+for (int i = 1; i < 20; ++i)                          // round edged and scale
   draw(shift(0,-60)*roundedpath(B,i/4,1-i/50), rgb(1, 1 - i*0.049,i*0.049) + linewidth(0.5));
 
 for (int i = 1; i < 50; ++i)                          // shift (round edged und scaled shifted version)

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/secondaryaxis.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -26,7 +26,7 @@
     draw(pic,graph(pic,t,infectious,t >= 10 & t <= 15),red);
     yaxis(pic,Right,red,LeftTicks(begin=false,end=false));
   });
-                             
+
 add(secondary);
 label(shift(5mm*N)*"Proportion of crows",point(NW),E);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/shadestroke.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 size(100);
 
 radialshade(W..N..E--(0,0),stroke=true,
-	    red+linewidth(30),(0,0),0.25,yellow,(0,0),1);
+            red+linewidth(30),(0,0),0.25,yellow,(0,0),1);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/sinxlex.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -3,7 +3,7 @@
 size(0,100);
 real theta=30;
 
-pair A=(0,0); 
+pair A=(0,0);
 pair B=dir(theta);
 pair C=(1,0);
 pair D=(1,Tan(theta));
@@ -21,4 +21,4 @@
 dot("$D$",D);
 dot(("$E$"),E,S);
 label("$1$",A--B,LeftSide);
-      
+

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/slidedemo.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -31,7 +31,7 @@
           author="John C. Bowman",
           institution="University of Alberta",
           date="\today",
-          url="http://asymptote.sf.net");
+          url="https://asymptote.sourceforge.io");
 
 outline("Basic Commands");
 item("item");
@@ -112,7 +112,7 @@
 
 title("\mbox{Asymptote: 2D \& 3D Vector Graphics Language}");
 asyinclude("logo3");
-center("\tt http://asymptote.sf.net");
+center("\tt https://asymptote.sourceforge.io");
 center("(freely available under the LGPL license)");
 
 bibliography("refs");

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/slope.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/slope.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/slope.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -20,8 +20,8 @@
 
 real[] F(real t, real[] y) {
   return sequence(new real(int m) {return f(t,y[M-m-1]);},M);
-    //  return new real[] {exp((L[1]-1)*t)*y[1],
-    //      -exp(-(L[1]-1)*t)*y[0]};
+  //  return new real[] {exp((L[1]-1)*t)*y[1],
+  //      -exp(-(L[1]-1)*t)*y[0]};
   //  return new real[]{-y[0]^2};
 }
 
@@ -46,23 +46,23 @@
   //  real[] exact=new real[] {exp(-b)*sin(b),exp(-L[1]*b)*cos(b)};
   for(int m=0; m < M; ++m)
     maxnorm=max(maxnorm,abs(S.y[S.y.length-1][m]-exact[m]));
-    if(maxnorm != 0) {
-      tau.push(dt);
-      //      error.push(dt^-(order+1)*maxnorm);
-            error.push(maxnorm);
-    }
+  if(maxnorm != 0) {
+    tau.push(dt);
+    //      error.push(dt^-(order+1)*maxnorm);
+    error.push(maxnorm);
+  }
 }
 
 /*
-for(int i=0; i < n-1; ++i) {
+  for(int i=0; i < n-1; ++i) {
   real dt=(b-a)*lambda^(n-i);
   real maxnorm=0;
   for(int m=0; m < M; ++m) {
-    solution S=integrate(Y0[m],L[m],f,a,b,dt,dynamic=false,0.000,1000,RK4_375,verbose=false);
-    maxnorm=max(maxnorm,abs(S.y[S.y.length-1]-exact[m]));
+  solution S=integrate(Y0[m],L[m],f,a,b,dt,dynamic=false,0.000,1000,RK4_375,verbose=false);
+  maxnorm=max(maxnorm,abs(S.y[S.y.length-1]-exact[m]));
   }
   error2.push(dt^-order*maxnorm);
-}
+  }
 */
 
 //scale(Log,Log);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/soccerball.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/soccerball.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/soccerball.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,43 +1,45 @@
 import graph3;
 size(400);
 currentlight.background=palegreen;
+settings.digits=15;
 
 defaultrender=render(compression=Zero,merge=true);
 
 real c=(1+sqrt(5))/2;
- 
+
 triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
 triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
 triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};
- 
-triple[][] Q={
-  {z[0],y[1],x[3],x[0],y[0],z[3]},
-  {z[1],x[0],x[3],y[2],z[2],y[3]},
-  {z[2],z[1],y[2],x[2],x[1],y[3]},
-  {z[3],z[0],y[0],x[1],x[2],y[1]},
-  {x[0],x[3],z[1],y[3],y[0],z[0]},
-  {x[1],x[2],z[2],y[3],y[0],z[3]},
-  {x[2],x[1],z[3],y[1],y[2],z[2]},
-  {x[3],x[0],z[0],y[1],y[2],z[1]},
-  {y[0],y[3],x[1],z[3],z[0],x[0]},
-  {y[1],y[2],x[2],z[3],z[0],x[3]},
-  {y[2],y[1],x[3],z[1],z[2],x[2]},
-  {y[3],y[0],x[0],z[1],z[2],x[1]} 
-};
- 
+
+triple[][] Q=
+  {
+   {z[0],y[1],x[3],x[0],y[0],z[3]},
+   {z[1],x[0],x[3],y[2],z[2],y[3]},
+   {z[2],z[1],y[2],x[2],x[1],y[3]},
+   {z[3],z[0],y[0],x[1],x[2],y[1]},
+   {x[0],x[3],z[1],y[3],y[0],z[0]},
+   {x[1],x[2],z[2],y[3],y[0],z[3]},
+   {x[2],x[1],z[3],y[1],y[2],z[2]},
+   {x[3],x[0],z[0],y[1],y[2],z[1]},
+   {y[0],y[3],x[1],z[3],z[0],x[0]},
+   {y[1],y[2],x[2],z[3],z[0],x[3]},
+   {y[2],y[1],x[3],z[1],z[2],x[2]},
+   {y[3],y[0],x[0],z[1],z[2],x[1]}
+  };
+
 int nArc=4;
 
 path3 p=Arc(O,Q[0][0],Q[0][1],nArc);
 real R=abs(point(p,reltime(p,1/3)));
- 
+
 triple[][] P;
 for(int i=0;i < Q.length;++i){
   P[i]=new triple[] ;
   for(int j=0;j < Q[i].length;++j){
     P[i][j]=Q[i][j]/R;
-  } 
-} 
- 
+  }
+}
+
 // FIXME: Use a baryicentric coordinate mesh
 surface sphericaltriangle(triple center, triple A, triple B, triple C,
                           int nu=3, int nv=nu) {
@@ -48,10 +50,10 @@
     path3 cr=Arc(O,relpoint(tri2,p.x),relpoint(tri3,p.x),nArc);
     return relpoint(cr,p.y);
   };
- 
+
   return surface(tri,(0,0),(1-sqrtEpsilon,1),nu,nv,Spline);
-} 
- 
+}
+
 for(int i=0;i < P.length;++i){
   triple[] pentagon=sequence(new triple(int k) {
       path3 p=Arc(O,P[i][0],P[i][k+1],nArc);
@@ -64,8 +66,8 @@
   for(int i=0;i < 5;++i){
     surface sf=sphericaltriangle(O,pentagon[i],M,pentagon[i+1]);
     draw(sf,black);
-  } 
-} 
+  }
+}
 
 for(int i=0;i < P.length;++i) {
   for(int j=1;j <= 5;++j) {
@@ -85,6 +87,6 @@
     for(int i=0;i < 6;++i) {
       surface sf=sphericaltriangle(O,hexagon[i],M,hexagon[i+1]);
       draw(sf,white);
-    } 
-  } 
+    }
+  }
 }

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/spectrum.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/spectrum.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/spectrum.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -11,7 +11,7 @@
   if(wl >  510 && wl <= 580) {rgb=((wl-510)/70,1,0);}
   if(wl >  580 && wl <= 645) {rgb=(1,(645-wl)/65,0);}
   if(wl >  645 && wl <= 780) {rgb=(1,0,0);}
-  
+
   real Intensity=1;
   if(intensity) {
     if(wl >= 700) {Intensity=0.3+0.7*(780-wl)/80;}

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/sphereskeleton.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,9 +1,9 @@
-size(100); 
-import solids; 
+size(100);
+import solids;
 
 currentprojection=orthographic(5,4,2);
 
-revolution sphere=sphere(1); 
+revolution sphere=sphere(1);
 draw(surface(sphere),green+opacity(0.2));
 draw(sphere,m=7,blue);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/spiral3.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/spiral3.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/spiral3.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,8 +1,8 @@
 import graph3;
 import palette;
- 
+
 size3(10cm);
- 
+
 currentprojection=orthographic(5,4,2);
 viewportmargin=(2cm,0);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/spline.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/spline.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/spline.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,15 +1,15 @@
-import graph; 
-import interpolate; 
- 
-size(15cm,15cm,IgnoreAspect); 
- 
-real a=1997, b=2002; 
-int n=5; 
-real[] xpt=a+sequence(n+1)*(b-a)/n; 
-real[] ypt={31,36,26,22,21,24}; 
+import graph;
+import interpolate;
+
+size(15cm,15cm,IgnoreAspect);
+
+real a=1997, b=2002;
+int n=5;
+real[] xpt=a+sequence(n+1)*(b-a)/n;
+real[] ypt={31,36,26,22,21,24};
 horner h=diffdiv(xpt,ypt);
 fhorner L=fhorner(h);
- 
+
 scale(false,true);
 
 pen p=linewidth(1);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/splitpatch.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -33,10 +33,10 @@
           if(depth > 0)
             write(pt.tree[i],qt.tree[j],Pi,Qj,depth);
         }
-      }    
+      }
     }
   }
-  
+
   // Output the subpatches of p from subdivision.
   void read(surface[] S, tree t, triple[][] p, int depth=n) {
     --depth;
@@ -44,7 +44,7 @@
     triple[][][] P=Split(p);
 
     for(int i=0; i < 2; ++i) {
-      if(t.tree.initialized(i)) 
+      if(t.tree.initialized(i))
         read(S,t.tree[i],P[i],depth);
       else {
         S[0].push(patch(P[i]));
@@ -62,19 +62,21 @@
 
 currentprojection=orthographic(0,0,1);
 
-triple[][] A={
-  {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
-  {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
-  {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
-  {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}
-};
+triple[][] A=
+  {
+   {(0,0,0),(1,0,0),(1,0,0),(2,0,0)},
+   {(0,4/3,0),(2/3,4/3,2),(4/3,4/3,2),(2,4/3,0)},
+   {(0,2/3,0),(2/3,2/3,0),(4/3,2/3,0),(2,2/3,0)},
+   {(0,2,0),(2/3,2,0),(4/3,2,0),(2,2,0)}
+  };
 
-triple[][] B={
-  {(0.5,0,-1),(0.5,1,-1),(0.5,2,-1),(0.5,3,-1)},
-  {(0.5,0,0),(0.5,1,0),(0.5,2,0),(0.5,3,0)},
-  {(0.5,0,1),(0.5,1,1),(0.5,2,1),(0.5,3,1)},
-  {(0.5,0,2),(0.5,1,2),(0.5,2,2),(0.5,3,2)}
-};
+triple[][] B=
+  {
+   {(0.5,0,-1),(0.5,1,-1),(0.5,2,-1),(0.5,3,-1)},
+   {(0.5,0,0),(0.5,1,0),(0.5,2,0),(0.5,3,0)},
+   {(0.5,0,1),(0.5,1,1),(0.5,2,1),(0.5,3,1)},
+   {(0.5,0,2),(0.5,1,2),(0.5,2,2),(0.5,3,2)}
+  };
 
 split S=split(B,A);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/spring.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/spring.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/spring.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 {
   return (2.0*lambda*t+r*cos(t),r*sin(t));
 }
-  
+
 guide coil(guide g=nullpath, real lambda, real r, real a, real b, int n)
 {
   real width=(b-a)/n;
@@ -15,7 +15,7 @@
 
 void drawspring(real x, string label) {
   real r=8;
-  real t1=-pi; 
+  real t1=-pi;
   real t2=10*pi;
   real lambda=(t2-t1+x)/(t2-t1);
   pair b=coilpoint(lambda,r,t1);
@@ -22,7 +22,7 @@
   pair c=coilpoint(lambda,r,t2);
   pair a=b-20;
   pair d=c+20;
- 
+
   draw(a--b,BeginBar(2*barsize()));
   draw(c--d);
   draw(coil(lambda,r,t1,t2,100));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/stereoscopic.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 import three;
-    
+
 currentprojection=perspective(50*dir(70,15));
 
 picture pic;
@@ -6,6 +6,6 @@
 unitsize(pic,1cm);
 
 draw(pic,xscale3(10)*unitcube,yellow,blue);
-    
+
 addStereoViews(pic);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/strokeshade.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,4 +1,4 @@
 size(100);
 guide g=(0,0)..controls(70,30) and (-40,30)..(30,0);
 latticeshade(g,stroke=true,linewidth(10),
-	     new pen[][] {{red,orange,yellow},{green,blue,purple}});
+             new pen[][] {{red,orange,yellow},{green,blue,purple}});

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/teapot.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/teapot.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/teapot.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -5,168 +5,200 @@
 currentprojection=perspective(250,-250,250);
 currentlight=Viewport;
 
-triple[][][] Q={
+triple[][][] Q=
   {
+   {
     {(39.68504,0,68.0315),(37.91339,0,71.75197),(40.74803,0,71.75197),(42.51969,0,68.0315)},
     {(39.68504,-22.22362,68.0315),(37.91339,-21.2315,71.75197),(40.74803,-22.8189,71.75197),(42.51969,-23.81102,68.0315)},
     {(22.22362,-39.68504,68.0315),(21.2315,-37.91339,71.75197),(22.8189,-40.74803,71.75197),(23.81102,-42.51969,68.0315)},
     {(0,-39.68504,68.0315),(0,-37.91339,71.75197),(0,-40.74803,71.75197),(0,-42.51969,68.0315)}
-  },{
+   },
+   {
     {(0,-39.68504,68.0315),(0,-37.91339,71.75197),(0,-40.74803,71.75197),(0,-42.51969,68.0315)},
     {(-22.22362,-39.68504,68.0315),(-21.2315,-37.91339,71.75197),(-22.8189,-40.74803,71.75197),(-23.81102,-42.51969,68.0315)},
     {(-39.68504,-22.22362,68.0315),(-37.91339,-21.2315,71.75197),(-40.74803,-22.8189,71.75197),(-42.51969,-23.81102,68.0315)},
     {(-39.68504,0,68.0315),(-37.91339,0,71.75197),(-40.74803,0,71.75197),(-42.51969,0,68.0315)}
-  },{
+   },
+   {
     {(-39.68504,0,68.0315),(-37.91339,0,71.75197),(-40.74803,0,71.75197),(-42.51969,0,68.0315)},
     {(-39.68504,22.22362,68.0315),(-37.91339,21.2315,71.75197),(-40.74803,22.8189,71.75197),(-42.51969,23.81102,68.0315)},
     {(-22.22362,39.68504,68.0315),(-21.2315,37.91339,71.75197),(-22.8189,40.74803,71.75197),(-23.81102,42.51969,68.0315)},
     {(0,39.68504,68.0315),(0,37.91339,71.75197),(0,40.74803,71.75197),(0,42.51969,68.0315)}
-  },{
+   },
+   {
     {(0,39.68504,68.0315),(0,37.91339,71.75197),(0,40.74803,71.75197),(0,42.51969,68.0315)},
     {(22.22362,39.68504,68.0315),(21.2315,37.91339,71.75197),(22.8189,40.74803,71.75197),(23.81102,42.51969,68.0315)},
     {(39.68504,22.22362,68.0315),(37.91339,21.2315,71.75197),(40.74803,22.8189,71.75197),(42.51969,23.81102,68.0315)},
     {(39.68504,0,68.0315),(37.91339,0,71.75197),(40.74803,0,71.75197),(42.51969,0,68.0315)}
-  },{
+   },
+   {
     {(42.51969,0,68.0315),(49.60629,0,53.1496),(56.69291,0,38.26771),(56.69291,0,25.51181)},
     {(42.51969,-23.81102,68.0315),(49.60629,-27.77952,53.1496),(56.69291,-31.74803,38.26771),(56.69291,-31.74803,25.51181)},
     {(23.81102,-42.51969,68.0315),(27.77952,-49.60629,53.1496),(31.74803,-56.69291,38.26771),(31.74803,-56.69291,25.51181)},
     {(0,-42.51969,68.0315),(0,-49.60629,53.1496),(0,-56.69291,38.26771),(0,-56.69291,25.51181)}
-  },{
+   },
+   {
     {(0,-42.51969,68.0315),(0,-49.60629,53.1496),(0,-56.69291,38.26771),(0,-56.69291,25.51181)},
     {(-23.81102,-42.51969,68.0315),(-27.77952,-49.60629,53.1496),(-31.74803,-56.69291,38.26771),(-31.74803,-56.69291,25.51181)},
     {(-42.51969,-23.81102,68.0315),(-49.60629,-27.77952,53.1496),(-56.69291,-31.74803,38.26771),(-56.69291,-31.74803,25.51181)},
     {(-42.51969,0,68.0315),(-49.60629,0,53.1496),(-56.69291,0,38.26771),(-56.69291,0,25.51181)}
-  },{
+   },
+   {
     {(-42.51969,0,68.0315),(-49.60629,0,53.1496),(-56.69291,0,38.26771),(-56.69291,0,25.51181)},
     {(-42.51969,23.81102,68.0315),(-49.60629,27.77952,53.1496),(-56.69291,31.74803,38.26771),(-56.69291,31.74803,25.51181)},
     {(-23.81102,42.51969,68.0315),(-27.77952,49.60629,53.1496),(-31.74803,56.69291,38.26771),(-31.74803,56.69291,25.51181)},
     {(0,42.51969,68.0315),(0,49.60629,53.1496),(0,56.69291,38.26771),(0,56.69291,25.51181)}
-  },{
+   },
+   {
     {(0,42.51969,68.0315),(0,49.60629,53.1496),(0,56.69291,38.26771),(0,56.69291,25.51181)},
     {(23.81102,42.51969,68.0315),(27.77952,49.60629,53.1496),(31.74803,56.69291,38.26771),(31.74803,56.69291,25.51181)},
     {(42.51969,23.81102,68.0315),(49.60629,27.77952,53.1496),(56.69291,31.74803,38.26771),(56.69291,31.74803,25.51181)},
     {(42.51969,0,68.0315),(49.60629,0,53.1496),(56.69291,0,38.26771),(56.69291,0,25.51181)}
-  },{
+   },
+   {
     {(56.69291,0,25.51181),(56.69291,0,12.7559),(42.51969,0,6.377957),(42.51969,0,4.251961)},
     {(56.69291,-31.74803,25.51181),(56.69291,-31.74803,12.7559),(42.51969,-23.81102,6.377957),(42.51969,-23.81102,4.251961)},
     {(31.74803,-56.69291,25.51181),(31.74803,-56.69291,12.7559),(23.81102,-42.51969,6.377957),(23.81102,-42.51969,4.251961)},
     {(0,-56.69291,25.51181),(0,-56.69291,12.7559),(0,-42.51969,6.377957),(0,-42.51969,4.251961)}
-  },{
+   },
+   {
     {(0,-56.69291,25.51181),(0,-56.69291,12.7559),(0,-42.51969,6.377957),(0,-42.51969,4.251961)},
     {(-31.74803,-56.69291,25.51181),(-31.74803,-56.69291,12.7559),(-23.81102,-42.51969,6.377957),(-23.81102,-42.51969,4.251961)},
     {(-56.69291,-31.74803,25.51181),(-56.69291,-31.74803,12.7559),(-42.51969,-23.81102,6.377957),(-42.51969,-23.81102,4.251961)},
     {(-56.69291,0,25.51181),(-56.69291,0,12.7559),(-42.51969,0,6.377957),(-42.51969,0,4.251961)}
-  },{
+   },
+   {
     {(-56.69291,0,25.51181),(-56.69291,0,12.7559),(-42.51969,0,6.377957),(-42.51969,0,4.251961)},
     {(-56.69291,31.74803,25.51181),(-56.69291,31.74803,12.7559),(-42.51969,23.81102,6.377957),(-42.51969,23.81102,4.251961)},
     {(-31.74803,56.69291,25.51181),(-31.74803,56.69291,12.7559),(-23.81102,42.51969,6.377957),(-23.81102,42.51969,4.251961)},
     {(0,56.69291,25.51181),(0,56.69291,12.7559),(0,42.51969,6.377957),(0,42.51969,4.251961)}
-  },{
+   },
+   {
     {(0,56.69291,25.51181),(0,56.69291,12.7559),(0,42.51969,6.377957),(0,42.51969,4.251961)},
     {(31.74803,56.69291,25.51181),(31.74803,56.69291,12.7559),(23.81102,42.51969,6.377957),(23.81102,42.51969,4.251961)},
     {(56.69291,31.74803,25.51181),(56.69291,31.74803,12.7559),(42.51969,23.81102,6.377957),(42.51969,23.81102,4.251961)},
     {(56.69291,0,25.51181),(56.69291,0,12.7559),(42.51969,0,6.377957),(42.51969,0,4.251961)}
-  },{
+   },
+   {
     {(-45.35433,0,57.40157),(-65.19685,0,57.40157),(-76.53543,0,57.40157),(-76.53543,0,51.02362)},
     {(-45.35433,-8.503932,57.40157),(-65.19685,-8.503932,57.40157),(-76.53543,-8.503932,57.40157),(-76.53543,-8.503932,51.02362)},
     {(-42.51969,-8.503932,63.77952),(-70.86614,-8.503932,63.77952),(-85.03937,-8.503932,63.77952),(-85.03937,-8.503932,51.02362)},
     {(-42.51969,0,63.77952),(-70.86614,0,63.77952),(-85.03937,0,63.77952),(-85.03937,0,51.02362)}
-  },{
+   },
+   {
     {(-42.51969,0,63.77952),(-70.86614,0,63.77952),(-85.03937,0,63.77952),(-85.03937,0,51.02362)},
     {(-42.51969,8.503932,63.77952),(-70.86614,8.503932,63.77952),(-85.03937,8.503932,63.77952),(-85.03937,8.503932,51.02362)},
     {(-45.35433,8.503932,57.40157),(-65.19685,8.503932,57.40157),(-76.53543,8.503932,57.40157),(-76.53543,8.503932,51.02362)},
     {(-45.35433,0,57.40157),(-65.19685,0,57.40157),(-76.53543,0,57.40157),(-76.53543,0,51.02362)}
-  },{
+   },
+   {
     {(-76.53543,0,51.02362),(-76.53543,0,44.64566),(-70.86614,0,31.88976),(-56.69291,0,25.51181)},
     {(-76.53543,-8.503932,51.02362),(-76.53543,-8.503932,44.64566),(-70.86614,-8.503932,31.88976),(-56.69291,-8.503932,25.51181)},
     {(-85.03937,-8.503932,51.02362),(-85.03937,-8.503932,38.26771),(-75.11811,-8.503932,26.5748),(-53.85826,-8.503932,17.00787)},
     {(-85.03937,0,51.02362),(-85.03937,0,38.26771),(-75.11811,0,26.5748),(-53.85826,0,17.00787)}
-  },{
+   },
+   {
     {(-85.03937,0,51.02362),(-85.03937,0,38.26771),(-75.11811,0,26.5748),(-53.85826,0,17.00787)},
     {(-85.03937,8.503932,51.02362),(-85.03937,8.503932,38.26771),(-75.11811,8.503932,26.5748),(-53.85826,8.503932,17.00787)},
     {(-76.53543,8.503932,51.02362),(-76.53543,8.503932,44.64566),(-70.86614,8.503932,31.88976),(-56.69291,8.503932,25.51181)},
     {(-76.53543,0,51.02362),(-76.53543,0,44.64566),(-70.86614,0,31.88976),(-56.69291,0,25.51181)}
-  },{
+   },
+   {
     {(48.18897,0,40.3937),(73.70078,0,40.3937),(65.19685,0,59.52755),(76.53543,0,68.0315)},
     {(48.18897,-18.70866,40.3937),(73.70078,-18.70866,40.3937),(65.19685,-7.086619,59.52755),(76.53543,-7.086619,68.0315)},
     {(48.18897,-18.70866,17.00787),(87.87401,-18.70866,23.38582),(68.0315,-7.086619,57.40157),(93.5433,-7.086619,68.0315)},
     {(48.18897,0,17.00787),(87.87401,0,23.38582),(68.0315,0,57.40157),(93.5433,0,68.0315)}
-  },{
+   },
+   {
     {(48.18897,0,17.00787),(87.87401,0,23.38582),(68.0315,0,57.40157),(93.5433,0,68.0315)},
     {(48.18897,18.70866,17.00787),(87.87401,18.70866,23.38582),(68.0315,7.086619,57.40157),(93.5433,7.086619,68.0315)},
     {(48.18897,18.70866,40.3937),(73.70078,18.70866,40.3937),(65.19685,7.086619,59.52755),(76.53543,7.086619,68.0315)},
     {(48.18897,0,40.3937),(73.70078,0,40.3937),(65.19685,0,59.52755),(76.53543,0,68.0315)}
-  },{
+   },
+   {
     {(76.53543,0,68.0315),(79.37007,0,70.15748),(82.20472,0,70.15748),(79.37007,0,68.0315)},
     {(76.53543,-7.086619,68.0315),(79.37007,-7.086619,70.15748),(82.20472,-4.251961,70.15748),(79.37007,-4.251961,68.0315)},
     {(93.5433,-7.086619,68.0315),(99.92125,-7.086619,70.68897),(97.79527,-4.251961,71.22047),(90.70866,-4.251961,68.0315)},
     {(93.5433,0,68.0315),(99.92125,0,70.68897),(97.79527,0,71.22047),(90.70866,0,68.0315)}
-  },{
+   },
+   {
     {(93.5433,0,68.0315),(99.92125,0,70.68897),(97.79527,0,71.22047),(90.70866,0,68.0315)},
     {(93.5433,7.086619,68.0315),(99.92125,7.086619,70.68897),(97.79527,4.251961,71.22047),(90.70866,4.251961,68.0315)},
     {(76.53543,7.086619,68.0315),(79.37007,7.086619,70.15748),(82.20472,4.251961,70.15748),(79.37007,4.251961,68.0315)},
     {(76.53543,0,68.0315),(79.37007,0,70.15748),(82.20472,0,70.15748),(79.37007,0,68.0315)}
-  },{
+   },
+   {
     {(0,0,89.29133),(22.67716,0,89.29133),(0,0,80.7874),(5.669294,0,76.53543)},
     {(0,0,89.29133),(22.67716,-12.7559,89.29133),(0,0,80.7874),(5.669294,-3.174809,76.53543)},
     {(0,0,89.29133),(12.7559,-22.67716,89.29133),(0,0,80.7874),(3.174809,-5.669294,76.53543)},
     {(0,0,89.29133),(0,-22.67716,89.29133),(0,0,80.7874),(0,-5.669294,76.53543)}
-  },{
+   },
+   {
     {(0,0,89.29133),(0,-22.67716,89.29133),(0,0,80.7874),(0,-5.669294,76.53543)},
     {(0,0,89.29133),(-12.7559,-22.67716,89.29133),(0,0,80.7874),(-3.174809,-5.669294,76.53543)},
     {(0,0,89.29133),(-22.67716,-12.7559,89.29133),(0,0,80.7874),(-5.669294,-3.174809,76.53543)},
     {(0,0,89.29133),(-22.67716,0,89.29133),(0,0,80.7874),(-5.669294,0,76.53543)}
-  },{
+   },
+   {
     {(0,0,89.29133),(-22.67716,0,89.29133),(0,0,80.7874),(-5.669294,0,76.53543)},
     {(0,0,89.29133),(-22.67716,12.7559,89.29133),(0,0,80.7874),(-5.669294,3.174809,76.53543)},
     {(0,0,89.29133),(-12.7559,22.67716,89.29133),(0,0,80.7874),(-3.174809,5.669294,76.53543)},
     {(0,0,89.29133),(0,22.67716,89.29133),(0,0,80.7874),(0,5.669294,76.53543)}
-  },{
+   },
+   {
     {(0,0,89.29133),(0,22.67716,89.29133),(0,0,80.7874),(0,5.669294,76.53543)},
     {(0,0,89.29133),(12.7559,22.67716,89.29133),(0,0,80.7874),(3.174809,5.669294,76.53543)},
     {(0,0,89.29133),(22.67716,12.7559,89.29133),(0,0,80.7874),(5.669294,3.174809,76.53543)},
     {(0,0,89.29133),(22.67716,0,89.29133),(0,0,80.7874),(5.669294,0,76.53543)}
-  },{
+   },
+   {
     {(5.669294,0,76.53543),(11.33858,0,72.28346),(36.85039,0,72.28346),(36.85039,0,68.0315)},
     {(5.669294,-3.174809,76.53543),(11.33858,-6.349609,72.28346),(36.85039,-20.63622,72.28346),(36.85039,-20.63622,68.0315)},
     {(3.174809,-5.669294,76.53543),(6.349609,-11.33858,72.28346),(20.63622,-36.85039,72.28346),(20.63622,-36.85039,68.0315)},
     {(0,-5.669294,76.53543),(0,-11.33858,72.28346),(0,-36.85039,72.28346),(0,-36.85039,68.0315)}
-  },{
+   },
+   {
     {(0,-5.669294,76.53543),(0,-11.33858,72.28346),(0,-36.85039,72.28346),(0,-36.85039,68.0315)},
     {(-3.174809,-5.669294,76.53543),(-6.349609,-11.33858,72.28346),(-20.63622,-36.85039,72.28346),(-20.63622,-36.85039,68.0315)},
     {(-5.669294,-3.174809,76.53543),(-11.33858,-6.349609,72.28346),(-36.85039,-20.63622,72.28346),(-36.85039,-20.63622,68.0315)},
     {(-5.669294,0,76.53543),(-11.33858,0,72.28346),(-36.85039,0,72.28346),(-36.85039,0,68.0315)},
-  },{
+   },
+   {
     {(-5.669294,0,76.53543),(-11.33858,0,72.28346),(-36.85039,0,72.28346),(-36.85039,0,68.0315)},
     {(-5.669294,3.174809,76.53543),(-11.33858,6.349609,72.28346),(-36.85039,20.63622,72.28346),(-36.85039,20.63622,68.0315)},
     {(-3.174809,5.669294,76.53543),(-6.349609,11.33858,72.28346),(-20.63622,36.85039,72.28346),(-20.63622,36.85039,68.0315)},
     {(0,5.669294,76.53543),(0,11.33858,72.28346),(0,36.85039,72.28346),(0,36.85039,68.0315)}
-  },{
+   },
+   {
     {(0,5.669294,76.53543),(0,11.33858,72.28346),(0,36.85039,72.28346),(0,36.85039,68.0315)},
     {(3.174809,5.669294,76.53543),(6.349609,11.33858,72.28346),(20.63622,36.85039,72.28346),(20.63622,36.85039,68.0315)},
     {(5.669294,3.174809,76.53543),(11.33858,6.349609,72.28346),(36.85039,20.63622,72.28346),(36.85039,20.63622,68.0315)},
     {(5.669294,0,76.53543),(11.33858,0,72.28346),(36.85039,0,72.28346),(36.85039,0,68.0315)},
-  },{
+   },
+   {
     {(0,0,0),(40.3937,0,0),(42.51969,0,2.12598),(42.51969,0,4.251961)},
     {(0,0,0),(40.3937,22.62047,0),(42.51969,23.81102,2.12598),(42.51969,23.81102,4.251961)},
     {(0,0,0),(22.62047,40.3937,0),(23.81102,42.51969,2.12598),(23.81102,42.51969,4.251961)},
     {(0,0,0),(0,40.3937,0),(0,42.51969,2.12598),(0,42.51969,4.251961)}
-  },{
+   },
+   {
     {(0,0,0),(0,40.3937,0),(0,42.51969,2.12598),(0,42.51969,4.251961)},
     {(0,0,0),(-22.62047,40.3937,0),(-23.81102,42.51969,2.12598),(-23.81102,42.51969,4.251961)},
     {(0,0,0),(-40.3937,22.62047,0),(-42.51969,23.81102,2.12598),(-42.51969,23.81102,4.251961)},
     {(0,0,0),(-40.3937,0,0),(-42.51969,0,2.12598),(-42.51969,0,4.251961)}
-  },{
+   },
+   {
     {(0,0,0),(-40.3937,0,0),(-42.51969,0,2.12598),(-42.51969,0,4.251961)},
     {(0,0,0),(-40.3937,-22.62047,0),(-42.51969,-23.81102,2.12598),(-42.51969,-23.81102,4.251961)},
     {(0,0,0),(-22.62047,-40.3937,0),(-23.81102,-42.51969,2.12598),(-23.81102,-42.51969,4.251961)},
     {(0,0,0),(0,-40.3937,0),(0,-42.51969,2.12598),(0,-42.51969,4.251961)}
-  },{
+   },
+   {
     {(0,0,0),(0,-40.3937,0),(0,-42.51969,2.12598),(0,-42.51969,4.251961)},
     {(0,0,0),(22.62047,-40.3937,0),(23.81102,-42.51969,2.12598),(23.81102,-42.51969,4.251961)},
     {(0,0,0),(40.3937,-22.62047,0),(42.51969,-23.81102,2.12598),(42.51969,-23.81102,4.251961)},
     {(0,0,0),(40.3937,0,0),(42.51969,0,2.12598),(42.51969,0,4.251961)}
-  }
-};
+   }
+  };
 
 draw(surface(Q),material(blue, shininess=0.85, metallic=0),render(compression=Low));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/thermodynamics.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,7 +14,7 @@
   draw(ReturnPic, ((0,-S)--(0,S)), bar = EndArrow);         // y axis
   label(ReturnPic, "$\varepsilon$", (S,0), SW);             // x axis label
   label(ReturnPic, "$\sigma$", (0,S), SW);                  // y axis label
-  label(ReturnPic, legend, (0.7S, -S), NW);                 // add label 'legend' 
+  label(ReturnPic, legend, (0.7S, -S), NW);                 // add label 'legend'
   return ReturnPic;                                         // return picture
 }
 
@@ -32,71 +32,71 @@
 real inc = 2.8;                         // increment-offset for combining pictures
 
 //////////////////////////////////////// 1st diagram
-T[1] = CreateKOOS(S, "$T_1$");                                        // initialise T[1] as empty diagram with label $T_1$                  
-graph = A;                                                            //  # pointwise definition of current path 'graph'                    
-graph = graph -- (A.x + grad*1.6, A.y + 1.6);                         //  #                                                                 
-graph = graph -- (E.x - grad*0.4, E.y - 0.4);                         //  #                                                                 
+T[1] = CreateKOOS(S, "$T_1$");                                        // initialise T[1] as empty diagram with label $T_1$
+graph = A;                                                            //  # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*1.6, A.y + 1.6);                         //  #
+graph = graph -- (E.x - grad*0.4, E.y - 0.4);                         //  #
 graph = graph -- E;                                                   //  #
 
-graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy      
-ActPen =  rgb(0,0,0.6) + linewidth(lw);                               // define pen for drawing in 1st diagram                              
-draw(T[1],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[1]' (1st hysteresis branch)     
-draw(T[1], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)                       
+graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen =  rgb(0,0,0.6) + linewidth(lw);                               // define pen for drawing in 1st diagram
+draw(T[1],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[1]' (1st hysteresis branch)
+draw(T[1], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)
 
 graph = (0,0) -- (grad*0.6, 0.6) -- ( (grad*0.6, 0.6) + (0.1, 0) );   // define branch from origin to hysteresis
-graph = roundedpath(graph, radius, S);                                // round this path                        
-draw(T[1], graph, ActPen);                                            // draw this path into 'T[1]'             
+graph = roundedpath(graph, radius, S);                                // round this path
+draw(T[1], graph, ActPen);                                            // draw this path into 'T[1]'
 
 
 //////////////////////////////////////// 2nd diagram
-T[2] = CreateKOOS(S, "$T_2$");                                        // initialise T[2] as empty diagram with label $T_2$              
-graph = A;                                                            //  # pointwise definition of current path 'graph'                
-graph = graph -- (A.x + grad*1.3, A.y + 1.3);                         //  #                                                             
-graph = graph -- (E.x - grad*0.7 , E.y - 0.7);                        //  #                                                             
+T[2] = CreateKOOS(S, "$T_2$");                                        // initialise T[2] as empty diagram with label $T_2$
+graph = A;                                                            //  # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*1.3, A.y + 1.3);                         //  #
+graph = graph -- (E.x - grad*0.7 , E.y - 0.7);                        //  #
 graph = graph -- E;                                                   //  #
-                                                                                                
-graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy      
-ActPen =  rgb(0.2,0,0.4) + linewidth(lw);                             // define pen for drawing in 2nd diagram                              
-draw(T[2],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[2]' (1st hysteresis branch)     
-draw(T[2], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)                       
 
+graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen =  rgb(0.2,0,0.4) + linewidth(lw);                             // define pen for drawing in 2nd diagram
+draw(T[2],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[2]' (1st hysteresis branch)
+draw(T[2], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)
+
 graph = (0,0) -- (grad*0.3, 0.3) -- ( (grad*0.3, 0.3) + (0.1, 0) );   // define branch from origin to hysteresis
-graph = roundedpath(graph, radius, S);                                // round this path                        
-draw(T[2], graph, ActPen);                                            // draw this path into 'T[2]'             
+graph = roundedpath(graph, radius, S);                                // round this path
+draw(T[2], graph, ActPen);                                            // draw this path into 'T[2]'
 
 
 //////////////////////////////////////// 3rd diagram
-T[3] = CreateKOOS(S, "$T_3$");                                        // initialise T[3] as empty diagram with label $T_3$              
-graph = A;                                                            //  # pointwise definition of current path 'graph'                
-graph = graph -- (A.x + grad*0.7, A.y + 0.7);                         //  #                                                             
-graph = graph -- ( - grad*0.3 , - 0.3);                               //  #                                                             
-graph = graph -- (0,0);                                               //  #                                                             
-graph = graph -- (grad*0.6, 0.6);                                     //  #                                                             
-graph = graph -- (E.x - grad*0.4, E.y - 0.4);                         //  #                                                             
-graph = graph -- E;                                                   //  #                                                             
-                                                                                                                                        
-graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy  
-ActPen =  rgb(0.6,0,0.2) + linewidth(lw);                             // define pen for drawing in 3rd diagram                          
-draw(T[3],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[3]' (1st hysteresis branch) 
-draw(T[3], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)                   
+T[3] = CreateKOOS(S, "$T_3$");                                        // initialise T[3] as empty diagram with label $T_3$
+graph = A;                                                            //  # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*0.7, A.y + 0.7);                         //  #
+graph = graph -- ( - grad*0.3 , - 0.3);                               //  #
+graph = graph -- (0,0);                                               //  #
+graph = graph -- (grad*0.6, 0.6);                                     //  #
+graph = graph -- (E.x - grad*0.4, E.y - 0.4);                         //  #
+graph = graph -- E;                                                   //  #
 
+graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen =  rgb(0.6,0,0.2) + linewidth(lw);                             // define pen for drawing in 3rd diagram
+draw(T[3],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[3]' (1st hysteresis branch)
+draw(T[3], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (2nd hysteresis branch)
 
+
 //////////////////////////////////////// 4th diagram
-T[4] = CreateKOOS(S, "$T_4$");                                        // initialise T[4] as empty diagram with label $T_4$              
-graph = A;                                                            //  # pointwise definition of current path 'graph'                
-graph = graph -- (A.x + grad*0.4, A.y + 0.4);                         //  #                                                             
-graph = graph -- ( - grad*0.6 , - 0.6);                               //  #                                                             
-graph = graph -- (0,0);                                               //  #                                                             
-graph = graph -- (grad*0.9, 0.9);                                     //  #                                                             
-graph = graph -- (E.x - grad*0.1, E.y - 0.1);                         //  #                                                             
-graph = graph -- E;                                                   //  #                                                             
-                                                                                                                                        
-graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy  
-ActPen =  rgb(0.6,0,0) + linewidth(lw);                               // define pen for drawing in 4th diagram                          
-draw(T[4],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[4]' (1st hysteresis branch) 
-draw(T[4], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (3nd hysteresis branch)                   
+T[4] = CreateKOOS(S, "$T_4$");                                        // initialise T[4] as empty diagram with label $T_4$
+graph = A;                                                            //  # pointwise definition of current path 'graph'
+graph = graph -- (A.x + grad*0.4, A.y + 0.4);                         //  #
+graph = graph -- ( - grad*0.6 , - 0.6);                               //  #
+graph = graph -- (0,0);                                               //  #
+graph = graph -- (grad*0.9, 0.9);                                     //  #
+graph = graph -- (E.x - grad*0.1, E.y - 0.1);                         //  #
+graph = graph -- E;                                                   //  #
 
+graph = roundedpath(graph, radius, S);                                // round edges of 'graph' using roundedpath() in roundedpath.asy
+ActPen =  rgb(0.6,0,0) + linewidth(lw);                               // define pen for drawing in 4th diagram
+draw(T[4],                   graph, ActPen);                          // draw 'graph' with 'ActPen' into 'T[4]' (1st hysteresis branch)
+draw(T[4], rotate(180,(0,0))*graph, ActPen);                          // draw rotated 'graph' (3nd hysteresis branch)
 
+
 // add some labels and black dots to the first two pictures
 pair SWW = (-0.8, -0.6);
 label(T[1], "$\sigma_f$", (0, 0.6S), NE);                             // sigma_f
@@ -126,6 +126,6 @@
 draw(shift(( 1 - grad*0.55 + 0*inc)*S, 0.45*S)*mark, ActPen);         //  # draw all intersections
 draw(shift((-1 + grad*1.45 + 0*inc)*S, 0.45*S)*mark, ActPen);         //  #
 draw(shift(( 1 - grad*0.55 + 1*inc)*S, 0.45*S)*mark, ActPen);         //  #
-draw(shift(( 1 - grad*0.55 + 2*inc)*S, 0.45*S)*mark, ActPen);         //  # 
-draw(shift((     grad*0.45 + 2*inc)*S, 0.45*S)*mark, ActPen);         //  # 
+draw(shift(( 1 - grad*0.55 + 2*inc)*S, 0.45*S)*mark, ActPen);         //  #
+draw(shift((     grad*0.45 + 2*inc)*S, 0.45*S)*mark, ActPen);         //  #
 draw(shift((     grad*0.45 + 3*inc)*S, 0.45*S)*mark, ActPen);         //  #

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/torus.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/torus.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/torus.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -7,9 +7,9 @@
 real a=1;
 
 /*
-import solids;
-revolution torus=revolution(reverse(Circle(R*X,a,Y,32)),Z,90,345);
-surface s=surface(torus);
+  import solids;
+  revolution torus=revolution(reverse(Circle(R*X,a,Y,32)),Z,90,345);
+  surface s=surface(torus);
 */
 
 triple f(pair t) {

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/triads.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/triads.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/triads.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -12,18 +12,18 @@
 pen d=c+darkgreen;
 
 void drawarrow(string s="", pair p, pair q, side side=RightSide,
-	       bool upscale=false, pen c)
+               bool upscale=false, pen c)
 {
   path g=p{dir(-5)}..{dir(-85)}q;
-  if(upscale) g=reverse(g); 
+  if(upscale) g=reverse(g);
   draw(s,g,side,c,Arrow(Fill,0.65));
-} 
+}
 
 void spectrum(pair l,pair m, pair s) {
   draw(p,c);
- 
+
   d += 4.0;
-  dot("$p$",l,SW,d); 
+  dot("$p$",l,SW,d);
   dot("$q$",m,SW,d);
   dot("$k$",s,SW,d);
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/triangle.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/triangle.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/triangle.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -2,7 +2,7 @@
 import geometry;
 
 triangle t=triangle(b=3,alpha=90,c=4);
-  
+
 dot((0,0));
 
 draw(t);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/truncatedIcosahedron.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,20 +10,21 @@
 triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
 triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};
 
-triple[][] Q={
-  {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
-  {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
-  {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
-  {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
-  {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
-  {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
-  {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
-  {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
-  {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
-  {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
-  {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
-  {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
-};
+triple[][] Q=
+  {
+   {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
+   {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
+   {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
+   {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
+   {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
+   {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
+   {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
+   {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
+   {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
+   {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
+   {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
+   {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
+  };
 
 real R=abs(interp(Q[0][0],Q[0][1],1/3));
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/tvgen.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/tvgen.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/tvgen.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -17,10 +17,10 @@
  * Boston, MA 02110-1301, USA.
  *
  * tvgen-1.2/tvgen.asy  http://picaros.org/ftp/soft/tvgen-1.2.tgz
- * This asy script generates pm5544-like television test cards.  The image 
- * parameters were derived from a 1990 recording.  The basic parameters 
- * conform to itu-r bt.470, bt.601, and bt.709.  There is no unique image 
- * since local variants exist and parameters have varied over time.  
+ * This asy script generates pm5544-like television test cards.  The image
+ * parameters were derived from a 1990 recording.  The basic parameters
+ * conform to itu-r bt.470, bt.601, and bt.709.  There is no unique image
+ * since local variants exist and parameters have varied over time.
  */
 //papertype="a4";
 import plain;
@@ -27,30 +27,30 @@
 int verbose=settings.verbose/*+2*/;  /* uncomment for debug info */
 
 /* tv dot coordinates --> PS points */
-pair tvps(real col, real row, real xd, real yd, int Nv) { 
-  real psx, psy; 
-  psx=col*xd; psy=(Nv-row)*yd; 
-  return (psx,psy); 
+pair tvps(real col, real row, real xd, real yd, int Nv) {
+  real psx, psy;
+  psx=col*xd; psy=(Nv-row)*yd;
+  return (psx,psy);
 }
 path tvrect(int lc, int tr, int rc, int br, real xd, real yd, int Nv) {
-  real lx, ty, rx, by; 
-  pair[] z; 
-  
-  lx=lc*xd; ty=(Nv-tr)*yd; 
-  rx=rc*xd; by=(Nv-br)*yd; 
+  real lx, ty, rx, by;
+  pair[] z;
+
+  lx=lc*xd; ty=(Nv-tr)*yd;
+  rx=rc*xd; by=(Nv-br)*yd;
   /* bl br tr tl */
   z[0]=(lx, by);
-  z[1]=(rx, by); 
-  z[2]=(rx, ty); 
-  z[3]=(lx, ty); 
-  
-  return z[0]--z[1]--z[2]--z[3]--cycle; 
+  z[1]=(rx, by);
+  z[2]=(rx, ty);
+  z[3]=(lx, ty);
+
+  return z[0]--z[1]--z[2]--z[3]--cycle;
 }
 
 /********************* horizontal castellations ********************/
 /* Draw a horizontal red line in the top left and the bottom right
  * castellation.  These testlines disappear if the monitor is not set
- * in a dot-exact mode.  An example is image crop due to overscan.  
+ * in a dot-exact mode.  An example is image crop due to overscan.
  *
  * For 625 line systems any analog-compatible processing removes
  * these red testlines since the first halfline of the odd field and
@@ -58,8 +58,8 @@
  * visible line frame often results via a final copy paste operation.
  */
 void castelhor(int colortv, int[] rccoll, int[] rccolr, int cmaxi, int Nh,
-	       int topdist, int botdist,
-	       pen pdef, real xd, real yd, int Nv) {
+               int topdist, int botdist,
+               pen pdef, real xd, real yd, int Nv) {
   pen pblack, pwhite, pred;
   int i;
 
@@ -113,26 +113,26 @@
     zzc = tvrect(lc,botdist, rc,br, xd,yd,Nv);
     fill(zzc, p=pcast);
   }
-  
+
   return;
 }
 
 /********************* vertical castellations ********************/
-/* The bottom right red rectangle tests for a non causal color FIR 
- * filter in the receiver.  The last 2..4 dots then typically appear 
- * colorless, green, or cyan.  
+/* The bottom right red rectangle tests for a non causal color FIR
+ * filter in the receiver.  The last 2..4 dots then typically appear
+ * colorless, green, or cyan.
  *
- * This stems from the fact that the chroma subcarrier is of lower 
- * bandwidth than luma and thus continues after the last active sample.  
- * These trailing (y,u,v) samples result from an abrupt signal to zero 
- * transition and depend on the transmit and receive filters.  Samples 
- * from VHS, system B/G/D/K, system I, or a DVD player output are 
- * different.  Nevertheless, a sharpening filter uses this data and so 
- * adds false color to the last dots.  
+ * This stems from the fact that the chroma subcarrier is of lower
+ * bandwidth than luma and thus continues after the last active sample.
+ * These trailing (y,u,v) samples result from an abrupt signal to zero
+ * transition and depend on the transmit and receive filters.  Samples
+ * from VHS, system B/G/D/K, system I, or a DVD player output are
+ * different.  Nevertheless, a sharpening filter uses this data and so
+ * adds false color to the last dots.
  */
 void castelver(int colortv, int leftdist, int rightdist, int Nh,
-	       int[] rcrowb, int[] rcrowt, int rmaxi,
-	       pen pdef, real xd, real yd, int Nv) {
+               int[] rcrowb, int[] rcrowt, int rmaxi,
+               pen pdef, real xd, real yd, int Nv) {
   pen pblack, pwhite;
   int i;
 
@@ -144,7 +144,7 @@
     pen pcastl, pcastr;
     int tr, br;
     path zzc;
-  
+
     if (inext%2 == 0) {
       pcastl = pwhite;
     } else {
@@ -157,10 +157,10 @@
     }
 
     tr=rcrowb[i];
-    br=rcrowt[i+1];    
+    br=rcrowt[i+1];
     zzc=tvrect( 0,tr, leftdist,br, xd,yd,Nv);
     fill(zzc, p=pcastl);
-    zzc=tvrect(rightdist,tr, Nh,br, xd,yd,Nv); 
+    zzc=tvrect(rightdist,tr, Nh,br, xd,yd,Nv);
     fill(zzc, p=pcastr);
   }
   return;
@@ -167,7 +167,7 @@
 }
 /********************* image aspect ratio markers ********************/
 void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy,
-	       pen pdef, real xd, real yd, int Nv) {
+               pen pdef, real xd, real yd, int Nv) {
   int[] ridefN={ 4, 16 };
   int[] ridefD={ 3,  9 };
   int i;
@@ -187,11 +187,11 @@
       if (2*offa<Nh) {
         int hy, tr, br;
         path zz;
-	
-	hy=floor(Nsy/3);
-	tr=Nvc-hy;
-	br=Nvc+hy;
-	
+
+        hy=floor(Nsy/3);
+        tr=Nvc-hy;
+        br=Nvc+hy;
+
         zz=tvrect(Nhc+offb, tr, Nhc+offa, br, xd,yd,Nv);
         //dot(zz);
         fill(zz, p=pdef);
@@ -206,7 +206,7 @@
 /************* crosshatch: line pairing, center interlace test *************/
 /* There are 2 coordinate systems in use:
  * 1. integer number based for the gridlines
- *   
+ *
  *   coff, Nhc, rccoll[], rccolc[], rccolr[] : vertical gridlines,
  *   rcrowc, Nvc : horizontal gridlines,
  *
@@ -215,15 +215,15 @@
  *   ccenter={ cx=Nh/2, cy=Nv/2} : the true image center,
  *   rcoff rcright rcleft        : offset to ccenter and points on the circle.
  *
- * Both centers coincide if Nh and Nv are even.  
+ * Both centers coincide if Nh and Nv are even.
  */
 void centerline(int colortv,
-		int[] rccoll, int[] rccolc, int[] rccolr, int divsx,
-		int Nhc, int os,
-		int[] rcrowt, int[] rcrowc, int[] rcrowb, int divsy,
-		int Nvc,
-		pair ccenter, real[] rcoff, pair[] rcright, pair[] rcleft,
-		pen pdef, real xd, real yd, int Nv) {
+                int[] rccoll, int[] rccolc, int[] rccolr, int divsx,
+                int Nhc, int os,
+                int[] rcrowt, int[] rcrowc, int[] rcrowb, int divsy,
+                int Nvc,
+                pair ccenter, real[] rcoff, pair[] rcright, pair[] rcleft,
+                pen pdef, real xd, real yd, int Nv) {
   pen pblack, pwhite;
   int cmaxi, maxoff, mincol, maxcol;
   int rows, tr, br;
@@ -239,7 +239,7 @@
     /* black, vertical gridlines redrawn below */
     pair[] z;
     int col;
-  
+
     z[0]=rcright[divsy];
 
     col = rccolc[divsx+1];
@@ -249,9 +249,9 @@
     z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
     z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
 
-    z[5]=rcleft[divsy]; 
+    z[5]=rcleft[divsy];
     z[6]=rcleft[divsy+1];
-    
+
     z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
     z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
     col = rccolc[divsx+1];
@@ -258,12 +258,12 @@
     z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
     z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
 
-    z[11]=rcright[divsy+1]; 
+    z[11]=rcright[divsy+1];
     fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
-	 --arc(ccenter, z[5], z[6])
-	 --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
-	 --arc(ccenter,z[11], z[0])
-	 --cycle, p=pblack);
+         --arc(ccenter, z[5], z[6])
+         --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
+         --arc(ccenter,z[11], z[0])
+         --cycle, p=pblack);
   } else {
     /* 3 rows of black squares inside the gratings */
     int i, imax = divsy+1;
@@ -277,28 +277,28 @@
       lmaxoff = min(floor(rcoff[i]), floor(rcoff[inext]));
       lmincol = Nhc-lmaxoff;
       lmaxcol = Nhc+lmaxoff;
-      
+
       /* square top and bottom */
       tr = rcrowb[i];
       br = rcrowt[inext];
 
       for (j=0; j<cmaxi; ++j) { /* column j */
-	int jnext = j+1;
-	
-	if (lmincol<=rccolc[j] && rccolc[jnext]<=lmaxcol) {
-	  /* square is inside circle */
-	  int lc, rc;
-	  path zzsq;
+        int jnext = j+1;
 
-	  lc = rccolr[j];
-	  rc = rccoll[jnext];	  
-	  zzsq = tvrect(lc, tr, rc, br, xd,yd,Nv); 
-	  fill(zzsq, p=pblack);          /* draw black squares */
-	}
+        if (lmincol<=rccolc[j] && rccolc[jnext]<=lmaxcol) {
+          /* square is inside circle */
+          int lc, rc;
+          path zzsq;
+
+          lc = rccolr[j];
+          rc = rccoll[jnext];
+          zzsq = tvrect(lc, tr, rc, br, xd,yd,Nv);
+          fill(zzsq, p=pblack);          /* draw black squares */
+        }
       } /* for col j */
     } /* for row i */
   }
-  
+
   /* center cross: vertical and horizontal centerline */
   maxoff = floor(rcoff[divsy]); /* XXX rcoff is relative to ccenter */
   mincol = Nhc-maxoff;
@@ -327,24 +327,24 @@
     int i;
     for (i=0; i<=cmaxi; ++i) {
       int coll, colr;
-    
+
       coll=rccoll[i];
       colr=rccolr[i];
 
       if (mincol<=coll && colr<=maxcol) {
-	path zzv;
-	zzv=tvrect(coll, tr, colr, br, xd,yd,Nv); 
-	fill(zzv, p=pwhite);
+        path zzv;
+        zzv=tvrect(coll, tr, colr, br, xd,yd,Nv);
+        fill(zzv, p=pwhite);
       }
     }
   }
   return;
 }
-     
+
 /************************ topbw **************************************/
-void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow, 
-	   pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb, 
-	   pen pdef, real xd, real yd, int Nv) {
+void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow,
+           pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+           pen pdef, real xd, real yd, int Nv) {
   pen pblack=pdef+gray(0.0), pwhite=pdef+gray(1.0);
   pair[] ze;
   path zext, zref, zint;
@@ -371,7 +371,7 @@
     --ze[3]--ze[4]--ze[5]--ze[6]--ze[7]--ze[8]--ze[9]--cycle;
 
   off=ceil((coff[1]+coff[2])/2);
-  zint=tvrect(Nhc-off,urow, Nhc+off,trow, xd,yd,Nv); 
+  zint=tvrect(Nhc-off,urow, Nhc+off,trow, xd,yd,Nv);
 
   /* paths are completely resolved; no free endpoint conditions */
   fill(zext^^reverse(zint), p=pwhite);
@@ -384,7 +384,7 @@
 }
 
 /************************ testtone **************************************/
-/* x on circle -> return y>=0 
+/* x on circle -> return y>=0
  * in:
  *   x     x-coordinate relative to origin
  *   crad  circle radius in y units, true size=crad*yd
@@ -418,9 +418,9 @@
 }
 
 /* brow>trow && xb>xt */
-void testtone(real Tt, int trow, int brow, 
-	      real ccol, real crow, real crad,
-	      pen pdef, real xd, real yd, int Nv) {
+void testtone(real Tt, int trow, int brow,
+              real ccol, real crow, real crad,
+              pen pdef, real xd, real yd, int Nv) {
   int blocks, i;
   real yt, xt, yb, xb, Ttt=Tt/2;
   pair ccenter;
@@ -488,7 +488,7 @@
       z[2]=tvps(ccol+tl,brow, xd,yd,Nv);
       z[3]=tvps(ccol+tr,brow, xd,yd,Nv);
       zz=z[0]--z[1]--z[2]--z[3]--cycle;
-    } 
+    }
 
     if (tl<tr) {
       if (i%2 == 0) {
@@ -502,9 +502,9 @@
 }
 
 /************************ color bars *************************************/
-void colorbars(int[] coff, int Nhc, int trow, int crow, int brow, 
-	       pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb, 
-	       pen pdef, real xd, real yd, int Nv) {
+void colorbars(int[] coff, int Nhc, int trow, int crow, int brow,
+               pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+               pen pdef, real xd, real yd, int Nv) {
   real cI=0.75;
   real[] cR={ cI,  0,  0,  cI, cI,  0 };
   real[] cG={ cI, cI, cI,   0,  0,  0 };
@@ -517,11 +517,11 @@
     int off;
     int ii=2*i, il=cmax-i, ir=i+cmax+1;
     path zzl, zzr;
-  
+
     off=ceil((coff[1+ii]+coff[2+ii])/2);
     if (i!=0 && i<cmax) {
-      zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv); 
-      zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv); 
+      zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
+      zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
     } else {
       if(i==0) {
         int col, pcol;
@@ -586,7 +586,7 @@
   int coverflow;
 
   cycles=freq*step;
-  coverflow=floor(abs(cycles));  
+  coverflow=floor(abs(cycles));
   if (coverflow>1) {
     thetaret=0;
   } else {
@@ -595,10 +595,10 @@
     cycles-=coverflow*sgn(cycles);
     thetaret=theta+cycles*dpi;       /* cycles=(-1 .. 1) */
 
-    if (thetaret>pi) { 
-      thetaret-=dpi; 
-    } else if (thetaret<-pi) { 
-      thetaret-=dpi; 
+    if (thetaret>pi) {
+      thetaret-=dpi;
+    } else if (thetaret<-pi) {
+      thetaret-=dpi;
     }
   }
 
@@ -606,9 +606,9 @@
   return thetaret;
 }
 
-void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow, 
-	       pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb, 
-	       pen pdef, real xd, real yd, int Nv) {
+void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow,
+               pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+               pen pdef, real xd, real yd, int Nv) {
   int[] divc;
   real[] divfl, divfr;
   int i, divs, coffmax, off, divnext;
@@ -649,7 +649,7 @@
       tr=trow;
     }
 
-    if (off == divc[divnext]) {  
+    if (off == divc[divnext]) {
       /* switch frequency: cycles=0.5*fcur+0.5*fnext */
       thl=addphase(thl, fl, -0.5);
       thr=addphase(thr, fr,  0.5);
@@ -672,10 +672,10 @@
     //write(off, thr, ampr);
 
     col=Nhc-off-1;
-    zz=tvrect(col,tr, col+1,brow, xd,yd,Nv); 
+    zz=tvrect(col,tr, col+1,brow, xd,yd,Nv);
     fill(zz, p=pdef+gray(ampl));
     col=Nhc+off;
-    zz=tvrect(col,tr, col+1,brow, xd,yd,Nv); 
+    zz=tvrect(col,tr, col+1,brow, xd,yd,Nv);
     fill(zz, p=pdef+gray(ampr));
   }
 
@@ -690,9 +690,9 @@
 }
 
 /************************ gray bars **************************************/
-void graybars(int[] coff, int Nhc, int trow, int brow, 
-	      pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb, 
-	      pen pdef, real xd, real yd, int Nv) {
+void graybars(int[] coff, int Nhc, int trow, int brow,
+              pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+              pen pdef, real xd, real yd, int Nv) {
   int[] gs={0, 20, 40, 60, 80, 100};
   int cmax=2, poff, i;
 
@@ -701,11 +701,11 @@
     int off;
     int ii=2*i, il=cmax-i, ir=i+cmax+1;
     path zzl, zzr;
-  
+
     off=ceil((coff[1+ii]+coff[2+ii])/2);
     if (i<cmax) {
-      zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv); 
-      zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv); 
+      zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
+      zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
     } else {
       int pcol;
       pair zlt, zlb, zrt, zrb;
@@ -729,15 +729,15 @@
 }
 
 /************************ bottom bw **************************************/
-void bottombw(int off, int Nhc, int trow, int brow, 
-	      pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb, 
-	      pen pdef, real xd, real yd, int Nv) {
+void bottombw(int off, int Nhc, int trow, int brow,
+              pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
+              pen pdef, real xd, real yd, int Nv) {
   int rows;
   pair zt, zb;
   path zz;
 
   rows=brow-trow;
-  zz=tvrect(Nhc-off,trow, Nhc+off,brow, xd,yd,Nv); 
+  zz=tvrect(Nhc-off,trow, Nhc+off,brow, xd,yd,Nv);
   fill(zz, p=pdef+gray(0.0));
 
   zt=tvps(Nhc-off,trow, xd,yd,Nv);
@@ -751,9 +751,9 @@
 }
 
 /************************ bottom circle **************************************/
-void bottomcirc(int off, int Nhc, int trow, real cx, real cy, real crad, 
-		pair ccenter, pair rclt, pair rcrt,
-		pen pdef, real xd, real yd, int Nv) {
+void bottomcirc(int off, int Nhc, int trow, real cx, real cy, real crad,
+                pair ccenter, pair rclt, pair rcrt,
+                pen pdef, real xd, real yd, int Nv) {
   real cI=0.75;
   real xl, yl, xr, yr, phil, phir;
   pair ccleft, ccright;
@@ -767,7 +767,7 @@
 
   xr=Nhc+off-cx;
   phir=acos(xr*xd/yd/crad);
-  yr=crad*sin(phir); 
+  yr=crad*sin(phir);
   ccright=tvps(cx+xr,cy+yr, xd,yd,Nv);
 
   //dot(ccright); dot(ccleft);
@@ -793,7 +793,7 @@
 
 /****************************** PAL ears ***********************************/
 /* values pro mille
- * left  y      R       G       B 
+ * left  y      R       G       B
  *     550     306     674     550
  *     500     363     500     859
  *     500     637     500     141
@@ -804,12 +804,12 @@
  *
  * in: dright=  -1 left ear, +1 right ear
  */
-void palears(int[] coff, int[] coffa, int[] coffb, int Nhc, 
-	     int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
-	     pen pdef, real xd, real yd, int Nv) {
-  /* the amplitude of (u,v) as seen on a vectorscope, 
+void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
+             int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
+             pen pdef, real xd, real yd, int Nv) {
+  /* the amplitude of (u,v) as seen on a vectorscope,
    * max 0.296 Vn for 100% saturation in W and V ears.
-   * cvbs:   0.7*( y +/- |u+jv| ) = -0.24 .. 0.93 V 
+   * cvbs:   0.7*( y +/- |u+jv| ) = -0.24 .. 0.93 V
    * maxima: ebu 75/0 bars 0.70, bbc 100/25 0.88, 100/0 bars 0.93
    * burst:  0.150 Vcvbs, 21.4 IRE or 0.214 V normalized.
    * luma:   modulated for monochrome compatibility, 1990 version.
@@ -890,10 +890,10 @@
     ph= (u!=0 || v!=0) ? atan2(v,u) : 0.0;
     if (v>=0) {
       if (ph<0)
-	ph=ph+pi;
+        ph=ph+pi;
     } else {
       if (ph>0)
-	ph=ph-pi;
+        ph=ph-pi;
     }
     if (A>0) {
       u=u/A*cI;
@@ -918,14 +918,14 @@
 
 /****************************** NTSC bars ***********************************/
 /* amplitude equals color burst smpte (pm: -V +U)
- *         y   campl  sat       R    G    B 
+ *         y   campl  sat       R    G    B
  * left   0.5  0.21   70%  -I?
  * right  0.5  0.17   60%  +Q?
  */
-void ntscbars(int[] rccoll, int[] rccolr, int divsx, 
-	      int[] rcrowt, int[] rcrowb, int divsy, int dright,
-	      pen pdef, real xd, real yd, int Nv) {
-  /* The amplitude of (i,q) as seen on a vectorscope, 
+void ntscbars(int[] rccoll, int[] rccolr, int divsx,
+              int[] rcrowt, int[] rcrowb, int divsy, int dright,
+              pen pdef, real xd, real yd, int Nv) {
+  /* The amplitude of (i,q) as seen on a vectorscope,
    * max 0.292 Vn for 100% saturation in I==0 ears.
    * burst:    0.143 Vcvbs, 20 IRE or 0.200 V normalized.
    * pedestal: (yp,up,vp)=(p,0,0)+(1-p)*(y,u,v), p=0.075.
@@ -943,7 +943,7 @@
   real[] cil={    0,    0,   0,   -1,    1 };
   real[] cql={   -1,    1,   0,    0,    0 };
   int[]  indl={  -7,   -8,   0,    8,    7 };
-  
+
   real cy, ci, cq;
   int rmaxi, dri, ind, ibase, lcol, rcol, i;
 
@@ -979,17 +979,17 @@
   B=By+cy;
   if (verbose > 1)
     write(ind, cy*1000, round(ci*1000), round(cq*1000),
-	  round(R*1000), round(G*1000), round(B*1000));
+          round(R*1000), round(G*1000), round(B*1000));
 
   for (i=0; i<rmaxi; ++i) {
     path zz;
     int brow, trow, inext=i+1;
-    
+
     if (i>0) {
       trow=rcrowb[i];
     } else {
       trow=floor((rcrowb[i]+rcrowt[inext])/2);
-    } 
+    }
 
     if (inext<rmaxi) {
       brow=rcrowt[inext];
@@ -1000,7 +1000,7 @@
     zz=tvrect(lcol,trow, rcol,brow, xd,yd,Nv);
     fill(zz, p=pdef+rgb(R,G,B));
   }
-  
+
   return;
 }
 
@@ -1019,10 +1019,10 @@
  *    0    4/3       704  guaranteed analog broadcast itu-r bt.470
  *    1    4/3       720  new broadcast, most TV station logos and animations
  *    2    15/11     720  total aperture analog 4/3, 1.37 film DVDs
- *    3    20/11     720  total aperture analog 16/9, 1.85 film DVDs 
- *    4    4/3       768  bsys=0, square dot analog broadcast 
+ *    3    20/11     720  total aperture analog 16/9, 1.85 film DVDs
+ *    4    4/3       768  bsys=0, square dot analog broadcast
  *    5    4/3       768  bsys=1, square dot cable TV info channel
- *    6    131/96    786  bsys=2, total square dot broadcast camera 
+ *    6    131/96    786  bsys=2, total square dot broadcast camera
  *    7    16/9      720  new broadcast 16/9, SD from HD-1440 or itu-r bt.709
  *    8    4/3       704  525 analog broadcast itu-r bt.470 711x485
  *    9    4/3       720  525 new broadcast
@@ -1029,11 +1029,11 @@
  *   10    15/11     720  525 total aperture analog broadcast
  *   11    16/9     1920  1250, 1080 square dot at 12.5 frames/second
  *   12    4/3      1600  1250, 1200 square dot at 12.5 frames/second
- * 
+ *
  * colortv:
  *    0   monochrome crosshatch,
  *    1   pal ears,
- *    2   ntsc bars, 
+ *    2   ntsc bars,
  *    3   neither ears nor bars.
  *
  * os: horizontal oversampling, typical values for 13.5MHz:
@@ -1068,9 +1068,9 @@
   {    0,   0,   0,   0,     0,   0,    0,   0,    0,   0,   0,    0,    0 };
 
 /* active lines for a 625 line frame
- *   The number of active video lines decreased around 1997.  
+ *   The number of active video lines decreased around 1997.
  *     old:  3 run in + 575 visible + 3 run out = 581 lines
- *     new:  6 teletext and WSS + 575 visible 
+ *     new:  6 teletext and WSS + 575 visible
  *   Hence the image center shifted down by 3 lines.  Thus
  *     old TV + new testcard = bottom is cut off,
  *     new TV + old testcard = top is cut off.
@@ -1083,7 +1083,7 @@
  *   Nv=576 lines
  *   rd=ri*Nv/Nh=4/3*9/11=12/11
  *
- *   Nv: 480=2^5*3*5 576=2^6*3^2  
+ *   Nv: 480=2^5*3*5 576=2^6*3^2
  *   Nh: 704=2^6*11 720=2^4*3^2*5
  *
  * horizontal line distance for pre 1997 test pattern
@@ -1096,7 +1096,7 @@
  *   x line width 230 ns -> 3 dots
  *   bottom 2.9us red -> 39.15 dots
  *
- * resolution DPI from image aspect ratio 
+ * resolution DPI from image aspect ratio
  *   Rv=Nv/ly,   ly=4in
  *   ri=Ni/Di,   Ni={ 4, 15, 16}  Di={ 3, 11, 9}
  *   lx=ri*ly
@@ -1107,7 +1107,7 @@
  *     Ni=15 ri=15/Di => Nh=k*60
  *     Ni=16 ri=16/Di => Nh=k*64
  *
- * resolution DPI from dot aspect ratio, general algorithm, 
+ * resolution DPI from dot aspect ratio, general algorithm,
  *
  *     rd=Nd/Dd=ldx/ldy
  *
@@ -1119,7 +1119,7 @@
  *
  *     ldx=1/(m*Dd), ldy=1/(m*Nd), Rh=m*Dd, Rv=m*Nd
  *
- *   and 
+ *   and
  *
  *     lx=Nh*ldx=Nh/(m*Dd), ly=Nv*ldy=Nv/(m*Nd)
  *
@@ -1154,8 +1154,8 @@
 //size(xsize, ysize, Aspect);  // should not have any effect
 
 Nsy=bNsy[bsys];       // grating size in lines 42,43 or 34,35
-Nshift=bNsh[bsys];    // shift image up: pre 1997 =3, 2007 =0 
-fs=1e6*bfs[bsys]*os; 
+Nshift=bNsh[bsys];    // shift image up: pre 1997 =3, 2007 =0
+fs=1e6*bfs[bsys]*os;
 Na=0;          // add 1,0,-1 to height of hor center squares for even Na+Nsy
 
 Ttone=fs/250e3;       // period of ft=250 kHz, fs/ft=54
@@ -1185,8 +1185,8 @@
 }
 rmaxi=2*divsy+1;
 
-/* Nsyc: center square height 
- *   line pairing test: verify distance of center to top and bot 
+/* Nsyc: center square height
+ *   line pairing test: verify distance of center to top and bot
  *   distance is odd ==> top=even/odd, cent=odd/even, bot=even/odd
  *
  * Nsyc odd: not possible
@@ -1215,7 +1215,7 @@
 } else if (Nsyc%4 == 0) {
   Nyst=1; /* stagger */
 }
-for (i=0; i<=divsy; ++i) {  
+for (i=0; i<=divsy; ++i) {
   int iu, id, ou, od, ru, rd;
 
   iu=divsy-i;
@@ -1228,7 +1228,7 @@
   }
   rcrowc[iu]=Nvc-ou;
   rcrowc[id]=Nvc-od;
-  
+
   ru=Nvc-(ou+Nyst);
   rd=Nvc-(od+Nyst);
 
@@ -1253,7 +1253,7 @@
 
 lsq=Nsy*yd;
 Nsx=lsq/xd; /* floating point */
-divsx=floor(((Nh-10*os)/Nsx-1)/2);  
+divsx=floor(((Nh-10*os)/Nsx-1)/2);
 Nhc=round(Nh/2);
 rdistx=(1+2*divsx)*Nsx;
 Nl=Nhc-round(rdistx/2);
@@ -1264,10 +1264,10 @@
 
 int[] coff, coffl, coffr;
 int[] rccoll, rccolc, rccolr;
-for (i=0; i<=divsx; ++i) {  
+for (i=0; i<=divsx; ++i) {
   int off, offl, offr, il, ir;
   real cdist;
-  
+
   cdist=Nsx*(1+2*i);  /* horizontal distance 2 symmetrical vert lines */
   off=round(cdist/2);
   // write(cdist, off);
@@ -1277,7 +1277,7 @@
   coff[i]=off;
   coffl[i]=offl;
   coffr[i]=offr;
-  
+
   if (verbose > 1) {
     write(cdist, off);
   }
@@ -1290,7 +1290,7 @@
 
   rccoll[ir]=Nhc+offl;
   rccolc[ir]=Nhc+off;
-  rccolr[ir]=Nhc+offr;  
+  rccolr[ir]=Nhc+offr;
 }
 Nl=rccolc[0];
 Nr=Nh-rccolc[cmaxi];
@@ -1299,9 +1299,9 @@
 }
 
 /**** draw gray background ****/
-{ 
+{
   path zz;
-  
+
   //zz=tvrect(0,0, Nh,Nv, xd,yd,Nv);
   /* keep white canvas for castellations */
   zz=tvrect(rccoll[0],rcrowt[0], rccolr[cmaxi],rcrowb[rmaxi], xd,yd,Nv);
@@ -1355,16 +1355,16 @@
 /**** draw 2*divsx+2 vertical gridlines ****/
 for (i=0; i<=cmaxi; ++i) {
   path zzv;
-  zzv=tvrect(rccoll[i],0, rccolr[i],Nv, xd,yd,Nv); 
-  fill(zzv, p=pwhite); 
+  zzv=tvrect(rccoll[i],0, rccolr[i],Nv, xd,yd,Nv);
+  fill(zzv, p=pwhite);
 }
 
 /**** castellations ****/
 castelhor(colortv, rccoll, rccolr, cmaxi, Nh, rcrowt[0], rcrowb[rmaxi],
-	  pdefault, xd, yd, Nv);
+          pdefault, xd, yd, Nv);
 
 castelver(colortv, rccoll[0], rccolr[cmaxi], Nh, rcrowb, rcrowt, rmaxi,
-	  pdefault, xd, yd, Nv);
+          pdefault, xd, yd, Nv);
 
 /****** markers for 4/3 aspect ratio ******/
 if (rimage>4/3) {
@@ -1373,59 +1373,59 @@
 
 /****** line pairing center ******/
 centerline(colortv, rccoll, rccolc, rccolr, divsx, Nhc, os,
-	   rcrowt, rcrowc, rcrowb, divsy, Nvc,
-	   ccenter, rcoff, rcright, rcleft, pdefault, xd, yd, Nv);
+           rcrowt, rcrowc, rcrowb, divsy, Nvc,
+           ccenter, rcoff, rcright, rcleft, pdefault, xd, yd, Nv);
 
 if (colortv>0) {
   /* topbw structure */
-  topbw(coff, Nhc, os, rcrowc[divsy-5], rcrowc[divsy-4], rcrowc[divsy-3], 
-	ccenter, rcleft[divsy-4], rcleft[divsy-3], rcright[divsy-4],
-	rcright[divsy-3], pdefault, xd, yd, Nv);
+  topbw(coff, Nhc, os, rcrowc[divsy-5], rcrowc[divsy-4], rcrowc[divsy-3],
+        ccenter, rcleft[divsy-4], rcleft[divsy-3], rcright[divsy-4],
+        rcright[divsy-3], pdefault, xd, yd, Nv);
 
   /* 250 kHz */
-  testtone(Ttone, rcrowc[divsy-3], rcrowc[divsy-2], 
+  testtone(Ttone, rcrowc[divsy-3], rcrowc[divsy-2],
            cx, cy, crad, pdefault, xd, yd, Nv);
 
-  /* color bars */ 
-  colorbars(coff, Nhc, rcrowc[divsy-2], rcrowc[divsy-1], rcrowc[divsy], 
-	    ccenter, rcleft[divsy-2], rcleft[divsy], rcright[divsy-2],
-	    rcright[divsy], pdefault, xd, yd, Nv);
+  /* color bars */
+  colorbars(coff, Nhc, rcrowc[divsy-2], rcrowc[divsy-1], rcrowc[divsy],
+            ccenter, rcleft[divsy-2], rcleft[divsy], rcright[divsy-2],
+            rcright[divsy], pdefault, xd, yd, Nv);
 
   /* test frequencies */
   testfreqs(ftones, coff, Nhc, rcrowc[divsy+1], rcrowc[divsy+2],
-	    rcrowc[divsy+3], ccenter, rcleft[divsy+1], rcleft[divsy+3],
-	    rcright[divsy+1],rcright[divsy+3], pdefault, xd, yd, Nv);
+            rcrowc[divsy+3], ccenter, rcleft[divsy+1], rcleft[divsy+3],
+            rcright[divsy+1],rcright[divsy+3], pdefault, xd, yd, Nv);
 
   /* gray bars */
   graybars(coff, Nhc, rcrowc[divsy+3], rcrowc[divsy+4], ccenter,
-	   rcleft[divsy+3], rcleft[divsy+4],
-	   rcright[divsy+3], rcright[divsy+4], pdefault, xd,yd,Nv);
+           rcleft[divsy+3], rcleft[divsy+4],
+           rcright[divsy+3], rcright[divsy+4], pdefault, xd,yd,Nv);
 
   /* PAL ears */
   if (colortv == 1) {
-    palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, -1, 
+    palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
             pdefault, xd, yd, Nv);
-    palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, 1, 
+    palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
             pdefault, xd, yd, Nv);
   } else if (colortv == 2) {
-    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -1, 
+    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -1,
              pdefault, xd, yd, Nv);
-    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 1, 
+    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 1,
              pdefault, xd, yd, Nv);
-    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -2, 
+    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -2,
              pdefault, xd, yd, Nv);
-    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 2, 
+    ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 2,
              pdefault, xd, yd, Nv);
   }
 
   /* bottom wh - black - wh */
-  bottombw(round((coff[2]+coff[3])/2), Nhc, rcrowc[divsy+4], rcrowc[divsy+5], 
-	   ccenter, rcleft[divsy+4], rcleft[divsy+5],
-	   rcright[divsy+4], rcright[divsy+5], pdefault, xd, yd, Nv);
+  bottombw(round((coff[2]+coff[3])/2), Nhc, rcrowc[divsy+4], rcrowc[divsy+5],
+           ccenter, rcleft[divsy+4], rcleft[divsy+5],
+           rcright[divsy+4], rcright[divsy+5], pdefault, xd, yd, Nv);
 
   /* bottom yellow red circle */
-  bottomcirc(coff[0], Nhc, rcrowc[divsy+5], cx, cy, crad, 
-	     ccenter, rcleft[divsy+5], rcright[divsy+5], pdefault, xd, yd, Nv);
+  bottomcirc(coff[0], Nhc, rcrowc[divsy+5], cx, cy, crad,
+             ccenter, rcleft[divsy+5], rcright[divsy+5], pdefault, xd, yd, Nv);
 }
 
 /********************** set id *********************/
@@ -1466,10 +1466,10 @@
   colNsy = round((rccolc[divsx+5]+rccolc[divsx+6])/2);
   Npos = tvps(colNsy,rowNsy, xd,yd,Nv);
   iNsy = format("%i", Nsy);
-  
-  if (colortv>0) { 
+
+  if (colortv>0) {
     pbw=pdefault+gray(1.0);
-  } else { 
+  } else {
     pbw=pdefault+gray(0.0);
   }
   label(ires, rpos, p=pbw);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/twistedtubes.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,30 +1,30 @@
-import graph3;  
-import palette; 
- 
-size(300,300,keepAspect=true);  
- 
+import graph3;
+import palette;
+
+size(300,300,keepAspect=true);
+
 real w=0.4;
 
-real f(triple t) {return sin(t.x);} 
+real f(triple t) {return sin(t.x);}
 triple f1(pair t) {return (cos(t.x)-2cos(w*t.y),sin(t.x)-2sin(w*t.y),t.y);}
 triple f2(pair t) {return (cos(t.x)+2cos(w*t.y),sin(t.x)+2sin(w*t.y),t.y);}
 triple f3(pair t) {return (cos(t.x)+2sin(w*t.y),sin(t.x)-2cos(w*t.y),t.y);}
 triple f4(pair t) {return (cos(t.x)-2sin(w*t.y),sin(t.x)+2cos(w*t.y),t.y);}
 
-surface s1=surface(f1,(0,0),(2pi,10),8,8,Spline); 
-surface s2=surface(f2,(0,0),(2pi,10),8,8,Spline); 
-surface s3=surface(f3,(0,0),(2pi,10),8,8,Spline); 
-surface s4=surface(f4,(0,0),(2pi,10),8,8,Spline); 
+surface s1=surface(f1,(0,0),(2pi,10),8,8,Spline);
+surface s2=surface(f2,(0,0),(2pi,10),8,8,Spline);
+surface s3=surface(f3,(0,0),(2pi,10),8,8,Spline);
+surface s4=surface(f4,(0,0),(2pi,10),8,8,Spline);
 
 pen[] Rainbow=Rainbow();
-s1.colors(palette(s1.map(f),Rainbow)); 
-s2.colors(palette(s2.map(f),Rainbow)); 
-s3.colors(palette(s3.map(f),Rainbow)); 
-s4.colors(palette(s4.map(f),Rainbow)); 
+s1.colors(palette(s1.map(f),Rainbow));
+s2.colors(palette(s2.map(f),Rainbow));
+s3.colors(palette(s3.map(f),Rainbow));
+s4.colors(palette(s4.map(f),Rainbow));
 
 defaultrender.merge=true;
 
-draw(s1); 
+draw(s1);
 draw(s2);
 draw(s3);
 draw(s4);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/unitoctant.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,35 +1,24 @@
 import graph3;
 
-currentprojection=orthographic(5,4,2);
+currentprojection=orthographic(5,5,8);
 
 size(0,150);
-patch s=octant1x;
-draw(surface(s),green+opacity(0.5));
-draw(s.external(),blue);
+patch s0=octant1.s[0];
+patch s1=octant1.s[1];
+draw(surface(s0),green+opacity(0.5));
+draw(surface(s1),green+opacity(0.5));
+draw(s0.external(),blue);
+draw(s1.external(),blue);
 
-triple[][] P=s.P;
+triple[][] P0=s0.P;
+triple[][] P1=s1.P;
 
 for(int i=0; i < 4; ++i)
-  dot(P[i],red);
+  dot(P0[i],red+0.75mm);
 
+for(int i=0; i < 4; ++i)
+  dot(P1[i],red+0.65mm);
+
 axes3("$x$","$y$",Label("$z$",align=Z));
-triple P00=P[0][0];
-triple P10=P[1][0];
-triple P01=P[0][1];
-triple P02=P[0][2];
-triple P11=P[1][1];
-triple P12=P[1][2];
-triple Q11=XYplane(xypart(P11));
-triple Q12=XYplane(xypart(P12));
 
-draw(P11--Q11,dashed);
-draw(P12--Q12,dashed);
-draw(O--Q12--Q11--(Q11.x,0,0));
-draw(Q12--(Q12.x,0,0));
 
-label("$(1,0,0)$",P00,-2Y);
-label("$(1,a,0)$",P10,-Z);
-label("$(1,0,a)$",P01,-2Y);
-label("$(a,0,1)$",P02,Z+X-Y);
-label("$(1,a,a)$",P11,3X);
-label("$(a,a^2,1)$",P12,7X+Y);

Added: trunk/Master/texmf-dist/doc/asymptote/examples/unitoctantx.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/unitoctantx.asy	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/unitoctantx.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -0,0 +1,35 @@
+import graph3;
+
+currentprojection=orthographic(5,4,2);
+
+size(0,150);
+patch s=octant1x;
+draw(surface(s),green+opacity(0.5));
+draw(s.external(),blue);
+
+triple[][] P=s.P;
+
+for(int i=0; i < 4; ++i)
+  dot(P[i],red);
+
+axes3("$x$","$y$",Label("$z$",align=Z));
+triple P00=P[0][0];
+triple P10=P[1][0];
+triple P01=P[0][1];
+triple P02=P[0][2];
+triple P11=P[1][1];
+triple P12=P[1][2];
+triple Q11=XYplane(xypart(P11));
+triple Q12=XYplane(xypart(P12));
+
+draw(P11--Q11,dashed);
+draw(P12--Q12,dashed);
+draw(O--Q12--Q11--(Q11.x,0,0));
+draw(Q12--(Q12.x,0,0));
+
+label("$(1,0,0)$",P00,-2Y);
+label("$(1,a,0)$",P10,-Z);
+label("$(1,0,a)$",P01,-2Y);
+label("$(a,0,1)$",P02,Z+X-Y);
+label("$(1,a,a)$",P11,3X);
+label("$(a,a^2,1)$",P12,7X+Y);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/vertexshading.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -14,7 +14,7 @@
              new pen[] {red,green+opacity(0.5),blue,black}),
      prc() ? nolight : currentlight);
 draw(surface(shift(X)*((0,0,0)..controls (1,0,0) and (2,0,0)..(3,0,0)..
-             controls (2.5,sqrt(3)/2,0) and (2,sqrt(3),0)..
-             (1.5,3*sqrt(3)/2,0)..
-                         controls (1,sqrt(3),0) and (0.5,sqrt(3)/2,0)..cycle),
+                       controls (2.5,sqrt(3)/2,0) and (2,sqrt(3),0)..
+                       (1.5,3*sqrt(3)/2,0)..
+                       controls (1,sqrt(3),0) and (0.5,sqrt(3)/2,0)..cycle),
              new triple[] {(1.5,sqrt(3)/2,2)},new pen[] {red,green,blue}));

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/worldmap.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/worldmap.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/worldmap.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -3,7 +3,7 @@
 // The required data file is available here:
 // http://www.uni-graz.at/~schwaige/asymptote/worldmap.dat
 // This data was originally obtained from
-// http://www.ngdc.noaa.gov/mgg_coastline/mapit.jsp 
+// http://www.ngdc.noaa.gov/mgg_coastline/mapit.jsp
 
 real findtheta(real phi, real epsilon=realEpsilon) {
   // Determine for given phi the unique solution -pi/2 <= theta <= pi/2 off
@@ -23,12 +23,12 @@
 
 pair mollweide(real lambda, real phi, real lambda0=0){
   // calculate the Mollweide projection centered at lambda0 for the point
-  // with coordinates(phi,lambda) 
+  // with coordinates(phi,lambda)
   static real c1=2*sqrt(2)/pi;
   static real c2=sqrt(2);
   real theta=findtheta(phi);
   return(c1*(lambda-lambda0)*cos(theta), c2*sin(theta));
-} 	
+}
 
 guide gfrompairs(pair[] data){
   guide gtmp;
@@ -54,7 +54,7 @@
   if(spstr[0] == "#") {++cnt; arrarrpair[cnt]=new pair[] ; newseg=true;}
   if(spstr[0] != "#" && newseg) {
     string[] spstr1=split(str,'\t'); // separator is TAB not SPACE
-    pair tmp=((real) spstr1[1],(real) spstr1[0]); 
+    pair tmp=((real) spstr1[1],(real) spstr1[0]);
     arrarrpair[cnt].push(tmp);
   }
 }
@@ -78,7 +78,7 @@
 for(int j=1; j <= 5; ++j) draw(gfrompairs(constlong(-180+j/6*360)),white);
 draw(gfrompairs(constlong(-180)),1.5bp+white);
 draw(gfrompairs(constlong(180)),1.5bp+white);
-for(int j=0; j <= 12; ++j) draw(gfrompairs(constlat(-90+j/6*180)),white); 	
+for(int j=0; j <= 12; ++j) draw(gfrompairs(constlat(-90+j/6*180)),white);
 //draw(gfrompairs(constlong(10)),dotted);
 
 close(in);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/xstitch.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/xstitch.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/xstitch.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -42,22 +42,22 @@
 
 
 pen linepen(int i, int max) {
-  real w=i == -1 || i == max+1   ? 2.0 : 
-    i % 10 == 0 || i == max ? 1.0 : 
-    i % 5 == 0              ? 0.8 : 
+  real w=i == -1 || i == max+1   ? 2.0 :
+    i % 10 == 0 || i == max ? 1.0 :
+    i % 5 == 0              ? 0.8 :
     0.25;
   return linewidth(w);
 }
 
 pen xpen(int i) {
-  return linepen(i,width)+(i == width/2 ? red : 
-                           i == 75 || i == width-75 ? dashed : 
+  return linepen(i,width)+(i == width/2 ? red :
+                           i == 75 || i == width-75 ? dashed :
                            black);
 }
 
 pen ypen(int i) {
-  return linepen(i,height)+(i == height/2 ? red : 
-                            i == 75 || i == height-75 ? dashed : 
+  return linepen(i,height)+(i == height/2 ? red :
+                            i == 75 || i == height-75 ? dashed :
                             black);
 }
 

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01x-1.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -28,8 +28,8 @@
 yaxis3(Label("$y$",1),Arrow3);
 dot(Label("$(1,1)$"),(1,1,0));
 dot(Label("$(-1,1)$"),(-1,1,0),W);
-arrow("$y=x^{2}$",F3(0.7),X,1cm,red); 
-arrow("$y=x$",(0.3,0.3,0),X,1.5cm,red); 
+arrow("$y=x^{2}$",F3(0.7),X,1cm,red);
+arrow("$y=x$",(0.3,0.3,0),X,1.5cm,red);
 draw(circle((-1,1,0),2,Y),dashed);
 draw((-1,1,0)--(1,1,0),dashed);
 draw(shift(-X)*arc(0.02Y,0.3,90,0,0,0,CW),Arrow3);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/xxsq01y.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -25,8 +25,8 @@
 yaxis3(Label("$y$",1),ymax=1.25,dashed,Arrow3);
 
 dot("$(1,1)$",(1,1,0),X);
-arrow("$y=x^{2}$",F3(0.7),X,0.75cm,red); 
-arrow("$y=x$",(0.8,0.8,0),Y,1cm,red); 
+arrow("$y=x^{2}$",F3(0.7),X,0.75cm,red);
+arrow("$y=x$",(0.8,0.8,0),Y,1cm,red);
 
 real r=0.4;
 draw((r,f(r),0)--(r,r,0),red);

Modified: trunk/Master/texmf-dist/doc/asymptote/examples/yingyang.asy
===================================================================
--- trunk/Master/texmf-dist/doc/asymptote/examples/yingyang.asy	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/asymptote/examples/yingyang.asy	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,5 +1,5 @@
 size(0,25cm);
-guide center=(0,1){W}..tension 0.8..(0,0){(1,-.5)}..tension 0.8..{W}(0,-1); 
+guide center=(0,1){W}..tension 0.8..(0,0){(1,-.5)}..tension 0.8..{W}(0,-1);
 
 draw((0,1)..(-1,0)..(0,-1));
 filldraw(center{E}..{N}(1,0)..{W}cycle);

Modified: trunk/Master/texmf-dist/doc/info/asy-faq.info
===================================================================
--- trunk/Master/texmf-dist/doc/info/asy-faq.info	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/info/asy-faq.info	2021-02-24 18:33:44 UTC (rev 57876)
@@ -10,7 +10,7 @@
 File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir)
 
             ASYMPTOTE FREQUENTLY ASKED QUESTIONS
-                            25 Mar 2020
+                            2021-02-19
                           
 This is the list of Frequently Asked Questions about Asymptote (asy).
 
@@ -223,7 +223,7 @@
 
 Binary releases are available for Linux, MacOS X, and Microsoft Windows
 platforms, in addition to full source code, from the website
-http://asymptote.sourceforge.net/.  Many Linux distributions (such as
+https://asymptote.sourceforge.io/.  Many Linux distributions (such as
 RedHat and Debian) now include an Asymptote package (check your
 distribution's documentation for further information about this).
 
@@ -234,7 +234,7 @@
 
 If you have a question, please try to find an answer in this FAQ, in the
 extensive Asymptote documentation at
-http://asymptote.sourceforge.net/doc/, or search the forum:
+https://asymptote.sourceforge.io/doc/, or search the forum:
 http://sourceforge.net/forum/forum.php?forum_id=409349.
 
 
@@ -316,7 +316,7 @@
 
 Question 2.3.  What do I do if I get the error: Error: pdfetex (file pdftex.cfg): cannot open config file...texinfo.tex appears to be broken?
 
-Simply put http://asymptote.sourceforge.net/asymptote.pdf in the directory
+Simply put https://asymptote.sourceforge.io/asymptote.pdf in the directory
 doc and repeat the command make all.  Or, if you don't want to build a
 local copy of the documentation, simply proceed with make install-asy.
 
@@ -340,7 +340,7 @@
 http://dario.dse.nl/projects/asylatex/.
 
 Philippe Ivaldi has contributed an Asymptote mode for Emacs users
-http://asymptote.sourceforge.net/doc/Editing-modes.html, which includes a
+https://asymptote.sourceforge.io/doc/Editing-modes.html, which includes a
 lasy-mode that allows one to compile and view the output of one
 \begin{asy}...\end{asy} section at a time.
 
@@ -541,7 +541,7 @@
 
 Question 4.4.  How can I use international fonts in Asymptote labels?
 
-See http://asymptote.sourceforge.net/doc/unicode.html.
+See https://asymptote.sourceforge.io/doc/Pens.html.
 
 
 File: asy-faq.info, Node: Question 4.5, Next: Question 4.6, Previous: Question 4.4, Up: Section 4
@@ -586,8 +586,8 @@
 
 Fixed-size objects should be drawn on a separate picture and then added to
 currentpicture. Here is one way (see also
-http://asymptote.sourceforge.net/gallery/subpictures.asy and
-http://asymptote.sourceforge.net/gallery/mosquito.asy):
+https://asymptote.sourceforge.io/gallery/subpictures.asy and
+https://asymptote.sourceforge.io/gallery/mosquito.asy):
 
 real u=2cm;
  
@@ -904,7 +904,7 @@
 labels; the default), Suppress (an overlapping label will not be written
 at all), SuppressQuiet, and MoveQuiet. The last two achieve the same
 result as the non-quiet types, but will not notify you which labels are
-overlapping. See:  http://asymptote.sourceforge.net/doc/Pens.html.
+overlapping. See:  https://asymptote.sourceforge.io/doc/Pens.html.
 
 In the case of a user-specified tick array, you can change which labels
 get suppressed/moved by changing the order of array entries.
@@ -948,7 +948,7 @@
 scaling and same resulting figure size (just ensure the two coordinates
 given to fixedscaling() leaves room for any labels).
 
-See also http://asymptote.sourceforge.net/doc/Frames-and-pictures.html.
+See also https://asymptote.sourceforge.io/doc/Frames-and-pictures.html.
 
 
 File: asy-faq.info, Node: Question 6.9, Next: Question 6.10, Previous: Question 6.8, Up: Section 6
@@ -966,7 +966,7 @@
 
 xaxis("$x$",BottomTop,LeftTicks);
 yaxis("$y$",LeftRight,RightTicks);
-See also http://asymptote.sourceforge.net/doc/graph.html.
+See also https://asymptote.sourceforge.io/doc/graph.html.
 
 
 File: asy-faq.info, Node: Question 6.10, Next: Question 6.11, Previous: Question 6.9, Up: Section 6
@@ -1051,7 +1051,7 @@
 
 Question 6.13.  How can I make the y axis display base-2 logarithmic values?
 
-See the example http://asymptote.sourceforge.net/gallery/2D
+See the example https://asymptote.sourceforge.io/gallery/2D
 graphs/log2graph.asy.
 
 
@@ -1061,7 +1061,7 @@
 
 An easy way to do this, if the axes to be aligned have the same scaling
 and size, is illustrated in the example
-http://asymptote.sourceforge.net/gallery/2D graphs/alignedaxis.asy.
+https://asymptote.sourceforge.io/gallery/2D graphs/alignedaxis.asy.
 
 Here is a more general solution to the problem of aligning two arbitrary
 axes.  One fits the second picture to a frame based on the horizontal
@@ -1125,7 +1125,7 @@
 Question 6.15.  How can I change the direction of the y-axis, such that negatives values are on the upper y-axis?
 
 Here is a simple example (see also the example
-http://asymptote.sourceforge.net/gallery/2D graphs/diatom.asy or the
+https://asymptote.sourceforge.io/gallery/2D graphs/diatom.asy or the
 discussion of Linear(-1) in the documentation):
 
 import graph;
@@ -1159,7 +1159,7 @@
 
 y=t 
 x=(t-2)^2+1 
-See the example http://asymptote.sourceforge.net/gallery/2D
+See the example https://asymptote.sourceforge.io/gallery/2D
 graphs/parametricgraph.asy.
 
 
@@ -1382,7 +1382,7 @@
 
 Yes, Asymptote includes a line-based debugger:
 
-http://asymptote.sourceforge.net/doc/Debugger.html
+https://asymptote.sourceforge.io/doc/Debugger.html
 
 
 File: asy-faq.info, Node: Question 7.9, Next: Question 8.1, Previous: Question 7.8, Up: Section 7
@@ -1441,7 +1441,7 @@
 should scale with the picture size. The resulting linear programming
 problem is solved via the Simplex method.
 
-See the http://asymptote.sourceforge.net/gallery/dimension.asy example for
+See the https://asymptote.sourceforge.io/gallery/dimension.asy example for
 an example of how deferred drawing is used to accomodate both user and
 true-size (PostScript) coordinates.
 
@@ -1495,7 +1495,7 @@
 confusing to new users. But we could be persuaded to add something similar
 if someone can justify the need. In the meantime, one can always use the
 explicit built-in linear solver solve (see
-http://asymptote.sourceforge.net/doc/solve.html), which uses LU
+https://asymptote.sourceforge.io/doc/solve.html), which uses LU
 decomposition.
 
 
@@ -1578,7 +1578,7 @@
  
 clip(100,100);
 See also the discussion of tilings in the documentation:
-http://asymptote.sourceforge.net/doc/Pens.html.
+https://asymptote.sourceforge.io/doc/Pens.html.
 
 
 File: asy-faq.info, Node: Section 9, Previous: Section 8, Up: Top
@@ -1612,7 +1612,7 @@
 interactiveView=false;
 batchView=false;
 in their config.asy file. See
-http://asymptote.sourceforge.net/doc/Options.html.
+https://asymptote.sourceforge.io/doc/Options.html.
 
 
 File: asy-faq.info, Node: Question 9.2, Next: Question 9.3, Previous: Question 9.1, Up: Section 9
@@ -1631,8 +1631,8 @@
 a Label:
 
 label(graphic("file"),(0,0));
-See the example http://asymptote.sourceforge.net/gallery/orthocenter.asy
-and http://asymptote.sourceforge.net/doc/label.html.
+See the example https://asymptote.sourceforge.io/gallery/orthocenter.asy
+and https://asymptote.sourceforge.io/doc/label.html.
 
 
 File: asy-faq.info, Node: Question 9.4, Next: Question 9.5, Previous: Question 9.3, Up: Section 9

Modified: trunk/Master/texmf-dist/doc/info/asymptote.info
===================================================================
--- trunk/Master/texmf-dist/doc/info/asymptote.info	2021-02-24 18:27:49 UTC (rev 57875)
+++ trunk/Master/texmf-dist/doc/info/asymptote.info	2021-02-24 18:33:44 UTC (rev 57876)
@@ -1,11 +1,11 @@
 This is asymptote.info, produced by makeinfo version 6.6 from
 asymptote.texi.
 
-This file documents 'Asymptote', version 2.65.
+This file documents 'Asymptote', version 2.69.
 
    <https://asymptote.sourceforge.io>
 
-   Copyright (C) 2004-19 Andy Hammerlindl, John Bowman, and Tom Prince.
+   Copyright (C) 2004-20 Andy Hammerlindl, John Bowman, and Tom Prince.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Lesser General Public License
@@ -22,11 +22,11 @@
 Asymptote
 *********
 
-This file documents 'Asymptote', version 2.65.
+This file documents 'Asymptote', version 2.69.
 
    <https://asymptote.sourceforge.io>
 
-   Copyright (C) 2004-19 Andy Hammerlindl, John Bowman, and Tom Prince.
+   Copyright (C) 2004-20 Andy Hammerlindl, John Bowman, and Tom Prince.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Lesser General Public License
@@ -126,6 +126,7 @@
 * stats::                       Statistics routines and histograms
 * patterns::                    Custom fill and draw patterns
 * markers::                     Custom path marker routines
+* map::                         Map keys to values
 * tree::                        Dynamic binary search tree
 * binarytree::                  Binary tree drawing module
 * drawtree::                    Tree drawing module
@@ -136,8 +137,6 @@
 * embed::                       Embedding movies, sounds, and 3D objects
 * slide::                       Making presentations with 'Asymptote'
 * MetaPost::                    'MetaPost' compatibility routines
-* unicode::                     Accept 'unicode' (UTF-8) characters
-* latin1::                      Accept 'ISO 8859-1' characters
 * babel::                       Interface to 'LaTeX' 'babel' package
 * labelpath::                   Drawing curved labels
 * labelpath3::                  Drawing curved labels in 3D
@@ -175,9 +174,13 @@
 drawing.  Labels and equations are typeset with 'LaTeX', for overall
 document consistency, yielding the same high-quality level of
 typesetting that 'LaTeX' provides for scientific text.  By default it
-produces 'PostScript' output, but it can also generate any format that
-the 'ImageMagick' package can produce.
+produces 'PostScript' output, but it can also generate 'PDF', 'SVG',
+'WebGL', 'PRC', and any format that the 'ImageMagick' package can
+produce.  You can even try it out in your Web browser without installing
+it, using the 'Asymptote Web Application':
 
+   <http://asymptote.ualberta.ca>
+
    A major advantage of 'Asymptote' over other graphics packages is that
 it is a high-level programming language, as opposed to just a graphics
 program: it can therefore exploit the best features of the script
@@ -292,8 +295,8 @@
 The executable file will be '/usr/local/bin/asy') and example code will
 be installed by default in '/usr/local/share/doc/asymptote/examples'.
 
-Fedora users can easily install the most recent version of 'Asymptote'
-with the command
+Fedora users can easily install a recent version of 'Asymptote' with the
+command
 dnf --enablerepo=rawhide install asymptote
 
 To install the latest version of 'Asymptote' on a Debian-based
@@ -332,7 +335,7 @@
    A working TeX implementation (we recommend
 <https://www.tug.org/texlive> or <http://www.miktex.org>) will be
 required to typeset labels.  You will also need to install 'GPL
-Ghostscript' version 9.14 or later from
+Ghostscript' version 9.52 or later from
 <http://downloads.ghostscript.com/public>.
 
    To view 'PostScript' output, you can install the program 'gsview'
@@ -365,7 +368,7 @@
 this (via a 'SIGHUP' signal).  Version 'gv-3.6.3' or later (from
 <https://ftp.gnu.org/gnu/gv/>) is required for interactive mode to work
 properly.  Users of 'ggv' will need to enable 'Watch file' under
-'Edit/Postscript Viewer Preferences'.  Users of 'gsview' will need to
+'Edit/PostScript Viewer Preferences'.  Users of 'gsview' will need to
 enable 'Options/Auto Redisplay' (however, under 'MSDOS' it is still
 necessary to click on the 'gsview' window; under 'UNIX' one must
 manually redisplay by pressing the 'r' key).
@@ -397,7 +400,9 @@
 display 3D 'WebGL' output.  The default setting is 'google-chrome' under
 'UNIX' and 'cmd' under 'Microsoft Windows'.  Note that 'Internet
 Explorer' does not support 'WebGL'; 'Microsoft Windows' users should set
-their default html browser to 'chrome' or 'microsoft-edge'.
+their default html browser to 'chrome' or 'microsoft-edge'.  By default,
+2D and 3D 'HTML' images expand to the enclosing canvas; this can be
+disabled by setting the configuation variable 'absolute' to 'true'.
 
    On 'UNIX' systems, to support automatic document reloading of 'PDF'
 files in 'Adobe Reader', we recommend copying the file 'reload.js' from
@@ -462,8 +467,8 @@
 2.5 Search paths
 ================
 
-In looking for 'Asymptote' system files, 'asy' will search the following
-paths, in the order listed:
+In looking for 'Asymptote' files, 'asy' will search the following paths,
+in the order listed:
   1. The current directory;
   2. A list of one or more directories specified by the configuration
      variable 'dir' or environment variable 'ASYMPTOTE_DIR' (separated
@@ -475,6 +480,9 @@
   4. The 'Asymptote' system directory (by default,
      '/usr/local/share/asymptote' under 'UNIX' and 'C:\Program
      Files\Asymptote' under 'MSDOS').
+  5. The 'Asymptote' examples directory (by default,
+     '/usr/local/share/doc/asymptote/examples' under 'UNIX' and
+     'C:\Program Files\Asymptote\examples' under 'MSDOS').
 
 
 File: asymptote.info,  Node: Compiling from UNIX source,  Next: Editing modes,  Prev: Search paths,  Up: Installation
@@ -498,18 +506,16 @@
 in the 'Asymptote' source directory.
 
    On 'UNIX' platforms (other than 'MacOS X'), we recommend using
-version '3.0.0' of the 'freeglut' library.  To compile 'freeglut',
+version '3.2.1' of the 'freeglut' library.  To compile 'freeglut',
 download
-     <https://prdownloads.sourceforge.net/freeglut/freeglut-3.0.0.tar.gz>
+     <https://prdownloads.sourceforge.net/freeglut/freeglut-3.2.1.tar.gz>
 and type (as the root user):
-gunzip freeglut-3.0.0.tar.gz
-tar -xf freeglut-3.0.0.tar
-cd freeglut-3.0.0
-./configure --prefix=/usr
-cmake .
+gunzip freeglut-3.2.1.tar.gz
+tar -xf freeglut-3.2.1.tar
+cd freeglut-3.2.1
+cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_FLAGS=-fcommon .
 make
 make install
-cd ..
 
    Then compile 'Asymptote' with the commands
 ./configure
@@ -528,9 +534,10 @@
 ./configure --prefix=$HOME/asymptote
    One can disable use of the Boehm garbage collector by configuring
 with './configure --disable-gc'.  For a list of other configuration
-options, say './configure --help'.  For example, one can tell configure
-to look for header files and libraries in nonstandard locations:
-./configure CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib
+options, say './configure --help'.  For example, under 'MacOS X', one
+can tell configure to use the 'clang' compilers and look for header
+files and libraries in nonstandard locations:
+./configure CC=clang CXX=clang++ CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib
 
    If you are compiling 'Asymptote' with 'gcc', you will need a
 relatively recent version (e.g. 3.4.4 or later).  For full interactive
@@ -618,7 +625,10 @@
 make all
 make install
 
-To compile without optimization, use the command 'make CFLAGS=-g'.
+To compile without optimization, use the command 'make CFLAGS=-g'.  On
+'Ubuntu' systems, you may need to first install the required
+dependencies:
+apt-get build-dep asymptote
 
 
 File: asymptote.info,  Node: Uninstall,  Prev: Git,  Up: Installation
@@ -652,7 +662,7 @@
 thorough introduction, see the excellent 'Asymptote' tutorial written by
 Charles Staats:
 
-   <https://math.uchicago.edu/~cstaats/Charles_Staats_III/Notes_and_papers_files/asymptote_tutorial.pdf>
+   <https://asymptote.sourceforge.io/asymptote_tutorial.pdf>
 
    Another 'Asymptote' tutorial is available as a wiki, with images
 rendered by an online Asymptote engine:
@@ -798,7 +808,7 @@
 a unit circle:
 path unitcircle=E..N..W..S..cycle;
 
-An 'Asymptote' path, being connected, is equivalent to a 'Postscript
+An 'Asymptote' path, being connected, is equivalent to a 'PostScript
 subpath'.  The '^^' binary operator, which requests that the pen be
 moved (without drawing or affecting endpoint curvatures) from the final
 point of the left-hand path to the initial point of the right-hand path,
@@ -820,8 +830,8 @@
 filldraw(unitcircle^^reverse(g),yellow,black);
 
    The '^^' operator is used by the 'box(triple, triple)' function in
-the module 'three.asy' to construct the edges of a cube 'unitbox'
-without retracing steps (*note three::):
+the module 'three' to construct the edges of a cube 'unitbox' without
+retracing steps (*note three::):
 import three;
 
 currentprojection=orthographic(5,4,2,center=true);
@@ -873,6 +883,9 @@
 'tex' commands are always drawn after the 'PostScript' objects in that
 layer.
 
+   A page break can be generated with the command
+void newpage(picture pic=currentpicture);
+
    While some of these drawing commands take many options, they all have
 sensible default values (for example, the picture argument defaults to
 currentpicture).
@@ -930,18 +943,19 @@
 'labelmargin(p)' to avoid overlap with other drawn objects.  Typical
 values of 'margin' are 'NoMargin', 'BeginMargin', 'EndMargin' (or
 equivalently 'Margin'), and 'Margins' (which leaves a margin at both
-ends of the path).  One may use 'Margin(real begin, real end)' to
+ends of the path).  One may use 'Margin(real begin, real end=begin)' to
 specify the size of the beginning and ending margin, respectively, in
 multiples of the units 'labelmargin(p)' used for aligning labels.
 Alternatively, 'BeginPenMargin', 'EndPenMargin' (or equivalently
-'PenMargin'), 'PenMargins', 'PenMargin(real begin, real end)' specify a
-margin in units of the pen line width, taking account of the pen line
-width when drawing the path or arrow.  For example, use 'DotMargin', an
-abbreviation for 'PenMargin(-0.5*dotfactor,0.5*dotfactor)', to draw from
-the usual beginning point just up to the boundary of an end dot of width
+'PenMargin'), 'PenMargins', 'PenMargin(real begin, real end=begin)'
+specify a margin in units of the pen line width, taking account of the
+pen line width when drawing the path or arrow.  For example, use
+'DotMargin', an abbreviation for
+'PenMargin(-0.5*dotfactor,0.5*dotfactor)', to draw from the usual
+beginning point just up to the boundary of an end dot of width
 'dotfactor*linewidth(p)'.  The qualifiers 'BeginDotMargin',
 'EndDotMargin', and 'DotMargins' work similarly.  The qualifier
-'TrueMargin(real begin, real end)' allows one to specify a margin
+'TrueMargin(real begin, real end=begin)' allows one to specify a margin
 directly in 'PostScript' units, independent of the pen line width.
 
    The use of arrows, bars, and margins is illustrated by the examples
@@ -1051,7 +1065,8 @@
                 pen pena, pair a, bool extenda=true,
                 pen penb, pair b, bool extendb=true);
 The boolean parameters 'extenda' and 'extendb' indicate whether the
-shading should extend beyond the axis endpoints 'a' and 'b'.
+shading should extend beyond the axis endpoints 'a' and 'b'.  An example
+of axial shading is provided in the example file 'axialshade.asy'.
 
    Radial gradient shading varying smoothly from 'pena' on the circle
 with center 'a' and radius 'ra' to 'penb' on the circle with center 'b'
@@ -1079,10 +1094,10 @@
 here:
      <https://www.adobe.com/content/dam/acom/en/devnet/postscript/pdfs/TN5600.SmoothShading.pdf>
 
-   Tensor product shading using fill rule 'fillrule' on patches bounded
-by the n cyclic paths of length 4 in path array 'b', using the vertex
-colors specified in the n \times 4 pen array 'p' and internal control
-points in the n \times 4 array 'z', is implemented with
+   Tensor product shading using clipping path 'g', fill rule 'fillrule'
+on patches bounded by the n cyclic paths of length 4 in path array 'b',
+using the vertex colors specified in the n \times 4 pen array 'p' and
+internal control points in the n \times 4 array 'z', is implemented with
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[][] p, path[] b=g,
                  pair[][] z=new pair[][]);
@@ -1129,8 +1144,10 @@
 the path 'g', using fill rule 'fillrule' (*note fillrule::).  If
 'stroke=true', the clipped portion is the same as the region that would
 be drawn with 'draw(pic,g,zerowinding)'; in this case the path 'g' need
-not be cyclic.  For an illustration of picture clipping, see the first
-example in *note LaTeX usage::.
+not be cyclic.  While clipping has no notion of depth (it transcends
+layers and even pages), one can localize clipping to a temporary
+picture, which can then be added to 'pic'.  For an illustration of
+picture clipping, see the first example in *note LaTeX usage::.
 
 
 File: asymptote.info,  Node: label,  Prev: clip,  Up: Drawing commands
@@ -1260,12 +1277,12 @@
 fill(unitcircle^^(scale(2/11.7)*unitcircle),
      evenodd+rgb(124/255,205/255,124/255));
 label(scale(1.1)*minipage(
-"\centering\scriptsize \textbf{\LARGE {\tt Asymptote}\\
+                          "\centering\scriptsize \textbf{\LARGE {\tt Asymptote}\\
 \smallskip
 \small The Vector Graphics Language}\\
 \smallskip
 \textsc{Andy Hammerlindl, John Bowman, and Tom Prince}
-http://asymptote.sourceforge.net\\
+https://asymptote.sourceforge.io\\
 ",8cm),(0,0.6));
 label(graphic("logo","height=7cm"),(0,-0.22));
 clip(unitcircle^^(scale(2/11.7)*unitcircle),evenodd);
@@ -1484,12 +1501,12 @@
           returns the conjugate of 'z';
 
      'real length(pair z)'
-          returns the complex modulus '|z|' of its argument 'z'.  For
+          returns the complex modulus |'z'| of its argument 'z'.  For
           example,
                pair z=(3,4);
                length(z);
           returns the result 5.  A synonym for 'length(pair)' is
-          'abs(pair)';
+          'abs(pair)'.  The function 'abs2(pair z)' returns |'z'|^2;
 
      'real angle(pair z, bool warn=true)'
           returns the angle of 'z' in radians in the interval
@@ -1563,8 +1580,9 @@
 
      Here are the built-in functions for triples:
      'real length(triple v)'
-          returns the length '|v|' of the vector 'v'.  A synonym for
-          'length(triple)' is 'abs(triple)';
+          returns the length |'v'| of its argument 'v'.  A synonym for
+          'length(triple)' is 'abs(triple)'.  The function 'abs2(triple
+          v)' returns |'v'|^2;
 
      'real polar(triple v, bool warn=true)'
           returns the colatitude of 'v' measured from the z axis in
@@ -2419,7 +2437,7 @@
      'defaultpen(pen)', causes the label alignment routines to use the
      full label bounding box for alignment.  In contrast, 'basealign'
      requests that the TeX baseline be respected.  The base align
-     setting of a pen is returned by 'int basealigin(pen p=currentpen)'.
+     setting of a pen is returned by 'int basealign(pen p=currentpen)'.
 
    * The font size is specified in TeX points (1 pt = 1/72.27 inches)
      with the function 'pen fontsize(real size, real
@@ -2435,14 +2453,12 @@
      fontsize(pen p=currentpen)' and 'real lineskip(pen p=currentpen)',
      respectively.
 
-   * A pen using a specific 'LaTeX' 'NFSS' font is returned by calling
-     the function 'pen font(string encoding, string family, string
-     series, string shape)'.  The default setting,
-     'font("OT1","cmr","m","n")', corresponds to 12pt Computer Modern
-     Roman; this may be changed with 'defaultpen(pen)'.  The font
-     setting of a pen is returned by 'string font(pen p=currentpen)'.
-     Support for standardized international characters is provided by
-     the 'unicode' package (*note unicode::).
+   * A pen using a specific LaTeX NFSS font is returned by calling the
+     function 'pen font(string encoding, string family, string series,
+     string shape)'.  The default setting, 'font("OT1","cmr","m","n")',
+     corresponds to 12pt Computer Modern Roman; this may be changed with
+     'defaultpen(pen)'.  The font setting of a pen is returned by
+     'string font(pen p=currentpen)'.
 
      Alternatively, one may select a fixed-size TeX font (on which
      'fontsize' has no effect) like '"cmr12"' (12pt Computer Modern
@@ -2466,6 +2482,25 @@
      pen Symbol(string series="m", string shape="n");
      pen ZapfDingbats(string series="m", string shape="n");
 
+   * Starting with the 2018/04/01 release, LaTeX takes UTF-8 as the new
+     default input encoding.  However, you can still set different input
+     encoding (so as the font, font encoding or even language context).
+     Here is an example for 'cp1251' and Russian language in Cyrillic
+     script (font encoding 'T2A'):
+     texpreamble("\usepackage[math]{anttor}");
+     texpreamble("\usepackage[T2A]{fontenc}");
+     texpreamble("\usepackage[cp1251]{inputenc}");
+     texpreamble("\usepackage[russian]{babel}");
+     Support for Chinese, Japanese, and Korean fonts is provided by the
+     CJK package:
+          <https://ctan.org/pkg/cjk>
+     The following commands enable the CJK song family (within a label,
+     you can also temporarily switch to another family, say kai, by
+     prepending '"\CJKfamily{kai}"' to the label string):
+     texpreamble("\usepackage{CJK}
+     \AtBeginDocument{\begin{CJK*}{GBK}{song}}
+     \AtEndDocument{\clearpage\end{CJK*}}");
+
    * The transparency of a pen can be changed with the command:
      pen opacity(real opacity=1, string blend="Compatible");
      The opacity can be varied from '0' (fully transparent) to the
@@ -2652,7 +2687,8 @@
    The implicit initializer for transforms is 'identity()'.  The
 routines 'shift(transform t)' and 'shiftless(transform t)' return the
 transforms '(t.x,t.y,0,0,0,0)' and '(0,0,t.xx,t.xy,t.yx,t.yy)'
-respectively.
+respectively.  The function 'bool isometry(transform t)' can be used to
+test if 't' is an isometry (preserves distance).
 
 
 File: asymptote.info,  Node: Frames and pictures,  Next: Files,  Prev: Transforms,  Up: Programming
@@ -2991,7 +3027,7 @@
 value) files and portable XDR (External Data Representation) binary
 files.
 
-   An input file must first be opened with
+   An input file can be opened with
 input(string name="", bool check=true, string comment="#", string mode="");
    reading is then done by assignment:
 file fin=input("test.txt");
@@ -3004,12 +3040,14 @@
 this character is encountered in a data file, the remainder of the line
 is ignored.  When reading strings, a comment character followed
 immediately by another comment character is treated as a single literal
-comment character.
+comment character.  If 'Asymptote' is compiled with support for
+'libcurl', 'name' can be a URL.
 
-   One can change the current working directory for read operations to
-the contents of the string 's' with the function 'string cd(string s)',
-which returns the new working directory.  If 'string s' is empty, the
-path is reset to the value it had at program startup.
+   Unless the '-noglobalread' command-line option is specified, one can
+change the current working directory for read operations to the contents
+of the string 's' with the function 'string cd(string s)', which returns
+the new working directory.  If 'string s' is empty, the path is reset to
+the value it had at program startup.
 
    When reading pairs, the enclosing parenthesis are optional.  Strings
 are also read by assignment, by reading characters up to but not
@@ -3025,9 +3063,11 @@
 end-of-file, and both reading and writing operations will be enabled.
 For security reasons, writing to files in directories other than the
 current directory is allowed only if the '-globalwrite' (or '-nosafe')
-command-line option is specified.  The function 'string mktemp(string
-s)' may be used to create and return the name of a unique temporary file
-in the current directory based on the string 's'.
+command-line option is specified.  Reading from files in other
+directories is allowed unless the '-noglobalread' command-line option is
+specified.  The function 'string mktemp(string s)' may be used to create
+and return the name of a unique temporary file in the current directory
+based on the string 's'.
 
    There are two special files: 'stdin', which reads from the keyboard,
 and 'stdout', which writes to the terminal.  The implicit initializer
@@ -3063,12 +3103,12 @@
 (available on all 'UNIX' platforms).  Alternatively, a file may also be
 opened with 'mode="binary"' to read or write double precision reals and
 single precision integers in the native (nonportable) machine binary
-format.  The virtual member functions 'file singlereal(bool b=true)' and
-'file singleint(bool b=true)' be used to change the precision of real
-and integer I/O operations, respectively, for an XDR or binary file 'f'.
-Similarly, the function 'file signedint(bool b=true)' can be used to
-modify the signedness of integer reads and writes for an XDR or binary
-file 'f'.
+format, or to read the entire file into a string.  The virtual member
+functions 'file singlereal(bool b=true)' and 'file singleint(bool
+b=true)' be used to change the precision of real and integer I/O
+operations, respectively, for an XDR or binary file 'f'.  Similarly, the
+function 'file signedint(bool b=true)' can be used to modify the
+signedness of integer reads and writes for an XDR or binary file 'f'.
 
    The virtual members 'name', 'mode', 'singlereal', 'singleint', and
 'signedint' may be used to query the respective parameters for a given
@@ -3386,10 +3426,11 @@
 
    The function 'cputime()' returns a structure 'cputime' with
 cumulative CPU times broken down into the fields 'parent.user',
-'parent.system', 'child.user', and 'child.system'.  For convenience, the
-incremental fields 'change.user' and 'change.system' indicate the change
-in the corresponding total parent and child CPU times since the last
-call to 'cputime()'.  The function
+'parent.system', 'child.user', and 'child.system', along with the
+cumulative wall clock time in 'parent.clock', all measured in seconds.
+For convenience, the incremental fields 'change.user', 'change.system',
+and 'change.clock' indicate the change in the corresponding fields since
+the last call to 'cputime()'.  The function
 void write(file file=stdout, string s="", cputime c,
            string format=cputimeformat, suffix suffix=none); 
 displays the incremental user cputime followed by "u", the incremental
@@ -4079,18 +4120,18 @@
 
 'new T[] {list}'
      returns a new array of type 'T[]' initialized with 'list' (a comma
-     delimited list of elements).
+     delimited list of elements);
 
 'new T[n]'
      returns a new array of 'n' elements of type 'T[]'.  These 'n' array
      elements are not initialized unless they are arrays themselves (in
-     which case they are each initialized to empty arrays).
+     which case they are each initialized to empty arrays);
 
 'T[] array(int n, T value, int depth=intMax)'
      returns an array consisting of 'n' copies of 'value'.  If 'value'
      is itself an array, a deep copy of 'value' is made for each entry.
      If 'depth' is specified, this deep copying only recurses to the
-     specified number of levels.
+     specified number of levels;
 
 'int[] sequence(int n)'
      if 'n >= 1' returns the array '{0,1,...,n-1}' (otherwise returns a
@@ -4108,8 +4149,13 @@
 'T[] map(T f(T), T[] a)'
      returns the array obtained by applying the function 'f' to each
      element of the array 'a'.  This is equivalent to 'sequence(new
-     T(int i) {return f(a[i]);},a.length)'.
+     T(int i) {return f(a[i]);},a.length)';
 
+'T2[] map(T2 f(T1), T1[] a)'
+     constructed by calling 'mapArray("T1","T2")', returns the array
+     obtained by applying the function 'f' to each element of the array
+     'a';
+
 'int[] reverse(int n)'
      if 'n >= 1' returns the array '{n-1,n-2,...,0}' (otherwise returns
      a null array);
@@ -4117,7 +4163,7 @@
 'int[] complement(int[] a, int n)'
      returns the complement of the integer array 'a' in
      '{0,1,2,...,n-1}', so that 'b[complement(a,b.length)]' yields the
-     complement of 'b[a]'.
+     complement of 'b[a]';
 
 'real[] uniform(real a, real b, int n)'
      if 'n >= 1' returns a uniform partition of '[a,b]' into 'n'
@@ -4129,13 +4175,13 @@
      the end of the array for the '-n'th value;
 
 'int[] findall(bool[] a)'
-     returns the indices of all 'true' values in the boolean array 'a'.
+     returns the indices of all 'true' values in the boolean array 'a';
 
 'int search(T[] a, T key)'
      For built-in ordered types 'T', searches a sorted array 'a' of 'n'
      elements for k, returning the index 'i' if 'a[i] <= key < a[i+1]',
      '-1' if 'key' is less than all elements of 'a', or 'n-1' if 'key'
-     is greater than or equal to the last element of 'a'.
+     is greater than or equal to the last element of 'a';
 
 'int search(T[] a, T key, bool less(T i, T j))'
      searches an array 'a' sorted in ascending order such that element
@@ -4175,44 +4221,44 @@
      'i' precedes element 'j' if 'less(i,j)' is true, subject to (if
      'stable' is 'true') the stability constraint that the original
      order of elements 'i' and 'j' is preserved if 'less(i,j)' and
-     'less(j,i)' are both 'false'.
+     'less(j,i)' are both 'false';
 
 'T[][] transpose(T[][] a)'
-     returns the transpose of 'a'.
+     returns the transpose of 'a';
 
 'T[][][] transpose(T[][][] a, int[] perm)'
      returns the 3D transpose of 'a' obtained by applying the
      permutation 'perm' of 'new int[]{0,1,2}' to the indices of each
-     entry.
+     entry;
 
 'T sum(T[] a)'
-     For arithmetic types 'T', returns the sum of 'a'.  In the case

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list.